Logic chapter finished

This commit is contained in:
Boris Marinov 2021-08-17 23:10:45 +03:00
parent c1f34b9ead
commit 15f3448874
20 changed files with 3977 additions and 897 deletions

View File

@ -27,3 +27,8 @@ The main reason I am interested in category theory is that it allows us to forma
It is in these situations that people often resort to diagrams to explain their thoughts. Diagrams are ubiquitous in science and mathematics because they are an understandable way to communicate a formal concept clearly. Category theory formalises the concept of a diagram and their components - arrows and objects and creates a language for presenting all kinds of ideas.
In this book, we will visit those formalisms and along the way, we would see all other kinds of mathematical objects, viewed under the prism of categories.
Acknowledgements
===
I like to thank

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 10 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 30 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -1 +1,129 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 595.3 206"><switch><g><g stroke-width="6" stroke-miterlimit="10"><circle opacity=".14" stroke="#000" cx="189.3" cy="112.7" r="84.4"/><circle fill="#CAEBFC" stroke="#808285" cx="181" cy="107.3" r="84.4"/><circle opacity=".14" stroke="#000" cx="388.9" cy="118.4" r="55.1"/><circle fill="#F8F7CB" stroke="#808285" cx="383.5" cy="114.9" r="55.1"/><circle fill="#8967AC" stroke="#651C5F" cx="382.8" cy="89.3" r="13.5"/><circle fill="#F58235" stroke="#E76524" cx="389" cy="139.3" r="13.5"/><circle fill="#D71920" stroke="#BE1E2D" cx="227.1" cy="126.3" r="13.5"/><circle fill="#39BCED" stroke="#008DD2" cx="165" cy="57.3" r="13.5"/><circle fill="#54B948" stroke="#00873A" cx="217.5" cy="73" r="13.5"/></g></g></switch></svg>
<?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 206"
version="1.1"
id="svg7566"
sodipodi:docname="product_parts.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata7572">
<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="defs7570" />
<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="namedview7568"
showgrid="false"
inkscape:zoom="3.317655"
inkscape:cx="297.64999"
inkscape:cy="103"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g7560" />
<switch
id="switch7564">
<g
id="g7562">
<g
stroke-width="6"
stroke-miterlimit="10"
id="g7560">
<circle
opacity=".14"
stroke="#000"
cx="189.3"
cy="112.7"
r="84.4"
id="circle7542"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<circle
fill="#CAEBFC"
stroke="#808285"
cx="181"
cy="107.3"
r="84.4"
id="circle7544"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<circle
opacity=".14"
stroke="#000"
cx="388.9"
cy="118.4"
r="55.1"
id="circle7546"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<circle
fill="#F8F7CB"
stroke="#808285"
cx="383.5"
cy="114.9"
r="55.1"
id="circle7548"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<circle
fill="#8967AC"
stroke="#651C5F"
cx="382.8"
cy="89.3"
r="13.5"
id="circle7550"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<circle
fill="#F58235"
stroke="#E76524"
cx="389"
cy="139.3"
r="13.5"
id="circle7552"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<circle
fill="#39BCED"
stroke="#008DD2"
cx="165"
cy="57.3"
r="13.5"
id="circle7556"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<circle
fill="#54B948"
stroke="#00873A"
cx="217.5"
cy="73"
r="13.5"
id="circle7558"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<circle
style="fill:#f58235;stroke:#e76524;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none"
cx="227.26897"
cy="129.13847"
r="13.5"
id="circle7552-3" />
</g>
</g>
</switch>
</svg>

Before

Width:  |  Height:  |  Size: 770 B

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -137,20 +137,20 @@ The chains in an order don't have to be completely disconnected from each other
The above set is not linearly-ordered - although the connection establishes the relationship between **D** and **G** (**D ≤ G**) and although the relationship between **F** and **G** is known as well (**F ≤ G**), the relationship between **D** and **F** is *not* known. Any element can be bigger than the other one.
Maximum and minimum
Greatest and least
---
Although posets don't give us definitive answer to who is better than who, some of them still can give us an answer to the more important question (in sports, as well as in other domains), namely *who is number one*, who is the champion, the player who is better than anyone else, or more generally the element that is bigger than any other element.
We call such elements the *maximum element* and some (not all) partial orders do have such element - in our last diagram **M** is the maximum element, in this diagram, the green element is the biggest one.
We call such elements the *greatest element* and some (not all) partial orders do have such element - in our last diagram **M** is the greatest element, in this diagram, the green element is the biggest one.
![Join diagram with one more element](join_additional_element.svg)
Sometimes we have more than one elements that are bigger than all other elements, in this case none of them are maximum.
Sometimes we have more than one elements that are bigger than all other elements, in this case none of them is the greatest.
![A diagram with no maximum element](non_maximal_element.svg)
![A diagram with no greatest element](non_maximal_element.svg)
In addition to the maximum element, a partial order may also have a minimum (smallest) element, which is defined in the same way.
In addition to the greatest element, a partial order may also have a least (smallest) element, which is defined in the same way.
Joins
---
@ -165,9 +165,9 @@ There can be multiple elements bigger than **A** and **B** (all elements that ar
Given any two elements in which one is bigger than the other (e.g. **A ≤ B**), the join is the bigger element (in this case **B**).
In a totally ordered set, the *join* of any subset of elements is just their the *maximum* element.
In a totally ordered set, the *join* of any subset of elements is just their the *greatest* element.
Like with the maximum element, if two elements have several upper bounds that are equally big, then none of them is a *join* (a join must be unique).
Like with the greatest element, if two elements have several upper bounds that are equally big, then none of them is a *join* (a join must be unique).
![A non-join diagram](non_join.svg)
@ -287,7 +287,7 @@ Notice that when drawing our color-mixing lattice, we added the black ball at th
Bounded lattices
---
Our color-mixing lattice, has a *maximum element* (the black ball) and a *minimum element* (the white one). Lattices that have a minimum and maximum elements are called *bounded lattices*. It isn't hard to see that all finite lattices are also bounded.
Our color-mixing lattice, has a *greatest element* (the black ball) and a *least element* (the white one). Lattices that have a least and greatest elements are called *bounded lattices*. It isn't hard to see that all finite lattices are also bounded.
**Task:** Prove that all finite lattices are bounded.
@ -344,6 +344,12 @@ All of that structure arises naturally from the simple law of transitivity.
![Transitivity](transitivity.svg)
<!--
TODO: add the example of preorders as models for routes from/to a given set of destination.
Also the state machine example.
-->
Orders as categories
===
@ -369,7 +375,7 @@ That is in the contrast with the category of sets where there are potentially in
![Orders compared to other categories](order_category.svg)
Note that although two objects in an order might be directly connected by just one arrow, they might still be be indirectly connected by more than one arrow. So when we define an order in categorical way it's crucial to say that these ways are equivalent i.e. that all diagrams that show orders commute.
Note that although two objects in an order might be directly connected by just one arrow, they might still be be indirectly connected by more than one arrow. So when we define an order in categorical way it's crucial to specify that *these ways are equivalent* i.e. that all diagrams that show orders commute.
Products and sums
---
@ -387,17 +393,17 @@ But wait, wasn't there something else that corresponded to set inclusion - oh ye
In category theory, an object **G** is the coproduct of objects **Y** and **B** if the following two conditions are met:
1. We have a morphism from any of the elements of the coproduct to the coproduct, so **Y → G** and **B → G**.
2. For any other object **P** that also has those morphisms, so for any **P** such that **P ≤ G** and **P ≤ B**, we would have morphism **G → P**.
2. For any other object **P** that also has those morphisms (so **Y → P** and **B → P**) we would have morphism **G → P**.
![Joins as coproduct](coproduct_morphisms.svg)
In the realm of orders, we say that **G** is the *join* of objects **Y** and **B** if:
1. It is bigger than both of these objects, so **Y ≤ G** and **P ≤ G**.
1. It is bigger than both of these objects, so **Y ≤ G** and **B ≤ G**.
2. It is smaller than any other object that is bigger than them, so for any other object **P** such that **P ≤ G** and **P ≤ B** then we should also have **G ≤ P**.
![Joins as coproduct](coproduct_join_morphisms.svg)
We can see that the two definitions (and the diagrams) are the same. So, speaking in category theoretic terms, we can say that the *categorical coproduct* in the category of orders is the *join* operation.
We can see that the two definitions and their diagrams are the same. So, speaking in category theoretic terms, we can say that the *categorical coproduct* in the category of orders is the *join* operation.

View File

@ -11,7 +11,7 @@
version="1.1"
id="svg3397"
sodipodi:docname="coproduct_join_morphisms.svg"
inkscape:version="1.0.2 (e86c8708, 2021-01-15)"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
width="595.29999"
height="340">
<metadata
@ -22,7 +22,7 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@ -38,32 +38,32 @@
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1395"
inkscape:window-height="1376"
id="namedview3399"
showgrid="false"
inkscape:zoom="2.3349572"
inkscape:cx="298.6579"
inkscape:cx="305.082"
inkscape:cy="144.42193"
inkscape:window-x="0"
inkscape:window-y="23"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg3397"
inkscape:document-rotation="0"
showguides="false" />
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.389;stroke-miterlimit:10"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-4-3"
transform="matrix(0.15386835,-0.23450343,0.33825711,0.19824939,143.62697,235.32918)"
inkscape:transform-center-x="20.424576"
inkscape:transform-center-y="27.387938">
transform="matrix(0.17310238,-0.26381709,0.38054031,0.22303118,134.90566,261.43144)"
inkscape:transform-center-x="22.977707"
inkscape:transform-center-y="30.811512">
<path
style="stroke-width:35.526"
style="stroke-width:35.52600098"
inkscape:connector-curvature="0"
id="path1478-7-9-0-6"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z" />
<path
style="fill:none;stroke-width:10.649;paint-order:markers fill stroke"
style="fill:none;stroke-width:10.64900017;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-31-0"
d="M 96.459167,77.578189 C 147.54958,60.644507 303.77113,69.059138 317.498,86.173"
@ -72,36 +72,34 @@
</g>
<g
id="g5761"
transform="translate(-20.367652,180.30616)">
transform="matrix(1.1250031,0,0,1.1250031,-49.588801,199.53037)">
<circle
cx="250.16379"
cy="90.603348"
r="24.6"
id="circle3365"
style="opacity:0.13;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
style="opacity:0.12999998;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
fill="#fce600"
stroke="#ffdd00"
cx="245.36378"
cy="84.403351"
r="24.6"
id="circle3379"
style="stroke-width:6;stroke-miterlimit:10" />
style="fill:#fce600;stroke:#ffdd00;stroke-width:6;stroke-miterlimit:10" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.389;stroke-miterlimit:10"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-4-3-4"
transform="matrix(-0.15386835,-0.23450343,-0.33825711,0.19824939,439.00638,235.2839)"
inkscape:transform-center-x="-20.424578"
inkscape:transform-center-y="27.387938">
transform="matrix(-0.17310238,-0.26381709,-0.38054031,0.22303118,467.20841,261.3805)"
inkscape:transform-center-x="-22.977707"
inkscape:transform-center-y="30.811512">
<path
style="stroke-width:35.526"
style="stroke-width:35.52600098"
inkscape:connector-curvature="0"
id="path1478-7-9-0-6-6"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z" />
<path
style="fill:none;stroke-width:10.649;paint-order:markers fill stroke"
style="fill:none;stroke-width:10.64900017;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-31-0-4"
d="M 96.459167,77.578189 C 147.54958,60.644507 303.77113,69.059138 317.498,86.173"
@ -110,170 +108,165 @@
</g>
<g
id="g4359"
transform="translate(91.090449,197.29667)">
transform="matrix(1.1250031,0,0,1.1250031,75.801907,218.64475)">
<circle
cx="271.79999"
cy="72.099998"
r="24.6"
id="circle3367"
style="opacity:0.13;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
style="opacity:0.12999998;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
fill="#39bced"
stroke="#008dd2"
cx="264.84811"
cy="65.602043"
r="24.6"
id="circle3381"
style="stroke-width:6;stroke-miterlimit:10" />
style="fill:#39bced;stroke:#008dd2;stroke-width:6;stroke-miterlimit:10" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.389;stroke-miterlimit:10"
id="g1482-7-0-4-3-2"
transform="matrix(0.15386835,-0.23450343,0.33825711,0.19824939,212.84237,154.34858)"
inkscape:transform-center-x="20.424576"
inkscape:transform-center-y="27.387938">
<path
style="stroke-width:35.526"
inkscape:connector-curvature="0"
id="path1478-7-9-0-6-1"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z" />
<path
style="fill:none;stroke-width:10.649;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-31-0-8"
d="M 96.459167,77.578189 C 147.54958,60.644507 303.77113,69.059138 317.498,86.173"
sodipodi:nodetypes="cc"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)" />
</g>
<g
id="g5765-7-0"
transform="translate(60.56658,-50.095425)"
style="fill:#2b1100;stroke:#501616">
<g
id="g2634-4"
transform="translate(18.844028,-5.5675538)"
style="fill:#2b1100;stroke:#501616">
<circle
cx="351.04132"
cy="94.997795"
r="24.6"
id="circle3375-5-4"
style="opacity:0.13;fill:#2b1100;stroke:#501616;stroke-width:6;stroke-miterlimit:10" />
<circle
fill="#54b948"
stroke="#00873a"
cx="346.11038"
cy="89.982834"
r="24.6"
id="circle3389-0-5"
style="fill:#2b1100;stroke:#501616;stroke-width:6;stroke-miterlimit:10" />
</g>
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.389;stroke-miterlimit:10"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-4-3-2-9"
transform="matrix(0.15386835,-0.23450343,0.33825711,0.19824939,278.0813,85.687633)"
inkscape:transform-center-x="20.424576"
inkscape:transform-center-y="27.387938">
transform="matrix(0.17310238,-0.26381709,0.38054031,0.22303118,286.1672,93.084237)"
inkscape:transform-center-x="22.977705"
inkscape:transform-center-y="30.811514">
<path
style="stroke-width:35.526"
style="stroke-width:35.52600098"
inkscape:connector-curvature="0"
id="path1478-7-9-0-6-1-7"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z" />
<path
style="fill:none;stroke-width:10.649;paint-order:markers fill stroke"
style="fill:none;stroke-width:10.64900017;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-31-0-8-5"
d="M 96.459167,77.578189 C 147.54958,60.644507 303.77113,69.059138 317.498,86.173"
d="M 195.10258,57.339207 C 219.94017,56.5908 303.77113,69.059138 317.498,86.173"
sodipodi:nodetypes="cc"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)" />
</g>
<g
id="g5765-7"
transform="translate(-4.8864791,18.137235)"
style="fill:#a02c2c;stroke:#501616">
id="g4994"
style="opacity:0.644"
transform="matrix(1.1250031,0,0,1.1250031,-49.175192,-3.314616)">
<g
id="g2634"
transform="translate(18.844028,-5.5675538)"
style="fill:#a02c2c;stroke:#501616">
<circle
cx="351.04132"
cy="94.997795"
r="24.6"
id="circle3375-5"
style="opacity:0.13;fill:#a02c2c;stroke:#501616;stroke-width:6;stroke-miterlimit:10" />
<circle
fill="#54b948"
stroke="#00873a"
cx="346.11038"
cy="89.982834"
r="24.6"
id="circle3389-0"
style="fill:#a02c2c;stroke:#501616;stroke-width:6;stroke-miterlimit:10" />
inkscape:transform-center-y="27.387938"
inkscape:transform-center-x="20.424576"
transform="matrix(0.15386835,-0.23450343,0.33825711,0.19824939,232.84237,154.34858)"
id="g1482-7-0-4-3-2"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10">
<path
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
id="path1478-7-9-0-6-1"
inkscape:connector-curvature="0"
style="stroke-width:35.52600098" />
<path
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)"
sodipodi:nodetypes="cc"
d="M 96.459167,77.578189 C 147.54958,60.644507 303.77113,69.059138 317.498,86.173"
id="path1480-1-3-31-0-8"
inkscape:connector-curvature="0"
style="fill:none;stroke-width:10.64900017;paint-order:markers fill stroke" />
</g>
</g>
<g
id="g5765-7-5"
transform="translate(-78.909171,14.000041)"
style="fill:#784421;stroke:#502d16">
<g
id="g2634-6"
transform="translate(18.844028,-5.5675538)"
style="fill:#784421;stroke:#502d16">
<circle
cx="351.04132"
cy="94.997795"
r="24.6"
id="circle3375-5-3"
style="opacity:0.13;fill:#784421;stroke:#502d16;stroke-width:6;stroke-miterlimit:10" />
<circle
fill="#54b948"
stroke="#00873a"
cx="346.11038"
cy="89.982834"
r="24.6"
id="circle3389-0-2"
style="fill:#784421;stroke:#502d16;stroke-width:6;stroke-miterlimit:10" />
style="fill:#2b1100;stroke:#501616"
transform="translate(80.56658,-50.095425)"
id="g5765-7-0">
<g
style="fill:#2b1100;stroke:#501616"
transform="translate(18.844028,-5.5675538)"
id="g2634-4">
<circle
style="opacity:0.12999998;fill:#2b1100;stroke:#501616;stroke-width:6;stroke-miterlimit:10"
id="circle3375-5-4"
r="24.6"
cy="94.997795"
cx="351.04132" />
<circle
style="fill:#2b1100;stroke:#501616;stroke-width:6;stroke-miterlimit:10"
id="circle3389-0-5"
r="24.6"
cy="89.982834"
cx="346.11038" />
</g>
</g>
<g
style="fill:#a02c2c;stroke:#501616"
transform="translate(15.113521,18.137235)"
id="g5765-7">
<g
style="fill:#a02c2c;stroke:#501616"
transform="translate(18.844028,-5.5675538)"
id="g2634">
<circle
style="opacity:0.12999998;fill:#a02c2c;stroke:#501616;stroke-width:6;stroke-miterlimit:10"
id="circle3375-5"
r="24.6"
cy="94.997795"
cx="351.04132" />
<circle
style="fill:#a02c2c;stroke:#501616;stroke-width:6;stroke-miterlimit:10"
id="circle3389-0"
r="24.6"
cy="89.982834"
cx="346.11038" />
</g>
</g>
<g
style="fill:#784421;stroke:#502d16"
transform="translate(-58.909171,14.000041)"
id="g5765-7-5">
<g
style="fill:#784421;stroke:#502d16"
transform="translate(18.844028,-5.5675538)"
id="g2634-6">
<circle
style="opacity:0.12999998;fill:#784421;stroke:#502d16;stroke-width:6;stroke-miterlimit:10"
id="circle3375-5-3"
r="24.6"
cy="94.997795"
cx="351.04132" />
<circle
style="fill:#784421;stroke:#502d16;stroke-width:6;stroke-miterlimit:10"
id="circle3389-0-2"
r="24.6"
cy="89.982834"
cx="346.11038" />
</g>
</g>
<g
inkscape:transform-center-y="33.94524"
inkscape:transform-center-x="2.4206212"
transform="matrix(0.04845633,-0.2762595,-0.38226058,-0.08716387,380.44237,237.30231)"
id="g1482-7-0-4-3-2-6"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10">
<path
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
id="path1478-7-9-0-6-1-8"
inkscape:connector-curvature="0"
style="stroke-width:35.52600098" />
<path
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)"
sodipodi:nodetypes="cc"
d="M 96.459167,77.578189 C 147.54958,60.644507 303.77113,69.059138 317.498,86.173"
id="path1480-1-3-31-0-8-9"
inkscape:connector-curvature="0"
style="fill:none;stroke-width:10.64900017;paint-order:markers fill stroke" />
</g>
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.389;stroke-miterlimit:10"
id="g1482-7-0-4-3-2-6"
transform="matrix(0.04845633,-0.2762595,-0.38226058,-0.08716387,360.44237,237.30231)"
inkscape:transform-center-x="2.4206212"
inkscape:transform-center-y="33.94524">
<path
style="stroke-width:35.526"
inkscape:connector-curvature="0"
id="path1478-7-9-0-6-1-8"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z" />
<path
style="fill:none;stroke-width:10.649;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-31-0-8-9"
d="M 96.459167,77.578189 C 147.54958,60.644507 303.77113,69.059138 317.498,86.173"
sodipodi:nodetypes="cc"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)" />
</g>
<g
id="g5765"
transform="translate(-52.298767,95.8111)">
transform="matrix(1.1250031,0,0,1.1250031,-85.511405,104.47317)">
<circle
cx="351.04132"
cy="94.997795"
r="24.6"
id="circle3375"
style="opacity:0.13;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
style="opacity:0.12999998;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
fill="#54b948"
stroke="#00873a"
cx="343.96902"
cy="86.556648"
r="24.6"
id="circle3389"
style="stroke-width:6;stroke-miterlimit:10" />
style="fill:#54b948;stroke:#00873a;stroke-width:6;stroke-miterlimit:10" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -6,53 +6,41 @@ title: Logic
Logic
===
Now let's talk about one more *seemingly* unrelated structure, just so we can "surprise" ourselves that it is a category (actually, there will be another surprise at the end of the chapter in addition to logic being a category, so don't fall asleep). Also, this time I will not merely transport you to a different branch of mathematics, but an entirely different discipline, namely *logic*.
This discipline may seem to you as detached from what we have been talking about as it possibly can, but it is actually very close.
Now let's talk about one more *seemingly* unrelated structure, just so we can "surprise" ourselves at the end (this time there will be another surprise in addition to logic being a category, so don't fall asleep). Also, in this chapter I will not merely transport you to a different branch of mathematics, but an entirely different discipline - *logic*.
What is logic
===
Logic is the science of the *possible*. As such, it is at the root of all other sciences, all of which are sciences of the *actual*, i.e. of that which really exists. For example, if the laws of physics show how particles behave in our universe (or multiverse), we might use logic to deduce how would they behave in any universe that is possible to exist (under a given set of postulates, whether real or made up). The key is that everything that is actual is also possible, and so all sciences are (or should be) be based on logic. But at the same time (and that's sometimes overlooked) nothing real is purely logical.
Logic is the science of the *possible*. As such, it is at the root of all other sciences, all of which are sciences of the *actual*, i.e. of that which really exists. For example, if science explains how our universe works, logic is the part of the description which is also applicable to any other universe that is possible to exist.
Proofs
---
It does this by studying the *rules* by which knowing one thing leads you to conclude or (*prove*) that some other thing is also true, regardless of the things's domain (e.g. scientific discipline) i.e. by only referring to it's form i.e. *in a formal way*.
Logic aims to study the *rules* by which knowing one thing leads you to conclude or (*prove*) that some other thing is also true, regardless of the things's domain (e.g. scientific discipline) i.e. by only referring to it's form.
On top of that, it (logic) tries to organize those rules in what are called *logical systems* (or formal systems as they are also called) - these are minimalistic collections of rules for manipulating proposition that have give you the maximum expressive ability.
What does "prove" mean in this context? Simple - when we are able, using the rules of a given logical system, to transform one set of *propositions* (AKA "things we know") **A** to another set of proposition **B** (AKA things that we *want* to know) we say that we have proven that **A → B** in that system that we are using.
Note that the word "prove" is a little misleading here, especially when used with the combination of the word *true* (which is misleading even by itself) as you don't prove anything using logic, you merely verify that it follows from a given set of propositions *AND* rules for manipulating those propositions (logical system). We use that word (prove) because verifying that something follows from a set of axioms and rules is the closest that we have to an actual proof.
On top of that, it (logic) tries to organize those rules in what are called *logical systems* (or *formal systems* as they are also called) - these are collections of rules for manipulating proposition that are *complete* in their description of those propositions (we will see what that means shortly).
Logic and mathematics
---
All of the concepts that we studied here are formal concepts, so we can say that we have been doing logic throughout this book. And we would be quite correct - every mathematical theory is logic plus some additional definitions added to it. For example, part of the reason why *set theory* is so popular as a theory for the foundations of mathematics is that set theory adds just a single primitive to the standard axioms of logic which we will see shortly - the binary relation that indicates *set membership*. So set theory is very close to logic. Exactly how they relate is probably outside the scope of that book. Category theory is close to logic too, but in a quite different way (this is not outside our scope, so we will examine the connection later.)
Seeing this description, we might think think that the subject of logic is quite similar to the subject of set theory and category theory, as we described it in the first chapter. Only, there instead of the word "formal" we used another similar word, namely "abstract" and instead of "formal system" we said "theory". This observation would be quite correct - today most people agree that every mathematical theory is actually logic plus some additional definitions added to it. For example, part of the reason why *set theory* is so popular as a theory for the foundations of mathematics is that set theory adds just a single primitive to the standard axioms of logic which we will see shortly - the binary relation that indicates *set membership*.
The elements of logic
===
So set theory is very close to logic, although exactly how they relate is probably outside the scope of this book. And category theory is close to logic too, but in a quite different way (we will examine the connection later.)
Primary propositions
---
A consequence of the above (logic being the science of the possible) is that in order to do anything at all in it, we should have an initial set of propositions (or "values" as Russell calls them) that we accept as true, or false. These are also called "premises", "primary propositions" or "atomic propositions" as Wittgenstein dubbed them.
A consequence of logic being the science of the possible is that in order to do anything at all in it, we should have an initial set of propositions that we accept as true, or false. These are also called "premises", "primary propositions" or "atomic propositions" as Wittgenstein dubbed them.
![Balls](balls.svg)
In the real-world usages, these propositions would be facts about the world, in most cases scientific facts. When in the context of logic itself, which as we said is the science of the possible, these propositions are abstracted away (i.e. we are not concerned about them directly) and so they can be represented with the colorful balls that you are familiar with.
In the context of logic itself, these propositions are abstracted away (i.e. we are not concerned about them directly) and so they can be represented with the colorful balls that you are familiar with.
Composing propositions
---
If we have two or more propositions that are somehow related to one another, we can combine them into one using a logical operator, like "and", "or" "follows" etc. The result would be a new proposition, not unlike the way in which monoid objects are combined into a new monoid object using the monoid operation.
Actually, some logical operations do form monoids, like the operation **and** with the proposition **true** serving as the identity element.
At the heart of logic, as in category theory is the concept of *composition* - if we have two or more propositions that are somehow related to one another, we can combine them into one using a logical operator, like "and", "or" "follows" etc. The result would be a new proposition, not unlike the way in which monoid objects are combined into a new monoid object using the monoid operation. And actually, some logical operations do form monoids, like the operation **and** with the proposition **true** serving as the identity element.
![Logical operations that form monoids](logic_monoid.svg)
However, unlike group theory, logic has not one but *many* logical operations and studies *the ways in which they relate*, for example, in logic we might be interested in the law of distributivity of the **and** and **or** operations and what it entails.
However, unlike monoids/groups, logics have not one but *many* logical operations and logic studies *the ways in which they relate*, for example, in logic we might be interested in the law of distributivity of the **and** and **or** operations and what it entails.
![The distributivity operation of "and" and "or"](logic_distributivity.svg)
@ -61,19 +49,18 @@ Important to note that **∧** is the symbol for **and** and **** is the symb
The equivalence of primary and composite propositions
---
Do note that in the leftmost proposition, the green ball is wrapped in a gray ball just to make the diagram prettier - propositions that are composed of several premises (symbolized by gray balls, containing some other balls) are not in any way different from "primary" propositions (single-color balls).
Important to stress that although in the leftmost proposition the green ball is wrapped in a gray ball to make the diagram prettier propositions that are composed of several premises (symbolized by gray balls, containing some other balls) are not in any way different from "primary" propositions (single-color balls).
As a result of this is that we can compose propositions with multiple levels of nesting (*recursively* as the computer science people say).
As a result, (again similar to what we saw with category theory) we can compose propositions with multiple levels of nesting (*recursively* as the computer science people say.)
![Balls as propositions](balls_propositions.svg)
Modus ponens
---
As an example of a proposition that contains multiple levels of nesting (and a great introduction of the subject in its own right), consider one of the oldest (it was
alredy known by Stoics at 3rd century B.C.) and most famous propositions ever, namely *modus ponens*.
As an example of a proposition that contains multiple levels of nesting (and a great introduction of the subject in its own right), consider one of the oldest (it was alredy known by Stoics at 3rd century B.C.) and most famous propositions ever, namely the *modus ponens*.
Modus ponens is a proposition that states that if **A** is true and if also **A → B** is true (if **A** implies **B**), then **B** is true as well. For example, if we know that "Socrates is a human" and that "Being human implies being mortal", we also know that "Socrates is mortal".
Modus ponens is a proposition that states that if **A** is true and if also **A → B** is true (that is, if **A** implies **B**), then **B** is true as well. For example, if we know that "Socrates is a human" and that "humans are mortal" (or "being human implies being mortal"), we also know that "Socrates is mortal".
![Modus ponens](modus_ponens.svg)
@ -84,11 +71,13 @@ Going one more level down, we notice that the **C** propositions is itself compo
Tautologies
---
Because the content of our propositions is abstracted away, we often cannot tell whether a given proposition is true or false. However, with propositions such as *modus ponens* we can: modus ponens is *always true*, regardless of whether the propositions which form it are true. If we want to be fancy, we can also say that it is *true in all models of the system* (a model being a set of real-world premises are taken to be signified by our propositions). For example, our previous example would not stop being true if we substitute "Socrates" with any other name, nor if we substitute "mortal" for any other quality that humans possess.
Because the content of propositions in logic is abstracted away, we often cannot tell whether a given proposition is true or false. However, with propositions such as *modus ponens* we can: modus ponens is *always true*, regardless of whether the propositions which form it are true. If we want to be fancy, we can also say that it is *true in all models of the system* (a model being a set of real-world premises are taken to be signified by our propositions).
For example, our previous example would not stop being true if we substitute "Socrates" with any other name, nor if we substitute "mortal" for any other quality that humans possess.
![Variation of modus ponens](modus_ponens_variations.svg)
Propositions that are always true are called *tautologies*. And their more-famous false counterparts are the *contradictions* (you can turn each tautology into contradiction by adding a "not").
Propositions that are always true are called *tautologies*. And their more-famous counterparts that are always false are the *contradictions*. You can turn each tautology into contradiction or the other way around by adding a "not".
The simplest tautology, is the one which states that a proposition implies itself (e.g. "All bachelors are unmarried"). It may remind you of something.
@ -103,12 +92,12 @@ We will learn how to determine which propositions are a tautologies, but first l
Logical systems
===
Tautologies are useful because they are the basis of *axiom schemas* or *rules of inference* (which is almost the same thing): they can serve as starting point from which we can generate other true logical statements by means of substitution. And axiom schemas/rules of inference form logical systems, but let's not get ahead of ourselves.
Tautologies are useful because they are the basis of *axiom schemas* or *rules of inference* (which is almost the same thing). And *axiom schemas* or *rules of inference* serve as starting point from which we can generate other true logical statements by means of substitution.
Axiom schemas
---
Realizing that the colors of the balls in modus ponens are superficial, we may want to represent the general structure that all of its variations have.
Realizing that the colors of the balls in modus ponens are superficial, we may want to represent the general structure of modus ponnes that all of its variations have.
![Modus ponens](modus_ponens_schema.svg)
@ -118,53 +107,52 @@ Note that the propositions that we plug into the schema don't have to be primary
![Using modus ponens for rule of inference](modus_ponens_composite.svg)
Rules of inference
---
Most axiom schemas can be easily applied as rules of inference i.e. as procedures for declaring propositions that follow from true propositions as also true e.g. in the case above, we can use modus ponens as a rule of inference to proves that **a or b** is true.
Rules of inference are procedures for declaring that propositions that follow from true propositions as also true. Axiom schemas can be easily applied as rules of inference (and the other way around) e.g. in the case above, we can use modus ponens as a rule of inference to proves that **a or b** is true.
Completeness of logical systems
---
OK, we started talking about logical systems again, so let's explain what they are: Knowing that we can use axiom schemas/rules of inference to generate new propositions, we might ask whether it is possible to have a small collection of such schemas/rules that is curated in such a way that it enables us to generating *all* other tautologies. You would be happy (although a little annoyed, I imagine) to learn that there exist not only one, many such collections. And yes, collections such as the one above are what we call *logical systems*.
Knowing that we can use axiom schemas/rules of inference to generate new propositions, we might ask whether it is possible to create a small collection of such schemas/rules that is curated in such a way that it enables us to generating *all* other propositions. You would be happy (although a little annoyed, I imagine) to learn that there exist not only one, many such collections. And yes, collections such as the one above are what we call *logical systems* (technically, they should be called *complete* logical systems and a collections that are not capable of generating all other propositions would be *incomplete logical systems*, but who has time for incomplete logical systems?)
For example, a complete logical system is the collection of the following five axiom schemes **in addition to the inference rule modus ponens** (These are axiom schemes, even though we use colors).
Here is one such collection, which consists of the following five axiom schemes **in addition to the inference rule modus ponens** (These are axiom schemes, even though we use colors).
![A minimal collection of Hilbert axioms](min_hilbert.svg)
Technically they should be called *complete* logical systems and a collections that are not capable of generating all other propositions would be *incomplete logical systems*, but who has time for incomplete logical systems?
Proving that this and other similar logical systems can really generate all other propositions are complete is due to Godel and is known as "Godel's completeness theorem".
Proving that this and other similar logical systems are complete is due to Godel and is known as "Godel's completeness theorem".
Conclusion
---
We now have an idea about how do some of the main logical constructs (axioms, rules of inference) work. But in order to prove that they are true, and to understand *what they are*, we need to do so through a specific *interpretation* of those constructs. We will now look into two interpretations - one very old and the other, relatively recent. This would be a slight detour from our usual subject matter of points and arrows, but it would be worth it. So let's start.
Classical logic
Classical logic. The truth-functional interpretation
===
We now have an idea about how do some of the main logical constructs (axioms, rules of inference) work. But in order to prove that they are really true, and to understand *what they are*, we need to go deeper. And thus we are reaching the level of depth that is in the realm of philosophy.
> Beyond the world that we inhabit and perceive every day there exist the *world of forms* where all ideas and concepts that manifest themselves in the objects that we perceive reside e.g. beyond all the people that have ever lived, there lies the prototypical person, and we are people only insofar as we resemble that person, beyond all the things in the world that are strong, lies the ultimate concepts of strength, from which all of them borrow etc. And although, as mere mortals, we live in the world of appearances and cannot perceive the world of forms, we can, through philosophy, "recollect" with it and know some of its features.
The above is my summary of a worldview that is due to the Greek philosopher Plato and is sometimes called Plato's "theory of forms". Originally, the discipline of logic represents an effort to think and structure our thoughts in a way that they apply to this world of forms i.e. in a "formal" way. Today, this original paradigm of logic is known as "classical logic". Although, it all started with Plato, most of it is due to the 20th century mathematician David Hilbert.
The above is a summary of a worldview that is due to the Greek philosopher Plato and is sometimes called Plato's *theory of forms*. Originally, the discipline of logic represents an effort to think and structure our thoughts in a way that they apply to this world of forms i.e. in a "formal" way. Today, this original paradigm of logic is known as "classical logic". Although, it all started with Plato, most of it is due to the 20th century mathematician David Hilbert.
The existence of the world of forms implies that even if there are many things that we, people, don't know, at least *somewhere out there* there exists answer to every question. In logic, this translates to *the principle of bivalence* that states that *each proposition is either true or false*.
Truth-functional interpretation
===
The existence of the world of forms implies that even if there are many things that we, people, don't know, at least *somewhere out there* there exists answer to every question i.e. that ultimately *each proposition is either true or false* (this is known as *the principle of bivalence*). Due to it, propositions in classical logic can be aptly expressed as functions which output boolean values.
Due to it, propositions in classical logic can be aptly expressed using set theory as functions that return a value from the boolean set (so either true or false).
![The set of boolean values](boolean_set.svg)
We can view *primary propositions* as simple functions that return a boolean value and don't take any arguments.
We can view *logical operators* as functions that take a bunch of boolean values and return another boolean value.
We can view *logical operators* as functions that take a one or a pair of boolean values and return another boolean value.
*Composite propositions* are, in this case, just the results of the invocation of these functions.
Let's review all logical operators in this context.
The *negation* operation
---
Let's begin with the negation operation. Negation is a unary operation, which means that it is a function that takes just *one* argument.
Let's begin with the negation operation. Negation is a unary operation, which means that it is a function that takes just *one* argument of type boolean and (like all other logical operators) returns a value of type boolean.
![negation](negation.svg)
@ -172,19 +160,22 @@ The same function can also be expressed in a slightly less-fancy way by this tab
| p | ¬p |
|---| --- |
| True | True |
| False | False |
| True | False |
| False | True |
Such tables are called *truth tables* and they are ubiquitous in classical logic, not only for defining operators, but for proving results as well.
Such tables are called *truth tables* and they are ubiquitous in classical logic not only for defining operators but for proving results as well.
Interlude: Proving results by truth tables
---
Having defined the negation operator, as we did above, we are in position to prove the first of the axioms of the logical system we saw, namely the *double negation elimination*. In natural language, this axiom is equivalent to the observation that saying "I am *not unable* to do X" is the same as saying "I am *able* to do it".
Having defined the negation operator, as we did above, we are in position to prove the first of the axioms of the logical system we saw, namely the *double negation elimination*. In natural language, this axiom is equivalent to the observation that saying "I am *not unable* to do X" is the same as saying "I am *able* to do it".
![Double negation elimination formula](double_negation_formula.svg)
If we view logical operators as functions, from and to the set of boolean values, than proving axioms involves composing several of those functions into one function and observing its outputs. More specifically, the proof of the formula above involves just composing the negation function with itself and verifying that it leaves us in the same place from which we started.
(despite its triviality, the double negation axiom is probably the most controversial result in logic, we will see why later.)
If we view logical operators as functions, from and to the set of boolean values, than proving axioms involves composing several of those functions into one function and observing its output. More specifically, the proof of the formula above involves just composing the negation function with itself and verifying that it leaves us in the same place from which we started.
![Double negation elimination](double_negation_proof.svg)
@ -192,19 +183,24 @@ If we want to be formal about it, we might say that applying negation two times
![The identity function for boolean values](boolean_identity.svg)
If we are tired of diagrams, we can represent the composition diagram above as table. This kinds of tables are called *truth-tables* and they are the usual more of representation used. Each proposition in classical logic can be proved by means of truth tables alone.
If we are tired of diagrams, we can represent the composition diagram above as table as well.
| p | ¬p | ¬¬p |
|---| --- | --- |
| True | False | True |
| False | True | False |
Despite its triviality, the double negation axiom is probably the most controversial result in logic, we will see why later.
Each proposition in classical logic can be proved with these diagrams (or by truth tables.)
The **and** and **or** operations
---
OK, you know what **and** means and I know what it means, but what about those annoying people that want everything to be formally specified (nudge, nudge). Well we already know how we can satisfy them: we just show them this truth-table (in which **∧** is the symbol for **and**.)
OK, you know what **and** means and I know what it means, but what about those annoying people that want everything to be formally specified (nudge, nudge). Well we already know how we can satisfy them - we just have to construct the boolean function that represents **and**. And is a *binary* operator so instead of a single value it accepts a *pair* of boolean values.
![And](and.svg)
And the equivalent truth-table (in which **∧** is the symbol for **and**.)
| p | q | p ∧ q |
|---| --- | --- |
@ -213,7 +209,7 @@ OK, you know what **and** means and I know what it means, but what about those a
| False | True | False |
| False | False | False |
We can do the same for **or**.
We can do the same for **or**, just the table.
| p | q | p q |
|---| --- | --- |
@ -222,7 +218,9 @@ We can do the same for **or**.
| False | True | True |
| False | False | False |
And we can use as axioms a pair of pretty obvious propositions that we can prove with just looking at the definition of the operations.
**Task:** Draw the diagram for **or**.
Using those we can also prove some axiom schemas we can later use:
- For **and**: **p ∧ q → p** and **p ∧ q → q** "If I am tired and hungry, this means that I am hungry".
- For **or**: **p → p q** and **p → p q** "If I have a pen this means that I am either have a pen or a ruler".
@ -230,7 +228,7 @@ And we can use as axioms a pair of pretty obvious propositions that we can prove
The *implies* operation
---
Let's now look into something less trivial: the "implies" operation, (also known as "entailment"). This operation binds two propositions in a way that the truth of the first one implies the truth of the second one. You can read **p → q** as "if **p** is true, then **q** must also be true. The entailment is a binary one, it is represented by a function from an ordered pair of boolean values, to a boolean value.
Let's now look into something less trivial: the *implies* operation, (also known as *entailment*). This operation binds two propositions in a way that the truth of the first one implies the truth of the second one. You can read **p → q** as "if **p** is true, then **q** must also be true. The entailment is a binary one, it is represented by a function from an ordered pair of boolean values, to a boolean value.
Here is the truth table.
@ -250,7 +248,16 @@ Now there are some aspects of this which are non obvious so let's go through eve
- The conclusion that *p* implies *q* is reached only if all four cases are satisfied, so this events means nothing by itself.
4. And finally if **p** is false but **q** is false too, then **p** still does imply **q** (just some other day).
It might help you to remember that **p → q** (**p** implies **q**) is true when **-p q** (either **p** is false or **q** is true.) Because the arguments that truth functions take have just two possible values (**true** and **false**).
It might help you to remember that **p → q** (**p** implies **q**) is true when **-p q** (either **p** is false or **q** is true.)
Proving results by axioms/rules of inference
---
Let's examine the above formula, stating that **p → q** is the same as **-p q**.
![Hilbert formula](hilbert_formula.svg)
We can prove this by using truth tables.
| p | q | p → q | ¬p | q | ¬p q |
|---| --- | --- | --- | --- | --- |
@ -259,54 +266,41 @@ It might help you to remember that **p → q** (**p** implies **q**) is true whe
| False | True | **True** | True | True | **True** |
| False | False | **True** | True | False | **True** |
Proving results by axioms/rules of inference
---
But we can also prove it using axioms and rules of inference (axiom schemas that are used at each step are specified at the right-hand side, the rule of inference is modus ponens.
Here is a way to derive the above result using axioms and rules of inference.
![Hilbert proof](hilbert_proof.svg)
p -p ( a -a)
q -p (p → q)
(-p q) -p ( a → a b)
(-p q) (-p q) ( a → a b)
-p q (a a → a)
Intuinistic logic
Intuinistic logic. The BHK interpretation
===
In the 20th century some people tried to really put the postulates of classical logic and set theory to the test by trying to base all mathematics on them. Doing so exposed some issues with classical logic, such as Godel's incompleteness theorem, which lead some of them to the conclusion that logic deals just with subjective ideas that exist only in our minds. This lead to the development of a new kind of logic, known as *intuinistic logic*.
Althought the classical truth-functional interpretation of logic is correct in its own right, it doesn't fit well the categorical framework that we have created: It is too "low-level", it relies on manipulating the values of the propositions, it doesn't in any way show the connection between **and** and **or** that we already saw. For these and other reasons (mostly other, probably), in the 20th century a whole new school of logic was founded, called *intuinistic logic*.
If *classical logic* is based on Plato's theory of forms, then intuinism began with a philosophical idea originating from Kant and Schopenhauer: the idea that the world as we experience it is largely predetermined of out perceptions of it. Or in the words of the mathematician who founded this school, L.E.J. Brouwer:
If classical logic is based on *set theory*, intuinistic logic is based on *category theory* and related formalisms.
If *classical logic* is based on Plato's theory of forms, then intuinism began with a philosophical idea originating from Kant and Schopenhauer: the idea that the world as we experience it is largely predetermined of out perceptions of it. As the mathematician L.E.J. Brouwer puts it.
> [...] logic is life in the human brain; it may accompany life outside the brain but it can never guide it by virtue of its own power.
But if logic deals with *constructing* rather than *discovering* then we have no basis to claim that each statements is necessarily *either true or false*. For example, there might be a statements that might not be provable (the twin-prime conjecture is often given as an example), simply because they fall outside of the domain of the system that we are working with, but that does not make them false. This wouldn't be such a big deal if the fact that each statement is either true or false weren't the *basis of truth-tables*, which is how all logical operators are defined.
There is a strong connection between category theory and the philosophy of Kant (from whom the term "category" was borrowed (although it has been used by Aristotle before that)), but I won't go into detail about it here.
The BHK Interpretation
===
Classical and intuinistic logic diverge from one another right from the start, when the philosophical foundations are concerned - because intuinistic logic deals with *constructing* a proof rather than *discovering* or unveiling a universal truth we have to be *off with bivalence*, that is, we have no basis to claim that each statements is necessarily *true or false*. For example, there might be a statements that might not be provable not because they are false, but simply because they fall outside of the domain of a given logical system (the twin-prime conjecture is often given as an example.)
So, due to the reasons outlined above, intuinistic logic is not bivalent, we cannot have all propositions reduced to a value of the boolean set (to true and false).
Due to the reasons outlined above, intuinistic logic is not bivalent, we cannot have all propositions reduced to true and false.
![The True/False dichotomy](true_false.svg)
But one thing that we still do have propositions that are "true" in the sense that a proof for them is given - the primary propositions.
So with some caveats (which we will see later) the bivalence of the existence or non-existence of a proof for a given proposition may be taken as similar to the proposition being true or false - there either is a proof of a given proposition or there isn't.
But one thing that we still do have are propositions that are "true" in the sense that a proof for them is given - the primary propositions. So with some caveats (which we will see later) we can think of the bivalence between true and false proposition might be thought out as similar to the bivalence between the existence or non-existence of a proof (there either is a proof of a given proposition or there isn't).
![The proved/unproved dichotomy](proved_unproved.svg)
This is known as the as the BrouwerHeytingKolmogorov (BHK) interpretations of intuinistic logic.
The original formulation of the BHK interpretation does not depend on any particular mathematical theory, but here we chose to illustrate it using the language of set theory.
The original formulation of the BHK interpretation does not depend on any particular mathematical theory. Here we illustrate it using the language of set theory (just so we can abandon it a little later).
The **and** and **or** operations
---
If the existence of a proof of a proposition is taken to mean that the proposition is true, then the definitions of **and** is rather simple - the proof of **A ∧ B** is just *a pair* containing a proof of **A**, and a proof of **B** e.g. *a set-theoretic product* of the two (see chapter 2). The principle is similar - if you can construct the pair of **A** and **B** i.e. if both proofs do exists, then **A ∧ B** is provable too.
As the existence of a proof of a proposition is taken to mean that the proposition is true, the definitions of **and** is rather simple - the proof of **A ∧ B** is just *a pair* containing a proof of **A**, and a proof of **B** e.g. *a set-theoretic product* of the two (see chapter 2). The principle is similar as with primary proposition - if the pair of proofs of **A** and **B** exist (i.e. if both proofs exist) then the proof of **A ∧ B** can be constructed.
![And in the BHK interpretation](bhk_and.svg)
@ -315,24 +309,26 @@ If the existence of a proof of a proposition is taken to mean that the propositi
The *implies* operation
---
In this case, saying that **A** implies **B** (**A → B**) would just mean that there exist a function which can convert a proof of **A** to a proof of **B**.
Saying that **A** implies **B** (**A → B**) would just mean that there exist a function which can convert a proof of **A** to a proof of **B**.
![Implies in the BHK interpretation](bhk_implies.svg)
And the *modus ponens* rule of inference is just the fact that if we have a proof of **A** we can call this function (**A → B**) to obtain a proof of **B**.
Note that in order for this to work, we we need to define the function itself in terms of sets i.e. we need to have a set representing **A → B** for each **A** and **B**. This is possible (using the concept of a *pair*) but we won't do it now.
(Note that in order for this to work, we also need to define the functions in terms of sets i.e. we need to have a set representing **A → B** for each **A** and **B**, which is possible, but we will not describe how here.)
The *negation* operation
---
So according to BHK interpretation saying that **A** is true, means that that we possess a proof of **A** - simple enough. But it's a bit harder to express the fact that **A** is false: it is not enough to say that we *don't have a proof* of **A** (the fact that don't have it, doesn't mean it doesn't exist). Instead, we must show that claiming that it is true *leads to contradiction*.
To express this, intuinistic logic defines the constant "false" (**⊥**) defined as the proof of a formula that does not have any proofs (also known as "absurdity" or "bottom value"). And this allows for us to label false propositions as ones that imply the bottom value. So in intuinistic logic **¬A** as just a shorthand for **A → ⊥**. In set theory, this constant can be expressed by the empty set.
To express this, intuinistic logic defines the constant **⊥** which plays the role of *False* (and is also known as "absurdity" or "bottom value"). **⊥** is defined as the proof of a formula that does not have any proofs. And the equivalent of false propositions are the ones that imply that the bottom value is provable (which is a contradiction). So **¬A** is **A → ⊥**.
In set theory, the **⊥** constant is expressed by the empty set.
![False in the BHK interpretation](bhk_false.svg)
And the observation that false propositions are connected to the bottom value is expressed by the fact that if a proposition is true, i.e. there exists a proof of it, there can be no function from it to the empty set.
And the observation that propositions that are connected to the bottom value are false is expressed by the fact that if a proposition is true, i.e. there exists a proof of it, there can be no function from it to the empty set.
![False in the BHK interpretation](bhk_false_function.svg)
@ -347,51 +343,61 @@ The only way for there to be such function is if the set of proof of the proposi
Classical VS Intuinistic logic
---
Although intuinistic logic seems to differ a lot from classical logic, it actually isn't - if we try to outline the schemas/rules of inference that correspond to the definition of the structures outlined above, we would see that they are virtually the same as the ones that define classical logic. With one exception - the of *double negation elimination* that we saw earlier, which is also known (in a slightly different form as the *law of excluded middle*.
Although intuinistic logic seems to differ a lot from classical logic, it actually doesn't - if we try to deduce the axiom schemas/rules of inference that correspond to the definition of the structures outlined above, we would see that they are virtually the same as the ones that define classical logic. With one exception concerning the *double negation elimination axiom* that we saw earlier, a version of which is known as *the law of excluded middle*.
![The formula of the principle of the excluded middle](excluded_middle_formula.svg)
This law is valid in classical logic and is true when we look at it in terms of truth tables, but there is no justification for it in intuinistic logic - a fact that spawned a heated debate between the inventor of classical logic David Hilbert and the inventor of intuinistic logic L.E.J. Brouwer, known as *the BrouwerHilbert controversy*.
This law is valid in classical logic and is true when we look at it in terms of truth tables, but there is no justification for it in the BHK interpretation - a fact that spawned a heated debate between the inventor of classical logic David Hilbert and the inventor of intuinistic logic L.E.J. Brouwer, known as *the BrouwerHilbert controversy*.
Logics as categories
===
Leaving the differences between intuinistic and classical logics aside, the BHK interpretation is interesting because it provides a bit of the higher-level view of logic, that we need in order to represent it in terms of category theory.
Leaving the differences between intuinistic and classical logics aside, the BHK interpretation is interesting because it provides that higher-level view of logic, that we need in order to represent it in terms of category theory.
This representation of logic, the one that does nor rely on formulas and propositions, but on objects and operations which obey is sometimes called an *algebraic* representation, *algebraic* being an umbrella term describing all structures that can be represented using category theory, like groups and orders
Such higher-level interpretations of logic are sometimes called an *algebraic* interpretations, *algebraic* being an umbrella term describing all structures that can be represented using category theory, like groups and orders.
The Curry-Howard correspondence
The Curry-Howard isomorphism
---
Programmers might find the definition of the BHK interpretation very similar to a definition of a programming language, and it indeed is - this similarity is known as the *Curry-Howard correspondence* - propositions are *types*, the **implies** operations are *functions*, **and** operations are composite types (objects) and **or** operations are *sum types* (which are not supported in most programming languages). Finally a proof of a given proposition is represented by a value of the corresponding type.
Programmers might find the definition of the BHK interpretation interesting for other reason - it is very similar to a definition of a programming language: propositions are *types*, the **implies** operations are *functions*, **and** operations are composite types (objects) and **or** operations are *sum types* (which are currently not supported in most programming languages, but that's a separate topic.) Finally a proof of a given proposition is represented by a value of the corresponding type.
![Logic as a programming language](logic_curry.svg)
**Task:** The Curry-Howard correspondence is also the basis of special types of programming languages called "proof assistants" which help you verify logical proofs. Install a proof assistant and try to see how it works (I recommend Mike Nahas's Coq Tutorial).
This similarity is known as the *Curry-Howard isomorphism*.
**Task:** The Curry-Howard isomorphism is also the basis of special types of programming languages called "proof assistants" which help you verify logical proofs. Install a proof assistant and try to see how it works (I recommend Mike Nahas's Coq Tutorial).
Cartesian closed categories
---
Having the Curry-Howard correspondence and knowing that programming languages can be described by category theory and this indeed is the case (this is why the Curry-Howard-*Lambek* correspondence attaching the name of the person who discovered the categorical side).
Knowing about the Curry-Howard isomorphism and knowing also that programming languages can be described by category theory may lead us to think that *category theory is part of this isomorphism as well*. And we would be quite correct, this is why it's sometimes called the Curry-Howard-*Lambek* isomorphism, Lambek being the person who discovered the the categorical side.
On one hand, it is not hard to see that logical systems, viewed through the set-theoretic lens of the BHK interpretation can be viewed as a categories.
Let's examine this isomorphism (without being too formal about it). As all other isomorphisms, it comes in two parts.
![Logic as a category](logic_category.svg)
The first part is finding a way to convert a logical system into a category - this would not be hard for us, as sets form a category and the flavour of the BHK interpretation that we saw is based on sets.
![Logic as a category](category_curry_logic.svg)
**Task:** See whether you can prove that logic propositions and entailments forms a category. What is missing?
Defining logic in a categorical language, however, is a more complex question.
The second part involves converting a category into a logical system - this is much harder, as in order to do it, we have to enumerate the criteria that a given category has to adhere to in order for it to be "logical".
![Logic as a category](logic_curry_category.svg)
In order to answer it, we have to enumerate the criteria that a given category has to adhere to in order for it to be "logical". These criteria have to guarantee that the category has objects that correspond to all valid logical propositions and no objects that correspond to invalid ones. We won't describe these categories directly (by the way, they are called *Cartesian closed* categories). Instead we would start with a similar but simpler structures that we already examined - orders.
These criteria have to guarantee that a category has objects that correspond to all valid logical propositions and no objects that correspond to invalid ones.
Categories that adhere to these criteria are called *cartesian closed categories*. We won't describe them here directly, but instead we would start with a similar but simpler structures that are instance of them and that we already examined - orders.
Logics as orders
---
Order theory captures all of the concepts that we saw, while providing some interesting insights on what logic is. This is why it is the usual default algebraic representation of simpler logics such as the ones we are introducing here.
We will now do something that is quite characteristic of category theory - examininig a concept in a more limited version of the theory, in order to make things simpler for ourselves.
If we assume that there is only one way to go from proposition **A**, to proposition **B** (or there are many ways, but they are equivalent), then logic is not only a category, but a *preorder* (which as we said is a category that has just one morphism between any two objects) in which the relationship "bigger than" is taken to mean "implies".
So we already saw that a logical system, along with the set of primary propositions forms a category.
![Logic as a preorder](logic_category.svg)
If we assume that there is only one way to go from proposition **A**, to proposition **B** (or there are many ways, but we are not interested in the difference between them), then logic is not only a category, but a *preorder* in which the relationship "bigger than" is taken to mean "implies".
![Logic as a preorder](logic_preorder.svg)
@ -403,35 +409,37 @@ And so it can be represented by a Hasse diagram, yey.
![Logic as an order](logic_hasse.svg)
Now back to the question we asked before: exactly which orders represent logic and what laws does an order have to obey so it is isomorphic to a logic? We will answer this question as we examine the main logical constructs again, this time in the context of logic.
Now let's examine the question that we asked before - exactly which ~~categories~~ orders represent logic and what laws does an order have to obey so it is isomorphic to a logic? We will attempt to answer this question as we examine the elements of logic again, this time in the context of orders.
The **and** and **or** operations
---
By now you probably realized that the **and** and **or** operations are the bread and butter of logic (although it's not clear which is which). In orders, these operations are represented by the **meet** and **join** operations, correspondingly.
By now you probably realized that the **and** and **or** operations are the bread and butter of logic (although it's not clear which is which). As we saw, in the BHK interpretation those were represented by set *products* and *sums*. And the equivalent constructs in the realm of order theory are *meets* and *joins* (in category-theorethic terms *products* and *coproducts*.)
In logic you can use the **and** and **or** operations for all propositions and here comes the first criteria for an order to be logical - it has to have **meet** and **join** operations for all elements. Incidentally we already know that such orders are called *lattices*.
Here comes the first criteria for an order to represent logic accurately - it has to have **meet** and **join** operations for all elements. Having two elements without a meet would mean that you would have a logical system where there are propositions for which you cannot say that one or the other is true. And this not how logic works, so our order has to have meets and joins for all elements. Incidentally we already know how such orders are called - they are called *lattices*.
One more important law concerning the **and** and **or** operations that is not always present in the **meet**-s and **join**-s concerns the connection between the two, i.e. way that the **and** and **or** operations distribute, over one another.
![The distributivity operation of "and" and "or"](logic_distributivity.svg)
Lattices that obey this law are called *distributive lattices*, so logical systems are represented by distributive lattices.
Lattices that obey this law are called *distributive lattices*.
In the previous chapter we said that *distributive lattices* are isomorphic to *inclusion orders* i.e. orders which contain all combinations of sets of a given number of elements and, circling back to the set-theoretic BHK interpretation, we see that the two theorems are really saying the same thing - the elements which participate in the inclusion are our prime propositions and are the the and the inclusions are all combinations of these elements, in an **or** relationship (for simplicity's sake, we are ignoring the **and** operation.)
Wait, where have we heard about distributive lattices before? In the previous chapter we said that they are isomorphic to *inclusion orders* i.e. orders which contain all combinations of sets of a given number of elements.
And if you think about the BHK interpretation you'll see why: "logical" orders are isomorphic to inclusion orders. The elements which participate in the inclusion are our prime propositions. And the inclusions are all combinations of these elements, in an **or** relationship (for simplicity's sake, we are ignoring the **and** operation.)
![A color mixing poset, ordered by inclusion](logic_poset_inclusion.svg)
**NB: The symbols that we are using for *and* and *or* logical operations are flipped when compared tothe arrows of the arrows they don't ∧ is *and* and is *or*. That is because the logic order is drawn upside-down at some places.**
So in order for our distributive lattice to represent logic accurately, it has to have a minimum and maximum objects.
In categorical logic, the **and** and **or** operations are represented (unsurprisingly) by *products* and *coproducts*.
**NB: For historical reasons, the symbols for *and* and *or* logical operations are flipped when compared to arrows in the diagrams ∧ is *and* and is *or*.**
The *negation* operation
---
In order to prove that our color-mixing lattice represents logic completely, we have to identify which objects correspond to the values **True** and **False**.
In order for a distributive lattice to represent logic, it has to also have objects that correspond to the values **True** and **False**. But in order for us to mandate that these objects exist, we must first find a way to specify what they are in order/category-theoretic terms.
A trivial result in logic, called *the principle of explosion*, states that if we have a proof of **False** (or if "**False** is true" if we use the terminology from classical logic), than any and every statement can be proven. And it is also obvious that no true statement implies False. So here is it.
A well-known result in logic, called *the principle of explosion*, states that if we have a proof of **False** (or if "**False** is true" if we use the terminology of classical logic), than any and every statement can be proven. And it is also obvious that no true statement implies False. So here is it.
![False, represented as a Hasse diagram](lattice_false.svg)
@ -443,57 +451,51 @@ Conversely, the proof of **True** (or the statement that "**True** is true") is
![True, represented as a Hasse diagram](lattice_true.svg)
So **True** and **False** are just the *maximum* and *minimum* objects of our order.
So **True** and **False** are just the *greatest* and *least* objects of our order (in category-theorethic terms *terminal* and *initial* object.) This is another example of the categorical concept of duality - **True** and **False** are dual to each other, just like **and** and **or**.
![The whole logical system, represented as a Hasse diagram](lattice_true_false.svg)
And in categorical logic, the **True** and **False** objects are represented by what we call *terminal* and *initial* objects. This is another example of the categorical concept of duality - **True** and **False** are dual to each other, just like **and** and **or**.
So in order to represent logic, our distributive lattice has to also be *bounded* i.e. it has to have greatest and least elements.
The *implies* operation
---
Finally, if a lattice really is isomorphic to a set of propositions, we it also has to have *function objects* i.e. there needs to be a rule that identifies a unique object **A → B**, for each pair of objects **A** and **B**, such that all axioms of intuinistic logic are followed.
Finally, if a lattice really is isomorphic to a set of propositions, we it also has to have *function objects* i.e. there needs to be a rule that identifies a unique object **A → B** for each pair of objects **A** and **B**, such that all axioms of intuinistic logic are followed.
And we would define the rule using categorical language - by recognizing a structure, that consists of set of relations between objects in which (A → B) plays a part.
How would this object be described? You guessed it, using categorical language i.e. by recognizing a structure that consists of set of relations between objects in which (A → B) plays a part.
![Implies operation](implies.svg)
This structure is actually a categorical reincarnation our rule of inference, called *modus ponens*, stating that **A ∧ (A → B) → B**. This rule is the essence of the **implies** operation and because we already know how the operations that it contains (**and** and **implies**) are represented in our lattice, we can directly "categorize" it and use it as a definition, saying that **(A → B)** is the object which has the following relations to objects **A** and **B**.
This structure is actually a categorical reincarnation our favourite rule of inference, the *modus ponens* (**A ∧ (A → B) → B**). This rule is the essence of the **implies** operation and, because we already know how the operations that it contains (**and** and **implies**) are represented in our lattice, we can directly "categorize" it and use it as a definition, saying that **(A → B)** is the object which is related to objects **A** and **B** in such a way that such that **A ∧ (A → B) → B**.
![Implies operation with impostors](implies_modus_ponens.svg)
This definition is not complete, however, because **(A → B)** is *not the only object* that fits in this formula. For example, the set **A → B ∧ C** is also one such object, as is **A → B ∧ C ∧ D**. So how do we set apart the real formula from all those "imposter" formulas? If you remember the definitions of the *categorical product* or the definiton of the *meet* operation in orders (as *meet* is an instance of a categorical product) you would already know where this is going: we define the function object using a *universal property* by saying that all other formulas that can be in **A ∧ X → B** point to **(A → B)**. And are below **(A → B)** in a Hasse diagram.
This definition is not complete, however, because **(A → B)** is *not the only object* that fits in this formula. For example, the set **A → B ∧ C** is also one such object, as is **A → B ∧ C ∧ D**. So how do we set apart the real formula from all those "imposter" formulas? If you remember the definitions of the *categorical product* (or of it's equivalent for orders, the *meet* operation) you would already know where this is going: we define the function object using a *universal property*, by recognizing that all other formulas that can be in the place of **X** in **A ∧ X → B** point to **(A → B)** i.e. they are below **(A → B)** in a Hasse diagram.
![Implies operation with universal property](implies_universal_property.svg)
Or, we use the logic terminology, we say that **A → B ∧ C** and **A → B ∧ C ∧ D** etc. are all "stronger" results than **A → B**.
Or, using the logic terminology, we say that **A → B ∧ C** and **A → B ∧ C ∧ D** etc. are all "stronger" results than (**A → B**) and so (**A → B**) is the weakest result that fits the criteria (stronger results lay lower in the diagram).
Let's try to test if this definition captures the concept correctly by examining a few special cases.
Without being too formal, let's try to test if this definition captures the concept correctly by examining a few special cases.
For example, let's take **A** and **B** to be the same object. In this case we have the formula **A ∧ X → A** (where **X** is **A → A**). But the *meet* of **A** and any other object would always be below **A**. So this formula is always for all **X**. So the biggest object that fits the description is just the biggest object there is i.e. **True**.
For example, let's take **A** and **B** to be the same object. In this case, (**A → B**) (or (**A → A**) if you want to be pedantic) would be the topmost object **X** for which the criteria given by the formula **A ∧ X → A** is satisfied. But in this case the formula is *always satisfied* as the *meet* of **A** and any other object would always be below **A**. So this formula is always for all **X**. The topmost object that fits it is, then, the topmost object out there i.e. **True**.
![Implies identity](implies_identity.svg)
This corresponds to the identity axiom in logic, that states that everything follows from itself.
And by the similar logic we can see easily that if we take **A** to be any object that is below **B**, then **(A → B)** will also correspond to the True object.
And by the similar logic we can see easily that if we take **A** to be any object that is below **B**, then **(A → B)** will also correspond to the **True** object.
![Implies when A follows from B](implies_b_follows.svg)
So if we have **A → B** then **(A → B)** is true.
So if we have **A → B** if **A** implies **B**, then **(A → B)** is always true.
Let's take one more example - what if **B** is lower than **A**. In this case the highest object that fits the formula **A ∧ X → B** is... **B** itself. **B** fits the formula (because **A ∧ B → B**) and is definitely the highest object that does so.
And what if **B** is lower than **A**. In this case the topmost object that fits the formula **A ∧ X → B** is **B** itself: **B** fits the formula because the meet of two objects is always below those same objects, so **A ∧ B → B** for all **A** and **B**. And **B** is definitely the topmost object that can possibly fit it, as it literary sets its upper bound.
![Implies when B follows from A](implies_a_follows.svg)
This translated to logical language, says that if **A → B** and **B → A**, then
Conclusion
---
Translated to logical language, says that if **B → A**, then the proof of **(A → B)** is just the proof of **B**.
So this is the final condition for an order to be a representation of logic - for each pair **A** and **B**, it has to have a unique object **X** which obey the formula **A ∧ X → B** and the universal property. In category theory this object is called the *exponential object*.
By the way, distributivity follows from this criteria, so we are left with just these two points: Logic is represented by an order that has with *meet and joins* and a *functional object*.
Which is the shortest definition of logic there is.
By the way, distributivity follows from this criteria, so we are left with just the following two points: Logic is represented by an order that has with *meet and joins* and a *functional object*. Which is, I think, the neatest definition of logic there is.

391
_chapters/05_logic/and.svg Normal file
View File

@ -0,0 +1,391 @@
<?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 199.99999"
version="1.1"
id="svg14095"
sodipodi:docname="and.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
width="595.29999"
height="200">
<metadata
id="metadata22063">
<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="defs14099" />
<sodipodi:namedview
id="namedview14097"
pagecolor="#ffffff"
bordercolor="#999999"
borderopacity="1"
objecttolerance="10.0"
gridtolerance="10.0"
guidetolerance="10.0"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="1.8494877"
inkscape:cx="290.09042"
inkscape:cy="139.59602"
inkscape:window-width="1920"
inkscape:window-height="1016"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg14095"
showguides="true" />
<circle
style="fill:#e6e7e8;stroke:#cbcccd;stroke-width:2.26771665;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
id="circle14075-1-9"
r="84.033943"
cy="91.109398"
cx="153.17088"
stroke-miterlimit="10"
transform="rotate(-0.14964654)" />
<circle
style="fill:#e6e7e8;stroke:#cbcccd;stroke-width:2.26771665;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
id="circle14075-1-9-2"
r="84.033943"
cy="90.150513"
cx="456.11826"
stroke-miterlimit="10"
transform="rotate(-0.14964654)" />
<g
id="g3759"
transform="matrix(0.83000137,-0.00216783,0.00216783,0.83000137,94.327659,-59.049637)">
<circle
style="fill:#ffffff;stroke:#939598;stroke-width:2.49318051;stroke-miterlimit:10"
stroke-miterlimit="10"
cx="435.59961"
cy="151.15062"
r="17.161392"
id="circle14077-8-2-9" />
<g
transform="matrix(0.41553009,0,0,0.41553009,322.57543,72.947852)"
style="fill:#808285"
id="g14081-7-2-3">
<path
inkscape:connector-curvature="0"
d="m 246.8,193.5 c 0.8,0 1.8,-0.2 2.9,-0.6 v 4.4 c -0.8,0.3 -1.6,0.6 -2.3,0.7 -0.7,0.1 -1.6,0.2 -2.6,0.2 -2,0 -3.5,-0.5 -4.3,-1.5 -0.9,-1 -1.3,-2.5 -1.3,-4.5 V 185 h -2.1 v -2.4 l 2.7,-1.9 1.5,-3.6 h 3.9 v 3.5 h 4.2 v 4.5 h -4.2 v 6.7 c 0,1.1 0.5,1.7 1.6,1.7 z m 16.4,-13.2 c 0.5,0 1,0 1.5,0.1 l 0.3,0.1 -0.5,5.6 c -0.5,-0.1 -1.2,-0.2 -2,-0.2 -1.3,0 -2.3,0.3 -2.8,0.9 -0.6,0.6 -0.9,1.5 -0.9,2.6 v 8.5 h -6 v -17.3 h 4.4 l 0.9,2.8 h 0.3 c 0.5,-0.9 1.2,-1.7 2.1,-2.2 0.9,-0.7 1.8,-0.9 2.7,-0.9 z m 16.5,17.6 -0.7,-2.2 h -0.4 c -0.5,0.8 -1.2,1.4 -2.1,1.8 -0.9,0.4 -1.9,0.6 -3.1,0.6 -1.9,0 -3.4,-0.6 -4.4,-1.7 -1.1,-1.1 -1.6,-2.7 -1.6,-4.7 v -11.3 h 6 v 9.5 c 0,1.1 0.2,2 0.5,2.6 0.3,0.6 0.8,0.9 1.6,0.9 1,0 1.8,-0.4 2.2,-1.2 0.4,-0.8 0.7,-2.2 0.7,-4.1 v -7.6 h 6 v 17.3 h -4.7 z m 17,0.3 c -2.9,0 -5.1,-0.8 -6.7,-2.3 -1.6,-1.5 -2.4,-3.7 -2.4,-6.5 0,-2.9 0.7,-5.2 2.2,-6.7 1.5,-1.6 3.6,-2.3 6.3,-2.3 2.6,0 4.6,0.7 6,2 1.4,1.4 2.1,3.3 2.1,5.9 v 2.7 h -10.7 c 0,1 0.4,1.7 1.1,2.3 0.7,0.6 1.6,0.8 2.7,0.8 1,0 2,-0.1 2.9,-0.3 0.9,-0.2 1.8,-0.5 2.9,-1 v 4.3 c -0.9,0.5 -1.9,0.8 -2.9,1 -0.9,0 -2.1,0.1 -3.5,0.1 z m -0.3,-13.9 c -0.7,0 -1.3,0.2 -1.8,0.7 -0.5,0.4 -0.8,1.1 -0.8,2.1 h 5.1 c 0,-0.8 -0.3,-1.5 -0.7,-2 -0.5,-0.5 -1.1,-0.8 -1.8,-0.8 z"
id="path14079-92-8-1" />
</g>
</g>
<g
id="g14089-0-9-9"
transform="matrix(0.34489054,-9.0079346e-4,9.0079346e-4,0.34489054,343.82366,102.11208)">
<circle
id="circle14083-2-7-4"
r="41.299999"
cy="95.400002"
cx="325"
stroke-miterlimit="10"
style="fill:#ffffff;stroke:#939598;stroke-width:6;stroke-miterlimit:10" />
<g
id="g14087-3-3-7"
style="fill:#808285">
<path
id="path14085-7-6-8"
d="m 300.5,92.4 h -3.3 v 11.4 h -5.3 V 92.4 h -2 v -2.6 l 2.2,-1.3 v -0.3 c 0,-2 0.4,-3.5 1.2,-4.4 0.8,-0.9 2.2,-1.3 4,-1.3 0.7,0 1.4,0.1 2,0.2 0.6,0.1 1.4,0.3 2.2,0.6 l -1.1,3.4 c -0.7,-0.2 -1.3,-0.3 -1.9,-0.3 -0.4,0 -0.7,0.1 -0.9,0.4 -0.2,0.3 -0.3,0.7 -0.3,1.2 v 0.4 h 3.3 v 4 z m 12.2,11.4 -1,-2 h -0.1 c -0.7,0.9 -1.4,1.5 -2.2,1.8 -0.7,0.3 -1.7,0.5 -2.9,0.5 -1.5,0 -2.6,-0.4 -3.4,-1.3 -0.8,-0.9 -1.3,-2.1 -1.3,-3.7 0,-1.6 0.6,-2.9 1.7,-3.7 1.1,-0.8 2.8,-1.3 5,-1.4 h 2.5 v -0.2 c 0,-1.3 -0.6,-1.9 -1.9,-1.9 -1.1,0 -2.6,0.4 -4.3,1.1 l -1.5,-3.5 c 1.8,-0.9 4.1,-1.4 6.8,-1.4 2,0 3.5,0.5 4.6,1.5 1.1,1 1.6,2.4 1.6,4.1 v 10.1 z m -4,-3.5 c 0.6,0 1.2,-0.2 1.7,-0.6 0.5,-0.4 0.7,-0.9 0.7,-1.6 v -1.2 l -1.2,0.1 c -1.8,0.1 -2.6,0.7 -2.6,1.9 -0.1,1 0.4,1.4 1.4,1.4 z m 16.6,3.5 H 320 V 82.6 h 5.3 z m 15.6,-4.7 c 0,1.7 -0.6,2.9 -1.7,3.7 -1.1,0.8 -2.7,1.3 -4.9,1.3 -1.1,0 -2.1,-0.1 -3,-0.2 -0.8,-0.1 -1.7,-0.3 -2.6,-0.7 V 99 c 0.8,0.4 1.7,0.7 2.7,0.9 1,0.2 1.9,0.4 2.6,0.4 1.2,0 1.7,-0.3 1.7,-0.8 0,-0.3 -0.2,-0.5 -0.5,-0.7 -0.3,-0.2 -1.3,-0.6 -2.8,-1.2 -1.4,-0.6 -2.4,-1.2 -3,-2 -0.6,-0.7 -0.8,-1.7 -0.8,-2.8 0,-1.4 0.6,-2.6 1.7,-3.4 1.1,-0.8 2.7,-1.2 4.7,-1.2 1,0 2,0.1 2.9,0.3 0.9,0.2 1.8,0.5 2.8,1 l -1.4,3.4 c -0.7,-0.3 -1.5,-0.6 -2.2,-0.8 -0.7,-0.2 -1.4,-0.3 -1.9,-0.3 -0.9,0 -1.3,0.2 -1.3,0.6 0,0.3 0.2,0.5 0.5,0.7 0.3,0.2 1.2,0.6 2.6,1.1 1.1,0.4 1.9,0.9 2.4,1.3 0.5,0.4 0.9,0.9 1.2,1.5 0.2,0.5 0.3,1.2 0.3,2.1 z m 10.4,5 c -2.6,0 -4.6,-0.7 -6,-2.1 -1.4,-1.4 -2.1,-3.3 -2.1,-5.8 0,-2.6 0.7,-4.6 2,-6 1.3,-1.4 3.2,-2.1 5.6,-2.1 2.3,0 4.1,0.6 5.4,1.8 1.3,1.2 1.9,3 1.9,5.2 v 2.4 h -9.5 c 0,0.9 0.4,1.5 0.9,2 0.6,0.5 1.4,0.7 2.4,0.7 0.9,0 1.8,-0.1 2.6,-0.3 0.8,-0.2 1.6,-0.5 2.6,-0.9 v 3.8 c -0.8,0.4 -1.7,0.7 -2.6,0.9 -0.9,0.2 -1.9,0.4 -3.2,0.4 z M 351,91.7 c -0.6,0 -1.2,0.2 -1.6,0.6 -0.4,0.4 -0.7,1 -0.7,1.9 h 4.6 c 0,-0.7 -0.2,-1.3 -0.6,-1.8 -0.5,-0.4 -1,-0.7 -1.7,-0.7 z"
inkscape:connector-curvature="0" />
</g>
</g>
<g
style="display:inline;fill:#dddddd;stroke:#525252;stroke-width:6.38899994;stroke-miterlimit:10;stroke-opacity:1"
id="g1482-7-0-2-0-3"
transform="matrix(0.19081777,0.04470537,-0.0586126,0.27393353,339.80282,-8.6091075)">
<path
style="stroke:#525252;stroke-width:16.09810066;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path1478-7-9-7-4-0"
d="m 561.87563,137.32866 c 5.67304,-0.68218 11.42727,-1.10766 17.25196,-1.39814 -2.29259,-4.1459 -4.88392,-8.23324 -7.77387,-12.26334 -3.29375,4.77629 -5.64002,8.58931 -9.47809,13.66148 z" />
<path
style="fill:none;stroke:#525252;stroke-width:9.11184978;stroke-opacity:1;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-7-6-4"
d="M -830.23132,282.27993 C -477.33831,127.01799 201.8588,45.057954 566.33474,133.95287"
sodipodi:nodetypes="cc" />
</g>
<g
id="g3526-3"
transform="matrix(0.83000137,-0.00216783,0.00216783,0.83000137,-86.014867,26.388977)">
<circle
r="34.419193"
stroke-miterlimit="10"
cx="273.04861"
cy="18.32807"
id="circle14075-1-9-3-6"
style="fill:#e6e7e8;stroke:#cbcccd;stroke-width:2.26771665;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
<g
transform="translate(-10.813806,-123.27738)"
id="g3451-0">
<circle
id="circle14077-8-2-6"
r="17.161392"
cy="141.55794"
cx="266.00946"
stroke-miterlimit="10"
style="fill:#ffffff;stroke:#939598;stroke-width:2.49318051;stroke-miterlimit:10" />
<g
id="g14081-7-2-2"
style="fill:#808285"
transform="matrix(0.41553009,0,0,0.41553009,152.98527,63.355172)">
<path
id="path14079-92-8-6"
d="m 246.8,193.5 c 0.8,0 1.8,-0.2 2.9,-0.6 v 4.4 c -0.8,0.3 -1.6,0.6 -2.3,0.7 -0.7,0.1 -1.6,0.2 -2.6,0.2 -2,0 -3.5,-0.5 -4.3,-1.5 -0.9,-1 -1.3,-2.5 -1.3,-4.5 V 185 h -2.1 v -2.4 l 2.7,-1.9 1.5,-3.6 h 3.9 v 3.5 h 4.2 v 4.5 h -4.2 v 6.7 c 0,1.1 0.5,1.7 1.6,1.7 z m 16.4,-13.2 c 0.5,0 1,0 1.5,0.1 l 0.3,0.1 -0.5,5.6 c -0.5,-0.1 -1.2,-0.2 -2,-0.2 -1.3,0 -2.3,0.3 -2.8,0.9 -0.6,0.6 -0.9,1.5 -0.9,2.6 v 8.5 h -6 v -17.3 h 4.4 l 0.9,2.8 h 0.3 c 0.5,-0.9 1.2,-1.7 2.1,-2.2 0.9,-0.7 1.8,-0.9 2.7,-0.9 z m 16.5,17.6 -0.7,-2.2 h -0.4 c -0.5,0.8 -1.2,1.4 -2.1,1.8 -0.9,0.4 -1.9,0.6 -3.1,0.6 -1.9,0 -3.4,-0.6 -4.4,-1.7 -1.1,-1.1 -1.6,-2.7 -1.6,-4.7 v -11.3 h 6 v 9.5 c 0,1.1 0.2,2 0.5,2.6 0.3,0.6 0.8,0.9 1.6,0.9 1,0 1.8,-0.4 2.2,-1.2 0.4,-0.8 0.7,-2.2 0.7,-4.1 v -7.6 h 6 v 17.3 h -4.7 z m 17,0.3 c -2.9,0 -5.1,-0.8 -6.7,-2.3 -1.6,-1.5 -2.4,-3.7 -2.4,-6.5 0,-2.9 0.7,-5.2 2.2,-6.7 1.5,-1.6 3.6,-2.3 6.3,-2.3 2.6,0 4.6,0.7 6,2 1.4,1.4 2.1,3.3 2.1,5.9 v 2.7 h -10.7 c 0,1 0.4,1.7 1.1,2.3 0.7,0.6 1.6,0.8 2.7,0.8 1,0 2,-0.1 2.9,-0.3 0.9,-0.2 1.8,-0.5 2.9,-1 v 4.3 c -0.9,0.5 -1.9,0.8 -2.9,1 -0.9,0 -2.1,0.1 -3.5,0.1 z m -0.3,-13.9 c -0.7,0 -1.3,0.2 -1.8,0.7 -0.5,0.4 -0.8,1.1 -0.8,2.1 h 5.1 c 0,-0.8 -0.3,-1.5 -0.7,-2 -0.5,-0.5 -1.1,-0.8 -1.8,-0.8 z"
inkscape:connector-curvature="0" />
</g>
</g>
<g
transform="translate(23.716952,-122.95952)"
id="g3451-0-0">
<circle
id="circle14077-8-2-6-2"
r="17.161392"
cy="141.55794"
cx="266.00946"
stroke-miterlimit="10"
style="fill:#ffffff;stroke:#939598;stroke-width:2.49318051;stroke-miterlimit:10" />
<g
id="g14081-7-2-2-3"
style="fill:#808285"
transform="matrix(0.41553009,0,0,0.41553009,152.98527,63.355172)">
<path
id="path14079-92-8-6-7"
d="m 246.8,193.5 c 0.8,0 1.8,-0.2 2.9,-0.6 v 4.4 c -0.8,0.3 -1.6,0.6 -2.3,0.7 -0.7,0.1 -1.6,0.2 -2.6,0.2 -2,0 -3.5,-0.5 -4.3,-1.5 -0.9,-1 -1.3,-2.5 -1.3,-4.5 V 185 h -2.1 v -2.4 l 2.7,-1.9 1.5,-3.6 h 3.9 v 3.5 h 4.2 v 4.5 h -4.2 v 6.7 c 0,1.1 0.5,1.7 1.6,1.7 z m 16.4,-13.2 c 0.5,0 1,0 1.5,0.1 l 0.3,0.1 -0.5,5.6 c -0.5,-0.1 -1.2,-0.2 -2,-0.2 -1.3,0 -2.3,0.3 -2.8,0.9 -0.6,0.6 -0.9,1.5 -0.9,2.6 v 8.5 h -6 v -17.3 h 4.4 l 0.9,2.8 h 0.3 c 0.5,-0.9 1.2,-1.7 2.1,-2.2 0.9,-0.7 1.8,-0.9 2.7,-0.9 z m 16.5,17.6 -0.7,-2.2 h -0.4 c -0.5,0.8 -1.2,1.4 -2.1,1.8 -0.9,0.4 -1.9,0.6 -3.1,0.6 -1.9,0 -3.4,-0.6 -4.4,-1.7 -1.1,-1.1 -1.6,-2.7 -1.6,-4.7 v -11.3 h 6 v 9.5 c 0,1.1 0.2,2 0.5,2.6 0.3,0.6 0.8,0.9 1.6,0.9 1,0 1.8,-0.4 2.2,-1.2 0.4,-0.8 0.7,-2.2 0.7,-4.1 v -7.6 h 6 v 17.3 h -4.7 z m 17,0.3 c -2.9,0 -5.1,-0.8 -6.7,-2.3 -1.6,-1.5 -2.4,-3.7 -2.4,-6.5 0,-2.9 0.7,-5.2 2.2,-6.7 1.5,-1.6 3.6,-2.3 6.3,-2.3 2.6,0 4.6,0.7 6,2 1.4,1.4 2.1,3.3 2.1,5.9 v 2.7 h -10.7 c 0,1 0.4,1.7 1.1,2.3 0.7,0.6 1.6,0.8 2.7,0.8 1,0 2,-0.1 2.9,-0.3 0.9,-0.2 1.8,-0.5 2.9,-1 v 4.3 c -0.9,0.5 -1.9,0.8 -2.9,1 -0.9,0 -2.1,0.1 -3.5,0.1 z m -0.3,-13.9 c -0.7,0 -1.3,0.2 -1.8,0.7 -0.5,0.4 -0.8,1.1 -0.8,2.1 h 5.1 c 0,-0.8 -0.3,-1.5 -0.7,-2 -0.5,-0.5 -1.1,-0.8 -1.8,-0.8 z"
inkscape:connector-curvature="0" />
</g>
</g>
</g>
<g
id="g3526-3-9"
transform="rotate(-0.14964654,42296.092,-26575.939)" />
<g
style="display:inline;fill:#dddddd;stroke:#525252;stroke-width:6.38899994;stroke-miterlimit:10;stroke-opacity:1"
id="g1482-7-0-2-0-3-9"
transform="matrix(0.19324937,0.03262936,0.05197362,-0.27527035,318.94873,154.89093)">
<path
style="stroke:#525252;stroke-width:16.09810066;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path1478-7-9-7-4-0-3"
d="m 561.87563,137.32866 c 5.67304,-0.68218 11.42727,-1.10766 17.25196,-1.39814 -2.29259,-4.1459 -4.88392,-8.23324 -7.77387,-12.26334 -3.29375,4.77629 -5.64002,8.58931 -9.47809,13.66148 z" />
<path
style="fill:none;stroke:#525252;stroke-width:9.11184978;stroke-opacity:1;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-7-6-4-7"
d="M -651.84809,188.4738 C -298.95508,33.211863 201.8588,45.057954 566.33474,133.95287"
sodipodi:nodetypes="cc" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#525252;stroke-width:6.38899994;stroke-miterlimit:10;stroke-opacity:1"
id="g1482-7-0-2-0-3-9-4"
transform="matrix(0.19483275,-0.02121777,-0.02493549,-0.27902193,338.26114,203.99435)">
<path
style="stroke:#525252;stroke-width:16.09810066;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path1478-7-9-7-4-0-3-5"
d="m 561.87563,137.32866 c 5.67304,-0.68218 11.42727,-1.10766 17.25196,-1.39814 -2.29259,-4.1459 -4.88392,-8.23324 -7.77387,-12.26334 -3.29375,4.77629 -5.64002,8.58931 -9.47809,13.66148 z" />
<path
style="fill:none;stroke:#525252;stroke-width:9.11184978;stroke-opacity:1;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-7-6-4-7-2"
d="M -1044.1931,346.59038 C -710.24899,16.434737 107.21341,-2.1652214 566.33474,133.95287"
sodipodi:nodetypes="cc" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#525252;stroke-width:6.38899994;stroke-miterlimit:10;stroke-opacity:1"
id="g1482-7-0-2-0-3-9-5"
transform="matrix(0.19483275,-0.02121777,-0.02493549,-0.27902193,331.45513,194.92953)">
<path
style="stroke:#525252;stroke-width:16.09810066;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path1478-7-9-7-4-0-3-4"
d="m 561.87563,137.32866 c 5.67304,-0.68218 11.42727,-1.10766 17.25196,-1.39814 -2.29259,-4.1459 -4.88392,-8.23324 -7.77387,-12.26334 -3.29375,4.77629 -5.64002,8.58931 -9.47809,13.66148 z" />
<path
style="fill:none;stroke:#525252;stroke-width:9.11184978;stroke-opacity:1;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-7-6-4-7-7"
d="M -830.23132,282.27993 C -477.33831,127.01799 201.8588,45.057954 566.33474,133.95287"
sodipodi:nodetypes="cc" />
</g>
<g
id="g3526"
transform="matrix(0.83000137,-0.00216783,0.00216783,0.83000137,-114.46512,96.101186)">
<circle
r="34.419193"
stroke-miterlimit="10"
cx="273.04861"
cy="18.32807"
id="circle14075-1-9-3"
style="fill:#e6e7e8;stroke:#cbcccd;stroke-width:2.26771665;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
<g
transform="translate(-10.813806,-123.27738)"
id="g3451">
<circle
id="circle14077-8-2"
r="17.161392"
cy="141.55794"
cx="266.00946"
stroke-miterlimit="10"
style="fill:#ffffff;stroke:#939598;stroke-width:2.49318051;stroke-miterlimit:10" />
<g
id="g14081-7-2"
style="fill:#808285"
transform="matrix(0.41553009,0,0,0.41553009,152.98527,63.355172)">
<path
id="path14079-92-8"
d="m 246.8,193.5 c 0.8,0 1.8,-0.2 2.9,-0.6 v 4.4 c -0.8,0.3 -1.6,0.6 -2.3,0.7 -0.7,0.1 -1.6,0.2 -2.6,0.2 -2,0 -3.5,-0.5 -4.3,-1.5 -0.9,-1 -1.3,-2.5 -1.3,-4.5 V 185 h -2.1 v -2.4 l 2.7,-1.9 1.5,-3.6 h 3.9 v 3.5 h 4.2 v 4.5 h -4.2 v 6.7 c 0,1.1 0.5,1.7 1.6,1.7 z m 16.4,-13.2 c 0.5,0 1,0 1.5,0.1 l 0.3,0.1 -0.5,5.6 c -0.5,-0.1 -1.2,-0.2 -2,-0.2 -1.3,0 -2.3,0.3 -2.8,0.9 -0.6,0.6 -0.9,1.5 -0.9,2.6 v 8.5 h -6 v -17.3 h 4.4 l 0.9,2.8 h 0.3 c 0.5,-0.9 1.2,-1.7 2.1,-2.2 0.9,-0.7 1.8,-0.9 2.7,-0.9 z m 16.5,17.6 -0.7,-2.2 h -0.4 c -0.5,0.8 -1.2,1.4 -2.1,1.8 -0.9,0.4 -1.9,0.6 -3.1,0.6 -1.9,0 -3.4,-0.6 -4.4,-1.7 -1.1,-1.1 -1.6,-2.7 -1.6,-4.7 v -11.3 h 6 v 9.5 c 0,1.1 0.2,2 0.5,2.6 0.3,0.6 0.8,0.9 1.6,0.9 1,0 1.8,-0.4 2.2,-1.2 0.4,-0.8 0.7,-2.2 0.7,-4.1 v -7.6 h 6 v 17.3 h -4.7 z m 17,0.3 c -2.9,0 -5.1,-0.8 -6.7,-2.3 -1.6,-1.5 -2.4,-3.7 -2.4,-6.5 0,-2.9 0.7,-5.2 2.2,-6.7 1.5,-1.6 3.6,-2.3 6.3,-2.3 2.6,0 4.6,0.7 6,2 1.4,1.4 2.1,3.3 2.1,5.9 v 2.7 h -10.7 c 0,1 0.4,1.7 1.1,2.3 0.7,0.6 1.6,0.8 2.7,0.8 1,0 2,-0.1 2.9,-0.3 0.9,-0.2 1.8,-0.5 2.9,-1 v 4.3 c -0.9,0.5 -1.9,0.8 -2.9,1 -0.9,0 -2.1,0.1 -3.5,0.1 z m -0.3,-13.9 c -0.7,0 -1.3,0.2 -1.8,0.7 -0.5,0.4 -0.8,1.1 -0.8,2.1 h 5.1 c 0,-0.8 -0.3,-1.5 -0.7,-2 -0.5,-0.5 -1.1,-0.8 -1.8,-0.8 z"
inkscape:connector-curvature="0" />
</g>
</g>
<g
transform="translate(14.404408,-30.308224)"
id="g3457">
<g
id="g14089-0-9"
transform="matrix(0.41553009,0,0,0.41553009,140.0087,9.8268355)">
<circle
id="circle14083-2-7"
r="41.299999"
cy="95.400002"
cx="325"
stroke-miterlimit="10"
style="fill:#ffffff;stroke:#939598;stroke-width:6;stroke-miterlimit:10" />
<g
id="g14087-3-3"
style="fill:#808285">
<path
id="path14085-7-6"
d="m 300.5,92.4 h -3.3 v 11.4 h -5.3 V 92.4 h -2 v -2.6 l 2.2,-1.3 v -0.3 c 0,-2 0.4,-3.5 1.2,-4.4 0.8,-0.9 2.2,-1.3 4,-1.3 0.7,0 1.4,0.1 2,0.2 0.6,0.1 1.4,0.3 2.2,0.6 l -1.1,3.4 c -0.7,-0.2 -1.3,-0.3 -1.9,-0.3 -0.4,0 -0.7,0.1 -0.9,0.4 -0.2,0.3 -0.3,0.7 -0.3,1.2 v 0.4 h 3.3 v 4 z m 12.2,11.4 -1,-2 h -0.1 c -0.7,0.9 -1.4,1.5 -2.2,1.8 -0.7,0.3 -1.7,0.5 -2.9,0.5 -1.5,0 -2.6,-0.4 -3.4,-1.3 -0.8,-0.9 -1.3,-2.1 -1.3,-3.7 0,-1.6 0.6,-2.9 1.7,-3.7 1.1,-0.8 2.8,-1.3 5,-1.4 h 2.5 v -0.2 c 0,-1.3 -0.6,-1.9 -1.9,-1.9 -1.1,0 -2.6,0.4 -4.3,1.1 l -1.5,-3.5 c 1.8,-0.9 4.1,-1.4 6.8,-1.4 2,0 3.5,0.5 4.6,1.5 1.1,1 1.6,2.4 1.6,4.1 v 10.1 z m -4,-3.5 c 0.6,0 1.2,-0.2 1.7,-0.6 0.5,-0.4 0.7,-0.9 0.7,-1.6 v -1.2 l -1.2,0.1 c -1.8,0.1 -2.6,0.7 -2.6,1.9 -0.1,1 0.4,1.4 1.4,1.4 z m 16.6,3.5 H 320 V 82.6 h 5.3 z m 15.6,-4.7 c 0,1.7 -0.6,2.9 -1.7,3.7 -1.1,0.8 -2.7,1.3 -4.9,1.3 -1.1,0 -2.1,-0.1 -3,-0.2 -0.8,-0.1 -1.7,-0.3 -2.6,-0.7 V 99 c 0.8,0.4 1.7,0.7 2.7,0.9 1,0.2 1.9,0.4 2.6,0.4 1.2,0 1.7,-0.3 1.7,-0.8 0,-0.3 -0.2,-0.5 -0.5,-0.7 -0.3,-0.2 -1.3,-0.6 -2.8,-1.2 -1.4,-0.6 -2.4,-1.2 -3,-2 -0.6,-0.7 -0.8,-1.7 -0.8,-2.8 0,-1.4 0.6,-2.6 1.7,-3.4 1.1,-0.8 2.7,-1.2 4.7,-1.2 1,0 2,0.1 2.9,0.3 0.9,0.2 1.8,0.5 2.8,1 l -1.4,3.4 c -0.7,-0.3 -1.5,-0.6 -2.2,-0.8 -0.7,-0.2 -1.4,-0.3 -1.9,-0.3 -0.9,0 -1.3,0.2 -1.3,0.6 0,0.3 0.2,0.5 0.5,0.7 0.3,0.2 1.2,0.6 2.6,1.1 1.1,0.4 1.9,0.9 2.4,1.3 0.5,0.4 0.9,0.9 1.2,1.5 0.2,0.5 0.3,1.2 0.3,2.1 z m 10.4,5 c -2.6,0 -4.6,-0.7 -6,-2.1 -1.4,-1.4 -2.1,-3.3 -2.1,-5.8 0,-2.6 0.7,-4.6 2,-6 1.3,-1.4 3.2,-2.1 5.6,-2.1 2.3,0 4.1,0.6 5.4,1.8 1.3,1.2 1.9,3 1.9,5.2 v 2.4 h -9.5 c 0,0.9 0.4,1.5 0.9,2 0.6,0.5 1.4,0.7 2.4,0.7 0.9,0 1.8,-0.1 2.6,-0.3 0.8,-0.2 1.6,-0.5 2.6,-0.9 v 3.8 c -0.8,0.4 -1.7,0.7 -2.6,0.9 -0.9,0.2 -1.9,0.4 -3.2,0.4 z M 351,91.7 c -0.6,0 -1.2,0.2 -1.6,0.6 -0.4,0.4 -0.7,1 -0.7,1.9 h 4.6 c 0,-0.7 -0.2,-1.3 -0.6,-1.8 -0.5,-0.4 -1,-0.7 -1.7,-0.7 z"
inkscape:connector-curvature="0" />
</g>
</g>
</g>
</g>
<g
id="g3526-5"
transform="matrix(0.83000137,-0.00216783,0.00216783,0.83000137,-20.661565,66.594063)">
<circle
r="34.419193"
stroke-miterlimit="10"
cx="273.04861"
cy="18.32807"
id="circle14075-1-9-3-9"
style="fill:#e6e7e8;stroke:#cbcccd;stroke-width:2.26771665;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
<g
transform="translate(23.520026,-123.27738)"
id="g3451-2">
<circle
id="circle14077-8-2-2"
r="17.161392"
cy="141.55794"
cx="266.00946"
stroke-miterlimit="10"
style="fill:#ffffff;stroke:#939598;stroke-width:2.49318051;stroke-miterlimit:10" />
<g
id="g14081-7-2-8"
style="fill:#808285"
transform="matrix(0.41553009,0,0,0.41553009,152.98527,63.355172)">
<path
id="path14079-92-8-9"
d="m 246.8,193.5 c 0.8,0 1.8,-0.2 2.9,-0.6 v 4.4 c -0.8,0.3 -1.6,0.6 -2.3,0.7 -0.7,0.1 -1.6,0.2 -2.6,0.2 -2,0 -3.5,-0.5 -4.3,-1.5 -0.9,-1 -1.3,-2.5 -1.3,-4.5 V 185 h -2.1 v -2.4 l 2.7,-1.9 1.5,-3.6 h 3.9 v 3.5 h 4.2 v 4.5 h -4.2 v 6.7 c 0,1.1 0.5,1.7 1.6,1.7 z m 16.4,-13.2 c 0.5,0 1,0 1.5,0.1 l 0.3,0.1 -0.5,5.6 c -0.5,-0.1 -1.2,-0.2 -2,-0.2 -1.3,0 -2.3,0.3 -2.8,0.9 -0.6,0.6 -0.9,1.5 -0.9,2.6 v 8.5 h -6 v -17.3 h 4.4 l 0.9,2.8 h 0.3 c 0.5,-0.9 1.2,-1.7 2.1,-2.2 0.9,-0.7 1.8,-0.9 2.7,-0.9 z m 16.5,17.6 -0.7,-2.2 h -0.4 c -0.5,0.8 -1.2,1.4 -2.1,1.8 -0.9,0.4 -1.9,0.6 -3.1,0.6 -1.9,0 -3.4,-0.6 -4.4,-1.7 -1.1,-1.1 -1.6,-2.7 -1.6,-4.7 v -11.3 h 6 v 9.5 c 0,1.1 0.2,2 0.5,2.6 0.3,0.6 0.8,0.9 1.6,0.9 1,0 1.8,-0.4 2.2,-1.2 0.4,-0.8 0.7,-2.2 0.7,-4.1 v -7.6 h 6 v 17.3 h -4.7 z m 17,0.3 c -2.9,0 -5.1,-0.8 -6.7,-2.3 -1.6,-1.5 -2.4,-3.7 -2.4,-6.5 0,-2.9 0.7,-5.2 2.2,-6.7 1.5,-1.6 3.6,-2.3 6.3,-2.3 2.6,0 4.6,0.7 6,2 1.4,1.4 2.1,3.3 2.1,5.9 v 2.7 h -10.7 c 0,1 0.4,1.7 1.1,2.3 0.7,0.6 1.6,0.8 2.7,0.8 1,0 2,-0.1 2.9,-0.3 0.9,-0.2 1.8,-0.5 2.9,-1 v 4.3 c -0.9,0.5 -1.9,0.8 -2.9,1 -0.9,0 -2.1,0.1 -3.5,0.1 z m -0.3,-13.9 c -0.7,0 -1.3,0.2 -1.8,0.7 -0.5,0.4 -0.8,1.1 -0.8,2.1 h 5.1 c 0,-0.8 -0.3,-1.5 -0.7,-2 -0.5,-0.5 -1.1,-0.8 -1.8,-0.8 z"
inkscape:connector-curvature="0" />
</g>
</g>
<g
transform="translate(-19.659079,-31.389604)"
id="g3457-7">
<g
id="g14089-0-9-3"
transform="matrix(0.41553009,0,0,0.41553009,140.0087,9.8268355)">
<circle
id="circle14083-2-7-6"
r="41.299999"
cy="95.400002"
cx="325"
stroke-miterlimit="10"
style="fill:#ffffff;stroke:#939598;stroke-width:6;stroke-miterlimit:10" />
<g
id="g14087-3-3-1"
style="fill:#808285">
<path
id="path14085-7-6-2"
d="m 300.5,92.4 h -3.3 v 11.4 h -5.3 V 92.4 h -2 v -2.6 l 2.2,-1.3 v -0.3 c 0,-2 0.4,-3.5 1.2,-4.4 0.8,-0.9 2.2,-1.3 4,-1.3 0.7,0 1.4,0.1 2,0.2 0.6,0.1 1.4,0.3 2.2,0.6 l -1.1,3.4 c -0.7,-0.2 -1.3,-0.3 -1.9,-0.3 -0.4,0 -0.7,0.1 -0.9,0.4 -0.2,0.3 -0.3,0.7 -0.3,1.2 v 0.4 h 3.3 v 4 z m 12.2,11.4 -1,-2 h -0.1 c -0.7,0.9 -1.4,1.5 -2.2,1.8 -0.7,0.3 -1.7,0.5 -2.9,0.5 -1.5,0 -2.6,-0.4 -3.4,-1.3 -0.8,-0.9 -1.3,-2.1 -1.3,-3.7 0,-1.6 0.6,-2.9 1.7,-3.7 1.1,-0.8 2.8,-1.3 5,-1.4 h 2.5 v -0.2 c 0,-1.3 -0.6,-1.9 -1.9,-1.9 -1.1,0 -2.6,0.4 -4.3,1.1 l -1.5,-3.5 c 1.8,-0.9 4.1,-1.4 6.8,-1.4 2,0 3.5,0.5 4.6,1.5 1.1,1 1.6,2.4 1.6,4.1 v 10.1 z m -4,-3.5 c 0.6,0 1.2,-0.2 1.7,-0.6 0.5,-0.4 0.7,-0.9 0.7,-1.6 v -1.2 l -1.2,0.1 c -1.8,0.1 -2.6,0.7 -2.6,1.9 -0.1,1 0.4,1.4 1.4,1.4 z m 16.6,3.5 H 320 V 82.6 h 5.3 z m 15.6,-4.7 c 0,1.7 -0.6,2.9 -1.7,3.7 -1.1,0.8 -2.7,1.3 -4.9,1.3 -1.1,0 -2.1,-0.1 -3,-0.2 -0.8,-0.1 -1.7,-0.3 -2.6,-0.7 V 99 c 0.8,0.4 1.7,0.7 2.7,0.9 1,0.2 1.9,0.4 2.6,0.4 1.2,0 1.7,-0.3 1.7,-0.8 0,-0.3 -0.2,-0.5 -0.5,-0.7 -0.3,-0.2 -1.3,-0.6 -2.8,-1.2 -1.4,-0.6 -2.4,-1.2 -3,-2 -0.6,-0.7 -0.8,-1.7 -0.8,-2.8 0,-1.4 0.6,-2.6 1.7,-3.4 1.1,-0.8 2.7,-1.2 4.7,-1.2 1,0 2,0.1 2.9,0.3 0.9,0.2 1.8,0.5 2.8,1 l -1.4,3.4 c -0.7,-0.3 -1.5,-0.6 -2.2,-0.8 -0.7,-0.2 -1.4,-0.3 -1.9,-0.3 -0.9,0 -1.3,0.2 -1.3,0.6 0,0.3 0.2,0.5 0.5,0.7 0.3,0.2 1.2,0.6 2.6,1.1 1.1,0.4 1.9,0.9 2.4,1.3 0.5,0.4 0.9,0.9 1.2,1.5 0.2,0.5 0.3,1.2 0.3,2.1 z m 10.4,5 c -2.6,0 -4.6,-0.7 -6,-2.1 -1.4,-1.4 -2.1,-3.3 -2.1,-5.8 0,-2.6 0.7,-4.6 2,-6 1.3,-1.4 3.2,-2.1 5.6,-2.1 2.3,0 4.1,0.6 5.4,1.8 1.3,1.2 1.9,3 1.9,5.2 v 2.4 h -9.5 c 0,0.9 0.4,1.5 0.9,2 0.6,0.5 1.4,0.7 2.4,0.7 0.9,0 1.8,-0.1 2.6,-0.3 0.8,-0.2 1.6,-0.5 2.6,-0.9 v 3.8 c -0.8,0.4 -1.7,0.7 -2.6,0.9 -0.9,0.2 -1.9,0.4 -3.2,0.4 z M 351,91.7 c -0.6,0 -1.2,0.2 -1.6,0.6 -0.4,0.4 -0.7,1 -0.7,1.9 h 4.6 c 0,-0.7 -0.2,-1.3 -0.6,-1.8 -0.5,-0.4 -1,-0.7 -1.7,-0.7 z"
inkscape:connector-curvature="0" />
</g>
</g>
</g>
</g>
<g
id="g3526-5-6"
transform="matrix(0.83000137,-0.00216783,0.00216783,0.83000137,-53.970633,127.70148)">
<circle
r="34.419193"
stroke-miterlimit="10"
cx="273.04861"
cy="18.32807"
id="circle14075-1-9-3-9-1"
style="fill:#e6e7e8;stroke:#cbcccd;stroke-width:2.26771665;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" />
<g
transform="translate(-19.659079,-31.389604)"
id="g3457-7-0">
<g
id="g14089-0-9-3-6"
transform="matrix(0.41553009,0,0,0.41553009,140.0087,9.8268355)">
<circle
id="circle14083-2-7-6-1"
r="41.299999"
cy="95.400002"
cx="325"
stroke-miterlimit="10"
style="fill:#ffffff;stroke:#939598;stroke-width:6;stroke-miterlimit:10" />
<g
id="g14087-3-3-1-5"
style="fill:#808285">
<path
id="path14085-7-6-2-5"
d="m 300.5,92.4 h -3.3 v 11.4 h -5.3 V 92.4 h -2 v -2.6 l 2.2,-1.3 v -0.3 c 0,-2 0.4,-3.5 1.2,-4.4 0.8,-0.9 2.2,-1.3 4,-1.3 0.7,0 1.4,0.1 2,0.2 0.6,0.1 1.4,0.3 2.2,0.6 l -1.1,3.4 c -0.7,-0.2 -1.3,-0.3 -1.9,-0.3 -0.4,0 -0.7,0.1 -0.9,0.4 -0.2,0.3 -0.3,0.7 -0.3,1.2 v 0.4 h 3.3 v 4 z m 12.2,11.4 -1,-2 h -0.1 c -0.7,0.9 -1.4,1.5 -2.2,1.8 -0.7,0.3 -1.7,0.5 -2.9,0.5 -1.5,0 -2.6,-0.4 -3.4,-1.3 -0.8,-0.9 -1.3,-2.1 -1.3,-3.7 0,-1.6 0.6,-2.9 1.7,-3.7 1.1,-0.8 2.8,-1.3 5,-1.4 h 2.5 v -0.2 c 0,-1.3 -0.6,-1.9 -1.9,-1.9 -1.1,0 -2.6,0.4 -4.3,1.1 l -1.5,-3.5 c 1.8,-0.9 4.1,-1.4 6.8,-1.4 2,0 3.5,0.5 4.6,1.5 1.1,1 1.6,2.4 1.6,4.1 v 10.1 z m -4,-3.5 c 0.6,0 1.2,-0.2 1.7,-0.6 0.5,-0.4 0.7,-0.9 0.7,-1.6 v -1.2 l -1.2,0.1 c -1.8,0.1 -2.6,0.7 -2.6,1.9 -0.1,1 0.4,1.4 1.4,1.4 z m 16.6,3.5 H 320 V 82.6 h 5.3 z m 15.6,-4.7 c 0,1.7 -0.6,2.9 -1.7,3.7 -1.1,0.8 -2.7,1.3 -4.9,1.3 -1.1,0 -2.1,-0.1 -3,-0.2 -0.8,-0.1 -1.7,-0.3 -2.6,-0.7 V 99 c 0.8,0.4 1.7,0.7 2.7,0.9 1,0.2 1.9,0.4 2.6,0.4 1.2,0 1.7,-0.3 1.7,-0.8 0,-0.3 -0.2,-0.5 -0.5,-0.7 -0.3,-0.2 -1.3,-0.6 -2.8,-1.2 -1.4,-0.6 -2.4,-1.2 -3,-2 -0.6,-0.7 -0.8,-1.7 -0.8,-2.8 0,-1.4 0.6,-2.6 1.7,-3.4 1.1,-0.8 2.7,-1.2 4.7,-1.2 1,0 2,0.1 2.9,0.3 0.9,0.2 1.8,0.5 2.8,1 l -1.4,3.4 c -0.7,-0.3 -1.5,-0.6 -2.2,-0.8 -0.7,-0.2 -1.4,-0.3 -1.9,-0.3 -0.9,0 -1.3,0.2 -1.3,0.6 0,0.3 0.2,0.5 0.5,0.7 0.3,0.2 1.2,0.6 2.6,1.1 1.1,0.4 1.9,0.9 2.4,1.3 0.5,0.4 0.9,0.9 1.2,1.5 0.2,0.5 0.3,1.2 0.3,2.1 z m 10.4,5 c -2.6,0 -4.6,-0.7 -6,-2.1 -1.4,-1.4 -2.1,-3.3 -2.1,-5.8 0,-2.6 0.7,-4.6 2,-6 1.3,-1.4 3.2,-2.1 5.6,-2.1 2.3,0 4.1,0.6 5.4,1.8 1.3,1.2 1.9,3 1.9,5.2 v 2.4 h -9.5 c 0,0.9 0.4,1.5 0.9,2 0.6,0.5 1.4,0.7 2.4,0.7 0.9,0 1.8,-0.1 2.6,-0.3 0.8,-0.2 1.6,-0.5 2.6,-0.9 v 3.8 c -0.8,0.4 -1.7,0.7 -2.6,0.9 -0.9,0.2 -1.9,0.4 -3.2,0.4 z M 351,91.7 c -0.6,0 -1.2,0.2 -1.6,0.6 -0.4,0.4 -0.7,1 -0.7,1.9 h 4.6 c 0,-0.7 -0.2,-1.3 -0.6,-1.8 -0.5,-0.4 -1,-0.7 -1.7,-0.7 z"
inkscape:connector-curvature="0" />
</g>
</g>
</g>
<g
transform="translate(15.041402,-31.140342)"
id="g3457-7-0-4">
<g
id="g14089-0-9-3-6-7"
transform="matrix(0.41553009,0,0,0.41553009,140.0087,9.8268355)">
<circle
id="circle14083-2-7-6-1-6"
r="41.299999"
cy="95.400002"
cx="325"
stroke-miterlimit="10"
style="fill:#ffffff;stroke:#939598;stroke-width:6;stroke-miterlimit:10" />
<g
id="g14087-3-3-1-5-5"
style="fill:#808285">
<path
id="path14085-7-6-2-5-6"
d="m 300.5,92.4 h -3.3 v 11.4 h -5.3 V 92.4 h -2 v -2.6 l 2.2,-1.3 v -0.3 c 0,-2 0.4,-3.5 1.2,-4.4 0.8,-0.9 2.2,-1.3 4,-1.3 0.7,0 1.4,0.1 2,0.2 0.6,0.1 1.4,0.3 2.2,0.6 l -1.1,3.4 c -0.7,-0.2 -1.3,-0.3 -1.9,-0.3 -0.4,0 -0.7,0.1 -0.9,0.4 -0.2,0.3 -0.3,0.7 -0.3,1.2 v 0.4 h 3.3 v 4 z m 12.2,11.4 -1,-2 h -0.1 c -0.7,0.9 -1.4,1.5 -2.2,1.8 -0.7,0.3 -1.7,0.5 -2.9,0.5 -1.5,0 -2.6,-0.4 -3.4,-1.3 -0.8,-0.9 -1.3,-2.1 -1.3,-3.7 0,-1.6 0.6,-2.9 1.7,-3.7 1.1,-0.8 2.8,-1.3 5,-1.4 h 2.5 v -0.2 c 0,-1.3 -0.6,-1.9 -1.9,-1.9 -1.1,0 -2.6,0.4 -4.3,1.1 l -1.5,-3.5 c 1.8,-0.9 4.1,-1.4 6.8,-1.4 2,0 3.5,0.5 4.6,1.5 1.1,1 1.6,2.4 1.6,4.1 v 10.1 z m -4,-3.5 c 0.6,0 1.2,-0.2 1.7,-0.6 0.5,-0.4 0.7,-0.9 0.7,-1.6 v -1.2 l -1.2,0.1 c -1.8,0.1 -2.6,0.7 -2.6,1.9 -0.1,1 0.4,1.4 1.4,1.4 z m 16.6,3.5 H 320 V 82.6 h 5.3 z m 15.6,-4.7 c 0,1.7 -0.6,2.9 -1.7,3.7 -1.1,0.8 -2.7,1.3 -4.9,1.3 -1.1,0 -2.1,-0.1 -3,-0.2 -0.8,-0.1 -1.7,-0.3 -2.6,-0.7 V 99 c 0.8,0.4 1.7,0.7 2.7,0.9 1,0.2 1.9,0.4 2.6,0.4 1.2,0 1.7,-0.3 1.7,-0.8 0,-0.3 -0.2,-0.5 -0.5,-0.7 -0.3,-0.2 -1.3,-0.6 -2.8,-1.2 -1.4,-0.6 -2.4,-1.2 -3,-2 -0.6,-0.7 -0.8,-1.7 -0.8,-2.8 0,-1.4 0.6,-2.6 1.7,-3.4 1.1,-0.8 2.7,-1.2 4.7,-1.2 1,0 2,0.1 2.9,0.3 0.9,0.2 1.8,0.5 2.8,1 l -1.4,3.4 c -0.7,-0.3 -1.5,-0.6 -2.2,-0.8 -0.7,-0.2 -1.4,-0.3 -1.9,-0.3 -0.9,0 -1.3,0.2 -1.3,0.6 0,0.3 0.2,0.5 0.5,0.7 0.3,0.2 1.2,0.6 2.6,1.1 1.1,0.4 1.9,0.9 2.4,1.3 0.5,0.4 0.9,0.9 1.2,1.5 0.2,0.5 0.3,1.2 0.3,2.1 z m 10.4,5 c -2.6,0 -4.6,-0.7 -6,-2.1 -1.4,-1.4 -2.1,-3.3 -2.1,-5.8 0,-2.6 0.7,-4.6 2,-6 1.3,-1.4 3.2,-2.1 5.6,-2.1 2.3,0 4.1,0.6 5.4,1.8 1.3,1.2 1.9,3 1.9,5.2 v 2.4 h -9.5 c 0,0.9 0.4,1.5 0.9,2 0.6,0.5 1.4,0.7 2.4,0.7 0.9,0 1.8,-0.1 2.6,-0.3 0.8,-0.2 1.6,-0.5 2.6,-0.9 v 3.8 c -0.8,0.4 -1.7,0.7 -2.6,0.9 -0.9,0.2 -1.9,0.4 -3.2,0.4 z M 351,91.7 c -0.6,0 -1.2,0.2 -1.6,0.6 -0.4,0.4 -0.7,1 -0.7,1.9 h 4.6 c 0,-0.7 -0.2,-1.3 -0.6,-1.8 -0.5,-0.4 -1,-0.7 -1.7,-0.7 z"
inkscape:connector-curvature="0" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 28 KiB

View File

@ -0,0 +1,472 @@
<?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 189.5"
version="1.1"
id="svg15613"
sodipodi:docname="category_curry_logic.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata15619">
<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="defs15617" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1016"
id="namedview15615"
showgrid="false"
inkscape:zoom="1.4142136"
inkscape:cx="90.554064"
inkscape:cy="50.728755"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g42748-5" />
<g
id="g42748"
transform="matrix(1.518149,0,0,1.518149,-147.54476,-49.770493)" />
<g
transform="translate(-138.93828,-10.503943)"
id="g42748-5">
<g
inkscape:transform-center-y="-8.9953127"
inkscape:transform-center-x="5.8146704"
transform="matrix(0.23118175,0.00513658,0.00915909,0.32311362,359.61458,32.515243)"
id="g1482-7-0-1-0-3-7-0"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10">
<path
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
id="path1478-7-9-0-19-0-09-6"
inkscape:connector-curvature="0"
style="stroke-width:35.52600098" />
<path
sodipodi:nodetypes="cc"
d="M 256.00808,84.703489 C 283.39188,81.262654 297.41031,82.245264 317.498,86.173"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)"
id="path1480-1-3-1-5-7-3-2"
inkscape:connector-curvature="0"
style="stroke-width:10.64900017;paint-order:markers fill stroke" />
</g>
<circle
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:3;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
id="circle15601-9-4-9-6"
r="86.952599"
cy="104.47703"
cx="318.12561" />
<circle
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:3;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
id="circle15601-9-4-9-6-1"
r="86.952599"
cy="105.13031"
cx="537.86786" />
</g>
<g
id="g10229"
transform="matrix(0.50804648,0,0,0.50804648,264.83001,41.229797)">
<circle
style="fill:#dedede;fill-opacity:1;stroke:none;stroke-width:2.57022929;stroke-miterlimit:10"
id="circle15603-3-6"
r="18.334303"
cy="65.832329"
cx="152.99588" />
<circle
style="fill:#dedede;fill-opacity:1;stroke:none;stroke-width:3.39405203;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
id="circle15601-9-4-6"
r="18.671675"
cy="37.181042"
cx="285.39355" />
<circle
style="fill:#dedede;fill-opacity:1;stroke:none;stroke-width:2.57022929;stroke-miterlimit:10"
id="circle15605-4-4"
r="18.334303"
cy="163.15147"
cx="306.88229" />
<circle
transform="rotate(-84.232776)"
style="fill:#dedede;fill-opacity:1;stroke:none;stroke-width:3.99253249;stroke-miterlimit:10"
id="circle3379-9"
r="16.369385"
cy="392.34567"
cx="-80.241524" />
<circle
style="fill:#f58235;stroke:#e76524;stroke-width:2.57022929;stroke-miterlimit:10"
id="circle15603-3"
r="18.334303"
cy="59.150921"
cx="149.86938" />
<g
inkscape:transform-center-y="-0.73403693"
inkscape:transform-center-x="-12.157065"
transform="matrix(-0.13566577,0.22680277,-0.32622049,-0.17338087,359.95583,54.987467)"
id="g1482-7-0-1-0-3"
style="display:inline;fill:#dddddd;stroke:#483737;stroke-width:6.38899994;stroke-miterlimit:10">
<path
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
id="path1478-7-9-0-19-0"
inkscape:connector-curvature="0"
style="stroke:#483737;stroke-width:35.52600098" />
<path
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)"
sodipodi:nodetypes="cc"
d="M 127.38575,78.377847 C 176.95734,66.301724 277.68509,72.076365 317.498,86.173"
id="path1480-1-3-1-5-7"
inkscape:connector-curvature="0"
style="fill:none;stroke:#483737;stroke-width:10.64900017;paint-order:markers fill stroke" />
</g>
<circle
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:3.39405203;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
id="circle15601-9-4"
r="18.671675"
cy="30.49963"
cx="280.26703" />
<g
inkscape:transform-center-y="-4.5768564"
inkscape:transform-center-x="-11.408259"
transform="matrix(-0.21605455,-0.15220095,-0.22774808,0.29088065,290.70694,52.449757)"
id="g1482-7-0-1-0-3-5-7"
style="display:inline;fill:#dddddd;stroke:#aa0000;stroke-width:6.38899994;stroke-miterlimit:10">
<path
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
id="path1478-7-9-0-19-0-0-2"
inkscape:connector-curvature="0"
style="stroke:#aa0000;stroke-width:35.52600098" />
<path
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)"
sodipodi:nodetypes="cc"
d="M 127.38575,78.377847 C 176.95734,66.301724 277.68509,72.076365 317.498,86.173"
id="path1480-1-3-1-5-7-4-7"
inkscape:connector-curvature="0"
style="fill:none;fill-opacity:1;stroke:#aa0000;stroke-width:10.64900017;stroke-opacity:1;paint-order:markers fill stroke" />
</g>
<circle
style="fill:#dedede;fill-opacity:1;stroke:none;stroke-width:2.57022929;stroke-miterlimit:10;stroke-opacity:1"
id="circle15605-2"
r="18.334303"
cy="112.26966"
cx="232.31758" />
<g
inkscape:transform-center-y="-12.167418"
inkscape:transform-center-x="0.5354074"
transform="matrix(0.22455705,0.13935147,-0.17868507,0.32334562,251.23249,27.461247)"
id="g1482-7-0-1-0-3-5"
style="display:inline;fill:#dddddd;stroke:#6c5353;stroke-width:6.38899994;stroke-miterlimit:10">
<path
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
id="path1478-7-9-0-19-0-0"
inkscape:connector-curvature="0"
style="stroke:#6c5353;stroke-width:35.52600098" />
<path
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)"
sodipodi:nodetypes="cc"
d="M 127.38575,78.377847 C 176.95734,66.301724 277.68509,72.076365 317.498,86.173"
id="path1480-1-3-1-5-7-4"
inkscape:connector-curvature="0"
style="fill:none;stroke:#6c5353;stroke-width:10.64900017;paint-order:markers fill stroke" />
</g>
<circle
style="fill:#ab6510;fill-opacity:1;stroke:#81510b;stroke-width:2.57022929;stroke-miterlimit:10;stroke-opacity:1"
id="circle15605"
r="18.334303"
cy="105.58823"
cx="227.19109" />
<g
inkscape:transform-center-y="-4.576857"
inkscape:transform-center-x="11.40825"
transform="matrix(0.21605455,-0.15220095,0.22774808,0.29088065,235.55142,101.4738)"
id="g1482-7-0-1-0-3-5-7-2"
style="display:inline;fill:#dddddd;stroke:#806600;stroke-width:6.38899994;stroke-miterlimit:10">
<path
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
id="path1478-7-9-0-19-0-0-2-2"
inkscape:connector-curvature="0"
style="stroke:#806600;stroke-width:35.52600098" />
<path
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)"
sodipodi:nodetypes="cc"
d="M 127.38575,78.377847 C 176.95734,66.301724 277.68509,72.076365 317.498,86.173"
id="path1480-1-3-1-5-7-4-7-6"
inkscape:connector-curvature="0"
style="fill:none;stroke:#806600;stroke-width:10.64900017;paint-order:markers fill stroke" />
</g>
<g
inkscape:transform-center-y="4.5768618"
inkscape:transform-center-x="-11.40825"
transform="matrix(-0.21605455,0.15220095,-0.22774808,-0.29088065,442.7336,167.45992)"
id="g1482-7-0-1-0-3-5-7-2-1"
style="display:inline;fill:#dddddd;stroke:#445500;stroke-width:6.38899994;stroke-miterlimit:10">
<path
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
id="path1478-7-9-0-19-0-0-2-2-0"
inkscape:connector-curvature="0"
style="stroke:#445500;stroke-width:35.52600098" />
<path
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)"
sodipodi:nodetypes="cc"
d="M 127.38575,78.377847 C 176.95734,66.301724 277.68509,72.076365 317.498,86.173"
id="path1480-1-3-1-5-7-4-7-6-6"
inkscape:connector-curvature="0"
style="fill:none;stroke:#445500;stroke-width:10.64900017;paint-order:markers fill stroke" />
</g>
<circle
transform="rotate(-84.232776)"
style="fill:#fce600;stroke:#ffdd00;stroke-width:3.99253249;stroke-miterlimit:10"
id="circle3379"
r="16.369385"
cy="386.25748"
cx="-74.496361" />
<g
inkscape:transform-center-y="-11.849154"
inkscape:transform-center-x="2.8428186"
transform="matrix(-0.17782756,0.19550462,0.26038086,0.26207354,230.93391,-39.380283)"
id="g1482-7-0-1-0-3-1"
style="display:inline;fill:#dddddd;stroke:#806600;stroke-width:6.38899994;stroke-miterlimit:10">
<path
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
id="path1478-7-9-0-19-0-5"
inkscape:connector-curvature="0"
style="stroke:#806600;stroke-width:35.52600098" />
<path
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)"
sodipodi:nodetypes="cc"
d="M 127.38575,78.377847 C 176.95734,66.301724 277.68509,72.076365 317.498,86.173"
id="path1480-1-3-1-5-7-9"
inkscape:connector-curvature="0"
style="fill:none;stroke:#806600;stroke-width:10.64900017;paint-order:markers fill stroke" />
</g>
<g
inkscape:transform-center-y="-6.8316466"
inkscape:transform-center-x="10.541054"
transform="matrix(0.2383419,-0.11418335,0.17624638,0.32468131,239.75153,70.619936)"
id="g1482-7-0-1-0-3-5-7-2-4"
style="display:inline;fill:#dddddd;stroke:#000080;stroke-width:6.38899994;stroke-miterlimit:10">
<path
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
id="path1478-7-9-0-19-0-0-2-2-9"
inkscape:connector-curvature="0"
style="stroke:#000080;stroke-width:35.52600098" />
<path
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)"
sodipodi:nodetypes="cc"
d="M 85.255937,126.08872 C 157.92012,89.606392 277.68509,72.076365 317.498,86.173"
id="path1480-1-3-1-5-7-4-7-6-0"
inkscape:connector-curvature="0"
style="fill:none;stroke:#000080;stroke-width:10.64900017;paint-order:markers fill stroke" />
</g>
<circle
style="fill:#39bced;stroke:#008dd2;stroke-width:2.57022929;stroke-miterlimit:10"
id="circle15605-4"
r="18.334303"
cy="158.23784"
cx="301.04865" />
</g>
<g
transform="matrix(0.6198535,0,0,0.6198535,8.6371147,27.44817)"
id="g10305">
<g
id="g15609"
transform="matrix(0.28216702,0,0,0.28216702,159.17989,89.595482)">
<circle
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:6;stroke-miterlimit:10;stroke-opacity:1"
id="circle15601"
r="85.599998"
cy="95.300003"
cx="292.39999" />
<circle
style="fill:#f58235;stroke:#e76524;stroke-width:6;stroke-miterlimit:10"
id="circle15603"
r="42.799999"
cy="95.300003"
cx="335.20001" />
<circle
style="fill:#39bced;stroke:#008dd2;stroke-width:6;stroke-miterlimit:10"
id="circle15605-6"
r="42.799999"
cy="95.300003"
cx="249.60001" />
</g>
<g
id="g42490"
transform="translate(79.928424,41.724612)">
<circle
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:1.6930021;stroke-miterlimit:10;stroke-opacity:1"
id="circle15601-9"
r="24.153496"
cy="43.775528"
cx="100.76691" />
<circle
style="fill:#f58235;stroke:#e76524;stroke-width:1.6930021;stroke-miterlimit:10"
id="circle15603-3-2"
r="12.076748"
cy="43.000397"
cx="101.21672" />
</g>
<circle
cx="272.77448"
cy="56.12978"
r="24.153496"
id="circle15601-9-4-9"
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:1.6930021;stroke-miterlimit:10;stroke-opacity:1" />
<g
id="g42515"
transform="translate(196.12557,28.570212)">
<circle
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:1.6930021;stroke-miterlimit:10;stroke-opacity:1"
id="circle15601-4"
r="24.153496"
cy="124.38907"
cx="104.64257" />
<circle
style="fill:#39bced;stroke:#008dd2;stroke-width:1.6930021;stroke-miterlimit:10"
id="circle15605-4-1"
r="12.076748"
cy="124.38907"
cx="104.96791" />
</g>
<g
id="g42486"
transform="rotate(-84.232776,300.18754,-2.7233749)">
<circle
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:1.6930021;stroke-miterlimit:10;stroke-opacity:1"
id="circle15601-9-4-4"
r="24.153496"
cy="61.603523"
cx="190.35664" />
<circle
style="fill:#fce600;stroke:#ffdd00;stroke-width:2.62986875;stroke-miterlimit:10"
id="circle3379-2"
r="10.782463"
cy="61.603519"
cx="190.2323" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-1-0"
transform="matrix(-0.20091194,-0.11151814,-0.16988151,0.27261396,308.47791,69.528672)">
<path
style="stroke-width:35.52600098"
inkscape:connector-curvature="0"
id="path1478-7-9-0-19"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z" />
<path
style="stroke-width:10.64900017;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-1-5"
d="M 256.00808,84.703489 C 283.39188,81.262654 297.41031,82.245264 317.498,86.173"
sodipodi:nodetypes="cc"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-1-0-3-7"
transform="matrix(-0.11795826,0.19719978,-0.2836412,-0.15075067,356.34872,64.153902)"
inkscape:transform-center-x="-10.57029"
inkscape:transform-center-y="-0.63822879">
<path
style="stroke-width:35.52600098"
inkscape:connector-curvature="0"
id="path1478-7-9-0-19-0-09"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z" />
<path
style="stroke-width:10.64900017;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-1-5-7-3"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)"
d="M 256.00808,84.703489 C 283.39188,81.262654 297.41031,82.245264 317.498,86.173"
sodipodi:nodetypes="cc" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-1-0-8"
transform="matrix(0.18964306,0.12975907,-0.16775947,0.2739249,253.91699,36.089652)"
inkscape:transform-center-x="32.772803"
inkscape:transform-center-y="75.5104">
<path
style="stroke-width:35.52600098"
inkscape:connector-curvature="0"
id="path1478-7-9-0-19-6"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z" />
<path
style="stroke-width:10.64900017;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-1-5-8"
d="M 256.00808,84.703489 C 283.39188,81.262654 297.41031,82.245264 317.498,86.173"
sodipodi:nodetypes="cc"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-1-0-8-8"
transform="matrix(0.17074794,-0.15377595,0.22674655,0.22751725,221.42119,120.64748)"
inkscape:transform-center-x="-18.084376"
inkscape:transform-center-y="3.795282">
<path
style="stroke-width:35.52600098"
inkscape:connector-curvature="0"
id="path1478-7-9-0-19-6-4"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z" />
<path
style="stroke-width:10.64900017;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-1-5-8-3"
d="M 256.00808,84.703489 C 283.39188,81.262654 297.41031,82.245264 317.498,86.173"
sodipodi:nodetypes="cc"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-1-0-8-8-1"
transform="matrix(-0.17074794,0.15377595,-0.22674655,-0.22751725,432.69864,146.82992)"
inkscape:transform-center-x="18.084381"
inkscape:transform-center-y="-3.7952853">
<path
style="stroke-width:35.52600098"
inkscape:connector-curvature="0"
id="path1478-7-9-0-19-6-4-4"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z" />
<path
style="stroke-width:10.64900017;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-1-5-8-3-9"
d="M 256.00808,84.703489 C 283.39188,81.262654 297.41031,82.245264 317.498,86.173"
sodipodi:nodetypes="cc"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -0,0 +1,192 @@
<?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 200"
version="1.1"
id="svg3397"
sodipodi:docname="hilbert_formula.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
width="595.29999"
height="200">
<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" />
<dc:title></dc:title>
</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="1920"
inkscape:window-height="1016"
id="namedview3399"
showgrid="false"
inkscape:zoom="1.8797244"
inkscape:cx="328.75319"
inkscape:cy="115.62321"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg3397"
inkscape:document-rotation="0"
inkscape:pagecheckerboard="0"
width="700px" />
<circle
r="84.438507"
cy="99.184853"
cx="201.85922"
id="path3381-9-7-8"
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:2.33681941;stroke-linecap:square;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke" />
<g
transform="matrix(0.14061169,-0.01617111,0.03250886,0.19516443,160.6353,58.830358)"
id="g1482-7-0-7-2-9"
style="display:inline;fill:none;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10">
<path
d="m 300.63709,231.37428 c 5.07924,-1.92282 10.35434,-3.62219 15.75885,-5.21028 -4.09679,-3.38762 -8.45059,-6.65265 -13.06188,-9.79637 -0.92392,5.24208 -1.39222,9.36303 -2.69697,15.00665 z"
id="path1478-7-9-4-9-6"
inkscape:connector-curvature="0"
style="fill:none;stroke-width:16.09810066" />
<path
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)"
sodipodi:nodetypes="cc"
d="M 153.43841,83.202404 C 192.22734,72.827888 281.27803,76.046336 317.498,86.173"
id="path1480-1-3-4-8-09"
inkscape:connector-curvature="0"
style="fill:none;stroke-width:10.64900017;paint-order:markers fill stroke" />
</g>
<g
transform="matrix(0.47383289,0,0,0.47383289,69.67573,-36.470147)"
id="g8872-7-2-0">
<circle
style="opacity:0.12999998;stroke:#000000;stroke-width:4.55217981;stroke-miterlimit:10"
id="circle3375-7-5-7-4"
r="18.663952"
cy="289.40768"
cx="331.20029" />
<circle
style="fill:#54b948;stroke:#00873a;stroke-width:4.55217981;stroke-miterlimit:10"
id="circle3389-30-0-1-6"
r="18.663952"
cy="283.1105"
cx="327.55856" />
</g>
<g
transform="matrix(0.2499496,-0.00465558,0.02415555,0.34862353,227.09358,25.079118)"
id="g1482-7-0-7-1-0-9"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10">
<path
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
id="path1478-7-9-4-5-3-3"
inkscape:connector-curvature="0"
style="stroke-width:35.52600098" />
<path
sodipodi:nodetypes="cc"
d="M 256.00808,84.703489 C 283.39188,81.262654 297.41031,82.245264 317.498,86.173"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)"
id="path1480-1-3-4-21-0-4"
inkscape:connector-curvature="0"
style="stroke-width:10.64900017;paint-order:markers fill stroke" />
</g>
<circle
r="80.02655"
cy="102.42808"
cx="406.48734"
id="path3381-9-4-9-7-1-6-3-3"
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:2.26771665;stroke-linecap:square;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke" />
<circle
r="33.50275"
cy="103.64426"
cx="450.94601"
id="path3381-9-4-9-7-2-2-7"
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:2.3428266;stroke-linecap:square;stroke-miterlimit:10;stroke-opacity:1;paint-order:markers fill stroke" />
<g
transform="matrix(0.40302429,0,0,0.40302429,320.20456,-11.652352)"
id="g8872-7-2-4-1-0-2-7-6-4-2-0-4">
<circle
style="opacity:0.12999998;stroke:#000000;stroke-width:4.55217981;stroke-miterlimit:10"
id="circle3375-7-5-7-8-8-0-6-3-3-3-3-6-5"
r="18.663952"
cy="289.40768"
cx="331.20029" />
<circle
style="fill:#54b948;stroke:#00873a;stroke-width:4.55217981;stroke-miterlimit:10"
id="circle3389-30-0-1-8-5-8-1-6-2-0-7-1-2"
r="18.663952"
cy="283.1105"
cx="327.55856" />
</g>
<circle
r="33.50275"
cy="102.42808"
cx="364.73184"
id="path3381-9-4-8-4-4-7-5-5-5"
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:2.3428266;stroke-linecap:square;stroke-miterlimit:10;stroke-opacity:1;paint-order:markers fill stroke" />
<g
transform="matrix(0.45320127,0,0,0.45320127,277.83637,127.10157)"
id="g1878-57-8-5-5-8-9-5-4">
<circle
style="opacity:0.12999998;stroke:#000000;stroke-width:4.46563005;stroke-miterlimit:10"
id="circle3369-9-9-0-2-6-2-4-7"
r="18.309078"
cy="-48.430031"
cx="198.98453" />
<circle
style="fill:#d71920;stroke:#be1e2d;stroke-width:4.46563005;stroke-miterlimit:10"
id="circle3383-8-4-3-5-8-2-7-4"
r="18.309078"
cy="-54.607491"
cx="195.41203" />
</g>
<path
id="path1272-6-4-8-8-6-4"
d="m 343.77052,100.20775 7.93904,-0.968172 v 3.872702"
style="fill:#efefef;fill-opacity:1;stroke:#666666;stroke-width:1.74710691;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
<g
style="stroke:#808080;stroke-width:5.81758022;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.46795338,0.02870274,-0.02887525,0.4651576,269.63104,54.573188)"
id="g1730-53-4-1-7-4-9-5-3">
<path
id="path1717-2-2-0-4-3-7-6-0"
d="m 287.69326,71.771896 11.81056,20.289944 9.69072,-21.501284"
style="fill:none;stroke:#808080;stroke-width:5.81758022;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0.45320127,0,0,0.45320127,98.954962,122.80171)"
id="g1878-57-8-5-5-8-9-5-4-5">
<circle
style="opacity:0.12999998;stroke:#000000;stroke-width:4.46563005;stroke-miterlimit:10"
id="circle3369-9-9-0-2-6-2-4-7-0"
r="18.309078"
cy="-48.430031"
cx="198.98453" />
<circle
style="fill:#d71920;stroke:#be1e2d;stroke-width:4.46563005;stroke-miterlimit:10"
id="circle3383-8-4-3-5-8-2-7-4-4"
r="18.309078"
cy="-54.607491"
cx="195.41203" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.5 KiB

View File

@ -0,0 +1,905 @@
<?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 800"
version="1.1"
id="svg3397"
sodipodi:docname="hilbert_proof.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
width="595.29999"
height="800">
<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" />
<dc:title />
</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="1920"
inkscape:window-height="1016"
id="namedview3399"
showgrid="false"
inkscape:zoom="2.4699062"
inkscape:cx="429.40854"
inkscape:cy="672.62134"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg3397"
inkscape:document-rotation="0"
inkscape:pagecheckerboard="0"
width="700px" />
<g
id="g9442"
transform="matrix(0.75024244,0,0,0.75024244,834.14511,80.693175)"
style="paint-order:fill markers stroke">
<g
id="g2445-3-1"
transform="matrix(2.4458076,0,0,2.2485166,-117.57238,88.039232)"
style="fill:#000000;fill-opacity:0.11290301;stroke:none;stroke-width:1.32404006;stroke-miterlimit:4;stroke-dasharray:none;paint-order:fill markers stroke" />
</g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:30.00970078px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75024301"
x="864.04553"
y="42.159145"
id="text9288"><tspan
sodipodi:role="line"
id="tspan9286"
x="864.04553"
y="68.710693"
style="stroke-width:0.75024301" /></text>
<g
id="g5856-0"
transform="translate(566.4931,-27.012515)" />
<g
id="g933"
transform="matrix(1.4559224,0,0,1.4559224,112.55985,4.544085)">
<circle
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:1.60916996;stroke-linecap:square;stroke-miterlimit:10;stroke-opacity:1;paint-order:markers fill stroke"
id="path3381-9-4"
cx="48.510403"
cy="31.890472"
r="23.011356" />
<g
id="g1878-57"
transform="matrix(0.3112812,0,0,0.3112812,-12.473227,48.461323)">
<circle
cx="198.98453"
cy="-48.430031"
r="18.309078"
id="circle3369-9"
style="opacity:0.12999998;stroke:#000000;stroke-width:4.46563005;stroke-miterlimit:10" />
<circle
cx="195.41203"
cy="-54.607491"
r="18.309078"
id="circle3383-8"
style="fill:#d71920;stroke:#be1e2d;stroke-width:4.46563005;stroke-miterlimit:10" />
</g>
<circle
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:1.60916996;stroke-linecap:square;stroke-miterlimit:10;stroke-opacity:1;paint-order:markers fill stroke"
id="path3381-9-4-8"
cx="111.97485"
cy="32.803577"
r="23.011356" />
<g
id="g1878-57-8"
transform="matrix(0.3112812,0,0,0.3112812,51.257223,48.975434)">
<circle
cx="198.98453"
cy="-48.430031"
r="18.309078"
id="circle3369-9-9"
style="opacity:0.12999998;stroke:#000000;stroke-width:4.46563005;stroke-miterlimit:10" />
<circle
cx="195.41203"
cy="-54.607491"
r="18.309078"
id="circle3383-8-4"
style="fill:#d71920;stroke:#be1e2d;stroke-width:4.46563005;stroke-miterlimit:10" />
</g>
<path
inkscape:connector-curvature="0"
style="fill:#efefef;fill-opacity:1;stroke:#666666;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 96.802463,31.536922 5.452927,-0.664991 v 2.659964"
id="path1272" />
<g
id="g1730-53-4"
transform="matrix(0.32141368,0.01971447,-0.01983296,0.3194934,-14.421237,-0.713128)"
style="stroke:#808080;stroke-width:5.81758022;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none">
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#808080;stroke-width:5.81758022;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 287.69326,71.771896 11.81056,20.289944 9.69072,-21.501284"
id="path1717-2-2" />
</g>
</g>
<g
id="g933-3"
transform="matrix(0.87883913,0,0,0.87883913,425.08479,23.890258)">
<circle
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:1.60916996;stroke-linecap:square;stroke-miterlimit:10;stroke-opacity:1;paint-order:markers fill stroke"
id="path3381-9-4-6"
cx="48.510403"
cy="31.890472"
r="23.011356" />
<g
id="g1878-57-7"
transform="matrix(0.3112812,0,0,0.3112812,-12.473227,48.461323)">
<circle
cx="198.98453"
cy="-48.430031"
r="18.309078"
id="circle3369-9-5"
style="opacity:0.12999998;stroke:#000000;stroke-width:4.46563005;stroke-miterlimit:10" />
<circle
cx="195.41203"
cy="-54.607491"
r="18.309078"
id="circle3383-8-3"
style="fill:#d71920;stroke:#be1e2d;stroke-width:4.46563005;stroke-miterlimit:10" />
</g>
<circle
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:1.60916996;stroke-linecap:square;stroke-miterlimit:10;stroke-opacity:1;paint-order:markers fill stroke"
id="path3381-9-4-8-5"
cx="111.97485"
cy="32.803577"
r="23.011356" />
<g
id="g1878-57-8-6"
transform="matrix(0.3112812,0,0,0.3112812,51.257223,48.975434)">
<circle
cx="198.98453"
cy="-48.430031"
r="18.309078"
id="circle3369-9-9-2"
style="opacity:0.12999998;stroke:#000000;stroke-width:4.46563005;stroke-miterlimit:10" />
<circle
cx="195.41203"
cy="-54.607491"
r="18.309078"
id="circle3383-8-4-9"
style="fill:#d71920;stroke:#be1e2d;stroke-width:4.46563005;stroke-miterlimit:10" />
</g>
<path
inkscape:connector-curvature="0"
style="fill:#efefef;fill-opacity:1;stroke:#666666;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 96.802463,31.536922 5.452927,-0.664991 v 2.659964"
id="path1272-1" />
<g
id="g1730-53-4-2"
transform="matrix(0.32141368,0.01971447,-0.01983296,0.3194934,-14.421237,-0.713128)"
style="stroke:#808080;stroke-width:5.81758022;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none">
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#808080;stroke-width:5.81758022;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 287.69326,71.771896 11.81056,20.289944 9.69072,-21.501284"
id="path1717-2-2-7" />
</g>
</g>
<g
id="g5814-3-0"
transform="matrix(0.69732141,0,0,0.69732141,209.85302,29.644931)">
<circle
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:1.63626122;stroke-linecap:square;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
id="path3381-9-7-9-5-3"
cx="369.62793"
cy="219.15921"
r="28.044003" />
<g
style="display:inline;fill:none;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-7-2-3-0-6-6"
transform="matrix(0.11230129,-0.01291526,0.02596361,0.15587052,332.62186,187.38766)">
<path
style="fill:none;stroke-width:16.09810066"
inkscape:connector-curvature="0"
id="path1478-7-9-4-9-2-6-7-0"
d="m 300.63709,231.37428 c 5.07924,-1.92282 10.35434,-3.62219 15.75885,-5.21028 -4.09679,-3.38762 -8.45059,-6.65265 -13.06188,-9.79637 -0.92392,5.24208 -1.39222,9.36303 -2.69697,15.00665 z" />
<path
style="fill:none;stroke-width:10.64900017;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-4-8-6-2-4-6"
d="M 153.43841,83.202404 C 192.22734,72.827888 281.27803,76.046336 317.498,86.173"
sodipodi:nodetypes="cc"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)" />
</g>
<g
id="g8872-7-2-4-1-0-2"
transform="matrix(0.37843257,0,0,0.37843257,259.97558,111.58779)">
<circle
cx="331.20029"
cy="289.40768"
r="18.663952"
id="circle3375-7-5-7-8-8-0-6"
style="opacity:0.12999998;stroke:#000000;stroke-width:4.55217981;stroke-miterlimit:10" />
<circle
cx="327.55856"
cy="283.1105"
r="18.663952"
id="circle3389-30-0-1-8-5-8-1"
style="fill:#54b948;stroke:#00873a;stroke-width:4.55217981;stroke-miterlimit:10" />
</g>
<g
id="g1878-5-9-6-8"
transform="matrix(0.36195488,0,0,0.36195488,282.80817,238.43199)">
<circle
cx="198.98453"
cy="-48.430031"
r="18.309078"
id="circle3369-5-9-3-7"
style="opacity:0.12999998;stroke:#000000;stroke-width:4.46563005;stroke-miterlimit:10" />
<circle
cx="195.41203"
cy="-54.607491"
r="18.309078"
id="circle3383-6-9-7-9"
style="fill:#d71920;stroke:#be1e2d;stroke-width:4.46563005;stroke-miterlimit:10" />
</g>
</g>
<circle
r="80.02655"
cy="330.2598"
cx="145.69334"
id="path3381-9-4-9-7-1"
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:2.26771665;stroke-linecap:square;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke" />
<circle
r="33.50275"
cy="180.7561"
cx="184.19363"
id="path3381-9-4-9"
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:2.3428266;stroke-linecap:square;stroke-miterlimit:10;stroke-opacity:1;paint-order:markers fill stroke" />
<circle
r="33.50275"
cy="182.08551"
cx="276.59296"
id="path3381-9-4-8-4"
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:2.3428266;stroke-linecap:square;stroke-miterlimit:10;stroke-opacity:1;paint-order:markers fill stroke" />
<g
transform="matrix(0.45320127,0,0,0.45320127,188.19279,205.63047)"
id="g1878-57-8-5">
<circle
style="opacity:0.12999998;stroke:#000000;stroke-width:4.46563005;stroke-miterlimit:10"
id="circle3369-9-9-0"
r="18.309078"
cy="-48.430031"
cx="198.98453" />
<circle
style="fill:#d71920;stroke:#be1e2d;stroke-width:4.46563005;stroke-miterlimit:10"
id="circle3383-8-4-3"
r="18.309078"
cy="-54.607491"
cx="195.41203" />
</g>
<path
id="path1272-6"
d="m 254.50312,180.24135 7.93904,-0.96817 v 3.8727"
style="fill:#efefef;fill-opacity:1;stroke:#666666;stroke-width:1.74710691;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
<g
style="stroke:#808080;stroke-width:5.81758022;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.46795338,0.02870274,-0.02887525,0.4651576,92.570047,133.28778)"
id="g1730-53-4-1">
<path
id="path1717-2-2-0"
d="m 287.69326,71.771896 11.81056,20.289944 9.69072,-21.501284"
style="fill:none;stroke:#808080;stroke-width:5.81758022;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0.40302429,0,0,0.40302429,53.452157,65.459475)"
id="g8872-7-2-4-1-0-2-7-6">
<circle
style="opacity:0.12999998;stroke:#000000;stroke-width:4.55217981;stroke-miterlimit:10"
id="circle3375-7-5-7-8-8-0-6-3-3"
r="18.663952"
cy="289.40768"
cx="331.20029" />
<circle
style="fill:#54b948;stroke:#00873a;stroke-width:4.55217981;stroke-miterlimit:10"
id="circle3389-30-0-1-8-5-8-1-6-2"
r="18.663952"
cy="283.1105"
cx="327.55856" />
</g>
<circle
r="33.50275"
cy="331.47598"
cx="190.15202"
id="path3381-9-4-9-7"
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:2.3428266;stroke-linecap:square;stroke-miterlimit:10;stroke-opacity:1;paint-order:markers fill stroke" />
<circle
r="33.50275"
cy="332.80539"
cx="282.5513"
id="path3381-9-4-8-4-4"
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:2.3428266;stroke-linecap:square;stroke-miterlimit:10;stroke-opacity:1;paint-order:markers fill stroke" />
<g
transform="matrix(0.45320127,0,0,0.45320127,194.15118,356.35035)"
id="g1878-57-8-5-5">
<circle
style="opacity:0.12999998;stroke:#000000;stroke-width:4.46563005;stroke-miterlimit:10"
id="circle3369-9-9-0-2"
r="18.309078"
cy="-48.430031"
cx="198.98453" />
<circle
style="fill:#d71920;stroke:#be1e2d;stroke-width:4.46563005;stroke-miterlimit:10"
id="circle3383-8-4-3-5"
r="18.309078"
cy="-54.607491"
cx="195.41203" />
</g>
<path
id="path1272-6-4"
d="m 260.46151,330.96123 7.93904,-0.96817 v 3.8727"
style="fill:#efefef;fill-opacity:1;stroke:#666666;stroke-width:1.74710691;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
<g
style="stroke:#808080;stroke-width:5.81758022;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.46795338,0.02870274,-0.02887525,0.4651576,99.280787,284.38384)"
id="g1730-53-4-1-7">
<path
id="path1717-2-2-0-4"
d="m 287.69326,71.771896 11.81056,20.289944 9.69072,-21.501284"
style="fill:none;stroke:#808080;stroke-width:5.81758022;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0.40302429,0,0,0.40302429,59.410547,216.17936)"
id="g8872-7-2-4-1-0-2-7-6-4">
<circle
style="opacity:0.12999998;stroke:#000000;stroke-width:4.55217981;stroke-miterlimit:10"
id="circle3375-7-5-7-8-8-0-6-3-3-3"
r="18.663952"
cy="289.40768"
cx="331.20029" />
<circle
style="fill:#54b948;stroke:#00873a;stroke-width:4.55217981;stroke-miterlimit:10"
id="circle3389-30-0-1-8-5-8-1-6-2-0"
r="18.663952"
cy="283.1105"
cx="327.55856" />
</g>
<circle
r="33.50275"
cy="330.2598"
cx="103.93783"
id="path3381-9-4-8-4-4-7"
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:2.3428266;stroke-linecap:square;stroke-miterlimit:10;stroke-opacity:1;paint-order:markers fill stroke" />
<g
transform="matrix(0.45320127,0,0,0.45320127,17.042365,354.93329)"
id="g1878-57-8-5-5-8">
<circle
style="opacity:0.12999998;stroke:#000000;stroke-width:4.46563005;stroke-miterlimit:10"
id="circle3369-9-9-0-2-6"
r="18.309078"
cy="-48.430031"
cx="198.98453" />
<circle
style="fill:#d71920;stroke:#be1e2d;stroke-width:4.46563005;stroke-miterlimit:10"
id="circle3383-8-4-3-5-8"
r="18.309078"
cy="-54.607491"
cx="195.41203" />
</g>
<path
id="path1272-6-4-8"
d="m 82.976507,328.03946 7.93904,-0.96817 v 3.8727"
style="fill:#efefef;fill-opacity:1;stroke:#666666;stroke-width:1.74710691;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
<g
style="stroke:#808080;stroke-width:5.81758022;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.46795338,0.02870274,-0.02887525,0.4651576,8.8370333,282.4049)"
id="g1730-53-4-1-7-4">
<path
id="path1717-2-2-0-4-3"
d="m 287.69326,71.771896 11.81056,20.289944 9.69072,-21.501284"
style="fill:none;stroke:#808080;stroke-width:5.81758022;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
</g>
<g
id="g4872"
transform="translate(54.503424,39.68622)">
<g
style="display:inline;fill:none;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-7-2-8"
transform="matrix(0.08277176,-0.00946283,0.0190578,0.11488848,413.58362,263.93282)">
<path
style="fill:none;stroke-width:16.09810066"
inkscape:connector-curvature="0"
id="path1478-7-9-4-9-4"
d="m 300.63709,231.37428 c 5.07924,-1.92282 10.35434,-3.62219 15.75885,-5.21028 -4.09679,-3.38762 -8.45059,-6.65265 -13.06188,-9.79637 -0.92392,5.24208 -1.39222,9.36303 -2.69697,15.00665 z" />
<path
style="fill:none;stroke-width:10.64900017;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-4-8-0"
d="M 153.43841,83.202404 C 192.22734,72.827888 281.27803,76.046336 317.498,86.173"
sodipodi:nodetypes="cc"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)" />
</g>
<circle
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:1.37901151;stroke-linecap:square;stroke-miterlimit:10;stroke-opacity:1;paint-order:markers fill stroke"
id="path3381-9"
cx="413.11859"
cy="286.47845"
r="19.720037" />
<circle
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:1.37919581;stroke-linecap:square;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
id="path3381"
cx="465.9227"
cy="288.06058"
r="19.720037" />
<g
id="g1878"
transform="matrix(0.26675857,0,0,0.26675857,360.85744,300.67917)">
<circle
cx="198.98453"
cy="-48.430031"
r="18.309078"
id="circle3369"
style="opacity:0.12999998;stroke:#000000;stroke-width:4.46563005;stroke-miterlimit:10" />
<circle
cx="195.41203"
cy="-54.607491"
r="18.309078"
id="circle3383"
style="fill:#d71920;stroke:#be1e2d;stroke-width:4.46563005;stroke-miterlimit:10" />
</g>
<g
id="g8872-7-2"
transform="matrix(0.27890254,0,0,0.27890254,362.6725,208.91357)">
<circle
cx="331.20029"
cy="289.40768"
r="18.663952"
id="circle3375-7-5-7"
style="opacity:0.12999998;stroke:#000000;stroke-width:4.55217981;stroke-miterlimit:10" />
<circle
cx="327.55856"
cy="283.1105"
r="18.663952"
id="circle3389-30-0-1"
style="fill:#54b948;stroke:#00873a;stroke-width:4.55217981;stroke-miterlimit:10" />
</g>
<g
id="g1730-53-4-1-7-4-7"
transform="matrix(0.23292167,0.01428666,-0.01437252,0.23153009,397.53167,264.74846)"
style="stroke:#808080;stroke-width:5.81758022;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none">
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#808080;stroke-width:5.81758022;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 287.69326,71.771896 11.81056,20.289944 9.69072,-21.501284"
id="path1717-2-2-0-4-3-0" />
</g>
<g
id="g1878-9"
transform="matrix(0.26675857,0,0,0.26675857,424.85927,303.26659)">
<circle
cx="198.98453"
cy="-48.430031"
r="18.309078"
id="circle3369-3"
style="opacity:0.12999998;stroke:#000000;stroke-width:4.46563005;stroke-miterlimit:10" />
<circle
cx="195.41203"
cy="-54.607491"
r="18.309078"
id="circle3383-60"
style="fill:#d71920;stroke:#be1e2d;stroke-width:4.46563005;stroke-miterlimit:10" />
</g>
</g>
<circle
r="80.02655"
cy="505.58887"
cx="145.1442"
id="path3381-9-4-9-7-1-6"
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:2.26771665;stroke-linecap:square;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke" />
<circle
r="33.50275"
cy="506.80505"
cx="189.60287"
id="path3381-9-4-9-7-2"
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:2.3428266;stroke-linecap:square;stroke-miterlimit:10;stroke-opacity:1;paint-order:markers fill stroke" />
<g
style="stroke:#808080;stroke-width:5.81758022;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.46795338,0.02870274,-0.02887525,0.4651576,98.731647,459.71293)"
id="g1730-53-4-1-7-2">
<path
id="path1717-2-2-0-4-0"
d="m 287.69326,71.771896 11.81056,20.289944 9.69072,-21.501284"
style="fill:none;stroke:#808080;stroke-width:5.81758022;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0.40302429,0,0,0.40302429,58.861407,391.50845)"
id="g8872-7-2-4-1-0-2-7-6-4-2">
<circle
style="opacity:0.12999998;stroke:#000000;stroke-width:4.55217981;stroke-miterlimit:10"
id="circle3375-7-5-7-8-8-0-6-3-3-3-3"
r="18.663952"
cy="289.40768"
cx="331.20029" />
<circle
style="fill:#54b948;stroke:#00873a;stroke-width:4.55217981;stroke-miterlimit:10"
id="circle3389-30-0-1-8-5-8-1-6-2-0-7"
r="18.663952"
cy="283.1105"
cx="327.55856" />
</g>
<circle
r="33.50275"
cy="505.58887"
cx="103.38868"
id="path3381-9-4-8-4-4-7-5"
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:2.3428266;stroke-linecap:square;stroke-miterlimit:10;stroke-opacity:1;paint-order:markers fill stroke" />
<g
transform="matrix(0.45320127,0,0,0.45320127,16.493222,530.26237)"
id="g1878-57-8-5-5-8-9">
<circle
style="opacity:0.12999998;stroke:#000000;stroke-width:4.46563005;stroke-miterlimit:10"
id="circle3369-9-9-0-2-6-2"
r="18.309078"
cy="-48.430031"
cx="198.98453" />
<circle
style="fill:#d71920;stroke:#be1e2d;stroke-width:4.46563005;stroke-miterlimit:10"
id="circle3383-8-4-3-5-8-2"
r="18.309078"
cy="-54.607491"
cx="195.41203" />
</g>
<path
id="path1272-6-4-8-8"
d="m 82.427367,503.36855 7.93904,-0.96817 v 3.8727"
style="fill:#efefef;fill-opacity:1;stroke:#666666;stroke-width:1.74710691;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
<g
style="stroke:#808080;stroke-width:5.81758022;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.46795338,0.02870274,-0.02887525,0.4651576,8.2878923,457.73399)"
id="g1730-53-4-1-7-4-9">
<path
id="path1717-2-2-0-4-3-7"
d="m 287.69326,71.771896 11.81056,20.289944 9.69072,-21.501284"
style="fill:none;stroke:#808080;stroke-width:5.81758022;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
</g>
<g
id="g4872-3"
transform="translate(52.612537,221.42273)">
<g
style="display:inline;fill:none;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-7-2-8-6"
transform="matrix(0.08277176,-0.00946283,0.0190578,0.11488848,413.58362,263.93282)">
<path
style="fill:none;stroke-width:16.09810066"
inkscape:connector-curvature="0"
id="path1478-7-9-4-9-4-1"
d="m 300.63709,231.37428 c 5.07924,-1.92282 10.35434,-3.62219 15.75885,-5.21028 -4.09679,-3.38762 -8.45059,-6.65265 -13.06188,-9.79637 -0.92392,5.24208 -1.39222,9.36303 -2.69697,15.00665 z" />
<path
style="fill:none;stroke-width:10.64900017;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-4-8-0-2"
d="M 153.43841,83.202404 C 192.22734,72.827888 281.27803,76.046336 317.498,86.173"
sodipodi:nodetypes="cc"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)" />
</g>
<circle
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:1.37901151;stroke-linecap:square;stroke-miterlimit:10;stroke-opacity:1;paint-order:markers fill stroke"
id="path3381-9-9"
cx="413.11859"
cy="286.47845"
r="19.720037" />
<circle
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:1.37919581;stroke-linecap:square;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
id="path3381-3"
cx="465.9227"
cy="288.06058"
r="19.720037" />
<g
id="g1878-1"
transform="matrix(0.26675857,0,0,0.26675857,360.85744,300.67917)">
<circle
cx="198.98453"
cy="-48.430031"
r="18.309078"
id="circle3369-94"
style="opacity:0.12999998;stroke:#000000;stroke-width:4.46563005;stroke-miterlimit:10" />
<circle
cx="195.41203"
cy="-54.607491"
r="18.309078"
id="circle3383-7"
style="fill:#d71920;stroke:#be1e2d;stroke-width:4.46563005;stroke-miterlimit:10" />
</g>
<g
id="g8872-7-2-8"
transform="matrix(0.27890254,0,0,0.27890254,362.6725,208.91357)">
<circle
cx="331.20029"
cy="289.40768"
r="18.663952"
id="circle3375-7-5-7-45"
style="opacity:0.12999998;stroke:#000000;stroke-width:4.55217981;stroke-miterlimit:10" />
<circle
cx="327.55856"
cy="283.1105"
r="18.663952"
id="circle3389-30-0-1-0"
style="fill:#54b948;stroke:#00873a;stroke-width:4.55217981;stroke-miterlimit:10" />
</g>
<g
id="g1730-53-4-1-7-4-7-3"
transform="matrix(0.23292167,0.01428666,-0.01437252,0.23153009,397.53167,264.74846)"
style="stroke:#808080;stroke-width:5.81758022;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none">
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#808080;stroke-width:5.81758022;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 287.69326,71.771896 11.81056,20.289944 9.69072,-21.501284"
id="path1717-2-2-0-4-3-0-6" />
</g>
<g
id="g1878-9-1"
transform="matrix(0.26675857,0,0,0.26675857,424.85927,303.26659)">
<circle
cx="198.98453"
cy="-48.430031"
r="18.309078"
id="circle3369-3-0"
style="opacity:0.12999998;stroke:#000000;stroke-width:4.46563005;stroke-miterlimit:10" />
<circle
cx="195.41203"
cy="-54.607491"
r="18.309078"
id="circle3383-60-6"
style="fill:#d71920;stroke:#be1e2d;stroke-width:4.46563005;stroke-miterlimit:10" />
</g>
</g>
<circle
r="80.02655"
cy="508.78076"
cx="328.9899"
id="path3381-9-4-9-7-1-6-3"
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:2.26771665;stroke-linecap:square;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke" />
<circle
r="33.50275"
cy="509.99695"
cx="373.44858"
id="path3381-9-4-9-7-2-2"
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:2.3428266;stroke-linecap:square;stroke-miterlimit:10;stroke-opacity:1;paint-order:markers fill stroke" />
<g
transform="matrix(0.40302429,0,0,0.40302429,242.70715,394.70039)"
id="g8872-7-2-4-1-0-2-7-6-4-2-0">
<circle
style="opacity:0.12999998;stroke:#000000;stroke-width:4.55217981;stroke-miterlimit:10"
id="circle3375-7-5-7-8-8-0-6-3-3-3-3-6"
r="18.663952"
cy="289.40768"
cx="331.20029" />
<circle
style="fill:#54b948;stroke:#00873a;stroke-width:4.55217981;stroke-miterlimit:10"
id="circle3389-30-0-1-8-5-8-1-6-2-0-7-1"
r="18.663952"
cy="283.1105"
cx="327.55856" />
</g>
<circle
r="33.50275"
cy="508.78076"
cx="287.23438"
id="path3381-9-4-8-4-4-7-5-5"
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:2.3428266;stroke-linecap:square;stroke-miterlimit:10;stroke-opacity:1;paint-order:markers fill stroke" />
<g
transform="matrix(0.45320127,0,0,0.45320127,200.33896,533.45431)"
id="g1878-57-8-5-5-8-9-5">
<circle
style="opacity:0.12999998;stroke:#000000;stroke-width:4.46563005;stroke-miterlimit:10"
id="circle3369-9-9-0-2-6-2-4"
r="18.309078"
cy="-48.430031"
cx="198.98453" />
<circle
style="fill:#d71920;stroke:#be1e2d;stroke-width:4.46563005;stroke-miterlimit:10"
id="circle3383-8-4-3-5-8-2-7"
r="18.309078"
cy="-54.607491"
cx="195.41203" />
</g>
<path
id="path1272-6-4-8-8-6"
d="m 266.27311,506.56049 7.93904,-0.96817 v 3.8727"
style="fill:#efefef;fill-opacity:1;stroke:#666666;stroke-width:1.74710691;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
<g
style="stroke:#808080;stroke-width:5.81758022;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.46795338,0.02870274,-0.02887525,0.4651576,192.13363,460.92593)"
id="g1730-53-4-1-7-4-9-5">
<path
id="path1717-2-2-0-4-3-7-6"
d="m 287.69326,71.771896 11.81056,20.289944 9.69072,-21.501284"
style="fill:none;stroke:#808080;stroke-width:5.81758022;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
</g>
<circle
r="80.02655"
cy="701.89423"
cx="240.14709"
id="path3381-9-4-9-7-1-6-3-3"
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:2.26771665;stroke-linecap:square;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke" />
<circle
r="33.50275"
cy="703.11041"
cx="284.60577"
id="path3381-9-4-9-7-2-2-7"
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:2.3428266;stroke-linecap:square;stroke-miterlimit:10;stroke-opacity:1;paint-order:markers fill stroke" />
<g
transform="matrix(0.40302429,0,0,0.40302429,153.86436,587.81381)"
id="g8872-7-2-4-1-0-2-7-6-4-2-0-4">
<circle
style="opacity:0.12999998;stroke:#000000;stroke-width:4.55217981;stroke-miterlimit:10"
id="circle3375-7-5-7-8-8-0-6-3-3-3-3-6-5"
r="18.663952"
cy="289.40768"
cx="331.20029" />
<circle
style="fill:#54b948;stroke:#00873a;stroke-width:4.55217981;stroke-miterlimit:10"
id="circle3389-30-0-1-8-5-8-1-6-2-0-7-1-2"
r="18.663952"
cy="283.1105"
cx="327.55856" />
</g>
<circle
r="33.50275"
cy="701.89423"
cx="198.3916"
id="path3381-9-4-8-4-4-7-5-5-5"
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:2.3428266;stroke-linecap:square;stroke-miterlimit:10;stroke-opacity:1;paint-order:markers fill stroke" />
<g
transform="matrix(0.45320127,0,0,0.45320127,111.49617,726.56773)"
id="g1878-57-8-5-5-8-9-5-4">
<circle
style="opacity:0.12999998;stroke:#000000;stroke-width:4.46563005;stroke-miterlimit:10"
id="circle3369-9-9-0-2-6-2-4-7"
r="18.309078"
cy="-48.430031"
cx="198.98453" />
<circle
style="fill:#d71920;stroke:#be1e2d;stroke-width:4.46563005;stroke-miterlimit:10"
id="circle3383-8-4-3-5-8-2-7-4"
r="18.309078"
cy="-54.607491"
cx="195.41203" />
</g>
<path
id="path1272-6-4-8-8-6-4"
d="m 177.43032,699.67391 7.93904,-0.96817 v 3.8727"
style="fill:#efefef;fill-opacity:1;stroke:#666666;stroke-width:1.74710691;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
<g
style="stroke:#808080;stroke-width:5.81758022;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.46795338,0.02870274,-0.02887525,0.4651576,103.29084,654.03935)"
id="g1730-53-4-1-7-4-9-5-3">
<path
id="path1717-2-2-0-4-3-7-6-0"
d="m 287.69326,71.771896 11.81056,20.289944 9.69072,-21.501284"
style="fill:none;stroke:#808080;stroke-width:5.81758022;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
</g>
<g
id="g4872-3-7"
transform="translate(47.048289,322.564)">
<g
id="g5205"
transform="translate(57.62212,92.227604)">
<g
transform="matrix(0.08277176,-0.00946283,0.0190578,0.11488848,360.38433,262.33684)"
id="g1482-7-0-7-2-8-6-8"
style="display:inline;fill:none;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10">
<path
d="m 300.63709,231.37428 c 5.07924,-1.92282 10.35434,-3.62219 15.75885,-5.21028 -4.09679,-3.38762 -8.45059,-6.65265 -13.06188,-9.79637 -0.92392,5.24208 -1.39222,9.36303 -2.69697,15.00665 z"
id="path1478-7-9-4-9-4-1-6"
inkscape:connector-curvature="0"
style="fill:none;stroke-width:16.09810066" />
<path
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)"
sodipodi:nodetypes="cc"
d="M 153.43841,83.202404 C 192.22734,72.827888 281.27803,76.046336 317.498,86.173"
id="path1480-1-3-4-8-0-2-8"
inkscape:connector-curvature="0"
style="fill:none;stroke-width:10.64900017;paint-order:markers fill stroke" />
</g>
<circle
r="19.720037"
cy="286.47845"
cx="413.11859"
id="path3381-9-9-8"
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:1.37901151;stroke-linecap:square;stroke-miterlimit:10;stroke-opacity:1;paint-order:markers fill stroke" />
<circle
r="19.720037"
cy="284.86862"
cx="358.99213"
id="path3381-3-4"
style="fill:#efefef;fill-opacity:1;stroke:#d8d8d8;stroke-width:1.37919581;stroke-linecap:square;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke" />
<g
transform="matrix(0.26675857,0,0,0.26675857,360.85744,300.67917)"
id="g1878-1-3">
<circle
style="opacity:0.12999998;stroke:#000000;stroke-width:4.46563005;stroke-miterlimit:10"
id="circle3369-94-1"
r="18.309078"
cy="-48.430031"
cx="198.98453" />
<circle
style="fill:#d71920;stroke:#be1e2d;stroke-width:4.46563005;stroke-miterlimit:10"
id="circle3383-7-4"
r="18.309078"
cy="-54.607491"
cx="195.41203" />
</g>
<g
style="stroke:#808080;stroke-width:5.81758022;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.23292167,0.01428666,-0.01437252,0.23153009,290.6011,261.5565)"
id="g1730-53-4-1-7-4-7-3-6">
<path
id="path1717-2-2-0-4-3-0-6-8"
d="m 287.69326,71.771896 11.81056,20.289944 9.69072,-21.501284"
style="fill:none;stroke:#808080;stroke-width:5.81758022;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0.26675857,0,0,0.26675857,317.9287,299.54264)"
id="g1878-9-1-9">
<circle
style="opacity:0.12999998;stroke:#000000;stroke-width:4.46563005;stroke-miterlimit:10"
id="circle3369-3-0-2"
r="18.309078"
cy="-48.430031"
cx="198.98453" />
<circle
style="fill:#d71920;stroke:#be1e2d;stroke-width:4.46563005;stroke-miterlimit:10"
id="circle3383-60-6-6"
r="18.309078"
cy="-54.607491"
cx="195.41203" />
</g>
<g
transform="matrix(0.26675857,0,0,0.26675857,295.94558,298.88465)"
id="g1878-9-1-9-6">
<circle
style="opacity:0.12999998;stroke:#000000;stroke-width:4.46563005;stroke-miterlimit:10"
id="circle3369-3-0-2-4"
r="18.309078"
cy="-48.430031"
cx="198.98453" />
<circle
style="fill:#d71920;stroke:#be1e2d;stroke-width:4.46563005;stroke-miterlimit:10"
id="circle3383-60-6-6-9"
r="18.309078"
cy="-54.607491"
cx="195.41203" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 37 KiB

View File

@ -39,8 +39,8 @@
inkscape:window-height="1016"
id="namedview15615"
showgrid="false"
inkscape:zoom="3.6489706"
inkscape:cx="315.55949"
inkscape:zoom="1.8244853"
inkscape:cx="261.02356"
inkscape:cy="100.157"
inkscape:window-x="0"
inkscape:window-y="27"
@ -49,18 +49,18 @@
<g
inkscape:transform-center-y="-7.1122447"
inkscape:transform-center-x="5.0319336"
transform="matrix(0.18443188,-0.00623336,0.02173024,0.2570434,319.9683,-4.6972829)"
transform="matrix(0.18443188,-0.00623336,0.02173024,0.2570434,289.82281,-7.4377818)"
id="g1482-7-0-1-0-3-6"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10" />
<g
inkscape:transform-center-y="-7.1122447"
inkscape:transform-center-x="5.0319336"
transform="matrix(0.18443188,-0.00623336,0.02173024,0.2570434,323.2489,-329.74282)"
transform="matrix(0.18443188,-0.00623336,0.02173024,0.2570434,293.10341,-332.48332)"
id="g1482-7-0-1-0-3-6-7"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10" />
<g
id="g2836-2-5-2-6-2-1-8-8"
transform="matrix(1.5387514,-0.89002978,0.89002978,1.5387514,-181.21324,104.72686)"
transform="matrix(1.5387514,-0.89002978,0.89002978,1.5387514,-211.35873,101.98636)"
inkscape:transform-center-x="3.3436919"
inkscape:transform-center-y="-15.625386">
<path
@ -78,7 +78,7 @@
</g>
<g
id="g2840-8-6-3"
transform="matrix(0.81169487,0,0,0.81169487,152.83924,-29.261765)">
transform="matrix(0.81169487,0,0,0.81169487,122.69375,-32.002264)">
<circle
cx="270.0488"
cy="79.722664"
@ -94,7 +94,7 @@
</g>
<g
id="g2832-0-7-4"
transform="matrix(0.81169487,0,0,0.81169487,112.88815,-59.666946)">
transform="matrix(0.81169487,0,0,0.81169487,82.742662,-62.407445)">
<circle
cx="219.86087"
cy="188.36188"
@ -110,25 +110,26 @@
</g>
<g
id="g2836-2-5-2-6-2-1-8-0-7"
transform="matrix(-0.58458964,-1.6787387,1.6787387,-0.58458964,270.01901,645.64371)"
transform="matrix(-0.58458964,-1.6787387,1.6787387,-0.58458964,239.87352,642.90321)"
inkscape:transform-center-x="10.360889"
inkscape:transform-center-y="8.2025333">
inkscape:transform-center-y="8.2025333"
style="stroke:#000000;stroke-opacity:1">
<path
d="m 273.21167,117.26782 c -0.57835,-0.53701 -1.18546,-1.05059 -1.82141,-1.54094 0.005,0.90274 -0.23069,1.50591 -0.26419,2.48087 1.09658,-0.45317 1.14943,-0.45438 2.0856,-0.93993 z"
id="path1478-7-9-0-19-0-0-3-9-8-1-5-7-8-9-6"
inkscape:connector-curvature="0"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:2.33961892;stroke-miterlimit:10"
style="display:inline;fill:#dddddd;stroke:#000000;stroke-width:2.33961892;stroke-miterlimit:10;stroke-opacity:1"
sodipodi:nodetypes="cccc" />
<path
sodipodi:nodetypes="cc"
d="m 242.7095,118.61874 c 10.03327,-2.44287 20.74677,-3.27503 28.79188,-1.52922"
id="path1480-1-3-1-5-7-6-7-2-9-5-4-2-5-6-3"
inkscape:connector-curvature="0"
style="display:inline;fill:none;stroke:#838383;stroke-width:1.32416177;stroke-miterlimit:10;stroke-dasharray:none;paint-order:markers fill stroke" />
style="display:inline;fill:none;stroke:#000000;stroke-width:1.32416177;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke" />
</g>
<g
id="g2762-1-3-4"
transform="matrix(0.54103121,0,0,0.54103121,146.46565,45.03276)">
transform="matrix(0.54103121,0,0,0.54103121,116.32016,42.292261)">
<circle
cx="323.01764"
cy="91.036781"
@ -170,7 +171,7 @@
</g>
<g
id="g2836-2-5-2-6-2-1-8-0-7-9"
transform="matrix(0.17089105,-1.7693798,-1.7693798,-0.17089105,537.00783,567.43521)"
transform="matrix(0.17089105,-1.7693798,-1.7693798,-0.17089105,506.86234,564.69471)"
inkscape:transform-center-x="-12.475369"
inkscape:transform-center-y="5.6988713">
<path
@ -188,7 +189,7 @@
</g>
<g
id="g2852-5-9-1"
transform="matrix(0.81169487,0,0,0.81169487,68.573372,6.6106553)">
transform="matrix(0.81169487,0,0,0.81169487,38.427884,3.8701564)">
<circle
cx="332.86816"
cy="190.67238"

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -39,9 +39,9 @@
inkscape:window-height="1016"
id="namedview15615"
showgrid="false"
inkscape:zoom="1.2901059"
inkscape:cx="122.43475"
inkscape:cy="86.240168"
inkscape:zoom="2.5802118"
inkscape:cx="289.08774"
inkscape:cy="109.49407"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
@ -49,18 +49,18 @@
<g
inkscape:transform-center-y="-7.1122447"
inkscape:transform-center-x="5.0319336"
transform="matrix(0.24854555,-0.00840025,0.02928427,0.34639884,350.23863,-63.716519)"
transform="matrix(0.24854555,-0.00840025,0.02928427,0.34639884,349.4635,-61.391129)"
id="g1482-7-0-1-0-3-6"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10" />
<g
inkscape:transform-center-y="-7.1122447"
inkscape:transform-center-x="5.0319336"
transform="matrix(0.24854555,-0.00840025,0.02928427,0.34639884,354.65965,-501.75695)"
transform="matrix(0.24854555,-0.00840025,0.02928427,0.34639884,353.88452,-499.43156)"
id="g1482-7-0-1-0-3-6-7"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10" />
<g
id="g2836-2-5-3-4"
transform="matrix(-0.84876137,-1.2449399,-1.5210419,0.98654056,707.43811,267.91519)">
transform="matrix(-0.84876137,-1.2449399,-1.5210419,0.98654056,706.66298,270.24058)">
<path
d="m 273.21167,117.26782 c -0.57835,-0.53701 -1.18546,-1.05059 -1.82141,-1.54094 0.005,0.90274 -0.23069,1.50591 -0.26419,2.48087 1.09658,-0.45317 1.14943,-0.45438 2.0856,-0.93993 z"
id="path1478-7-9-0-19-0-0-3-9-2-9"
@ -76,7 +76,7 @@
</g>
<g
id="g2836-2-5-2-6-2-1-8"
transform="matrix(-1.2616127,-0.71640439,-0.71640439,1.2616127,663.20887,141.30642)">
transform="matrix(-1.2616127,-0.71640439,-0.71640439,1.2616127,662.43374,143.63181)">
<path
d="m 273.21167,117.26782 c -0.57835,-0.53701 -1.18546,-1.05059 -1.82141,-1.54094 0.005,0.90274 -0.23069,1.50591 -0.26419,2.48087 1.09658,-0.45317 1.14943,-0.45438 2.0856,-0.93993 z"
id="path1478-7-9-0-19-0-0-3-9-8-1-5-7-8"
@ -92,7 +92,7 @@
</g>
<g
id="g2840-8-6"
transform="matrix(0.66247801,0,0,0.66247801,105.87001,74.900697)">
transform="matrix(0.66247801,0,0,0.66247801,105.09488,77.226087)">
<circle
cx="270.0488"
cy="79.722664"
@ -108,7 +108,7 @@
</g>
<g
id="g2832-0-7"
transform="matrix(0.66247801,0,0,0.66247801,68.89755,-41.665302)">
transform="matrix(0.66247801,0,0,0.66247801,68.12242,-39.339912)">
<circle
cx="219.86087"
cy="188.36188"
@ -124,7 +124,7 @@
</g>
<g
id="g2836-2-5-2-6-2-1-8-0"
transform="matrix(-1.2616127,-0.71640439,-0.71640439,1.2616127,734.07283,187.00851)">
transform="matrix(-1.2616127,-0.71640439,-0.71640439,1.2616127,733.2977,189.3339)">
<path
d="m 273.21167,117.26782 c -0.57835,-0.53701 -1.18546,-1.05059 -1.82141,-1.54094 0.005,0.90274 -0.23069,1.50591 -0.26419,2.48087 1.09658,-0.45317 1.14943,-0.45438 2.0856,-0.93993 z"
id="path1478-7-9-0-19-0-0-3-9-8-1-5-7-8-9"
@ -140,7 +140,7 @@
</g>
<g
id="g2852-5-9"
transform="matrix(0.66247801,0,0,0.66247801,136.90604,40.825506)">
transform="matrix(0.66247801,0,0,0.66247801,136.13091,43.150896)">
<circle
cx="332.86816"
cy="190.67238"
@ -204,7 +204,7 @@
</g>
<g
id="g2762-1-3"
transform="matrix(0.44157146,0,0,0.44157146,166.10104,-17.613849)">
transform="matrix(0.44157146,0,0,0.44157146,165.32591,-15.288459)">
<circle
cx="323.01764"
cy="91.036781"
@ -246,7 +246,7 @@
</g>
<g
id="g4977"
transform="matrix(0.76593395,0,0,0.76593395,-409.26291,550.22993)">
transform="matrix(0.76593395,0,0,0.76593395,-410.03804,552.55532)">
<g
style="fill:#000000;stroke:#333333"
transform="matrix(1,0,0,-1,748.97747,-597.53202)"

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -20,7 +20,7 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@ -35,20 +35,20 @@
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1376"
inkscape:window-width="1920"
inkscape:window-height="1016"
id="namedview15615"
showgrid="false"
inkscape:zoom="0.91224263"
inkscape:cx="392.29346"
inkscape:cy="516.71284"
inkscape:zoom="1.8244853"
inkscape:cx="211.96862"
inkscape:cy="112.21519"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg15613" />
<g
id="g2762"
transform="matrix(0.66654507,0,0,0.66654507,87.642506,3.7879223)">
transform="matrix(0.66654507,0,0,0.66654507,131.77079,-14.613889)">
<circle
cx="323.01764"
cy="91.036781"
@ -91,12 +91,12 @@
<g
inkscape:transform-center-y="-7.1122447"
inkscape:transform-center-x="5.0319336"
transform="matrix(0.18443188,-0.00623336,0.02173024,0.2570434,295.85191,6.264713)"
transform="matrix(0.18443188,-0.00623336,0.02173024,0.2570434,350.44446,12.901249)"
id="g1482-7-0-1-0-3-6"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10" />
<g
id="g2840"
transform="translate(153.86334,-11.239389)">
transform="translate(-38.831148,-33.837921)">
<circle
cx="270.0488"
cy="79.722664"
@ -112,7 +112,7 @@
</g>
<g
id="g2832"
transform="translate(-48.058073,-128.28405)">
transform="translate(257.61453,-145.71556)">
<circle
cx="219.86087"
cy="188.36188"
@ -128,55 +128,56 @@
</g>
<g
id="g2836-2"
transform="matrix(2.0220259,-0.84114132,-0.84114132,-2.0220259,-59.06566,554.46344)">
transform="matrix(2.0220259,-0.84114132,-0.84114132,-2.0220259,-4.0855609,532.96112)"
style="stroke:#000000;stroke-opacity:1">
<path
d="m 273.21167,117.26782 c -0.57835,-0.53701 -1.18546,-1.05059 -1.82141,-1.54094 0.005,0.90274 -0.23069,1.50591 -0.26419,2.48087 1.09658,-0.45317 1.14943,-0.45438 2.0856,-0.93993 z"
d="m 272.98858,117.54664 c -0.48033,-0.62623 -0.99292,-1.23417 -1.53784,-1.82403 -0.14615,0.89085 -0.47946,1.44606 -0.67565,2.40167 1.15695,-0.26326 1.20926,-0.25561 2.21349,-0.57764 z"
id="path1478-7-9-0-19-0-0-3"
inkscape:connector-curvature="0"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:2.33961892;stroke-miterlimit:10"
style="display:inline;fill:#dddddd;stroke:#000000;stroke-width:2.33961892;stroke-miterlimit:10;stroke-opacity:1"
sodipodi:nodetypes="cccc" />
<path
sodipodi:nodetypes="cc"
d="m 207.1669,114.70262 c 20.68864,-4.12884 51.97302,-2.7497 64.33448,2.3869"
d="m 197.75354,105.98737 c 20.68864,-4.12884 58.0662,3.51328 73.74784,11.10215"
id="path1480-1-3-1-5-7-6-7"
inkscape:connector-curvature="0"
style="display:inline;fill:none;stroke:#838383;stroke-width:1.32416177;stroke-miterlimit:10;stroke-dasharray:none;paint-order:markers fill stroke" />
</g>
<g
id="g2836-2-5"
transform="matrix(1.4076976,-1.6776457,-1.6776457,-1.4076976,98.556513,718.6679)">
<path
d="m 273.21167,117.26782 c -0.57835,-0.53701 -1.18546,-1.05059 -1.82141,-1.54094 0.005,0.90274 -0.23069,1.50591 -0.26419,2.48087 1.09658,-0.45317 1.14943,-0.45438 2.0856,-0.93993 z"
id="path1478-7-9-0-19-0-0-3-9"
inkscape:connector-curvature="0"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:2.33961892;stroke-miterlimit:10"
sodipodi:nodetypes="cccc" />
<path
sodipodi:nodetypes="cc"
d="m 242.7095,118.61874 c 10.03327,-2.44287 20.74677,-3.27503 28.79188,-1.52922"
id="path1480-1-3-1-5-7-6-7-2"
inkscape:connector-curvature="0"
style="display:inline;fill:none;stroke:#838383;stroke-width:1.32416177;stroke-miterlimit:10;stroke-dasharray:none;paint-order:markers fill stroke" />
style="display:inline;fill:none;stroke:#000000;stroke-width:1.32416177;stroke-miterlimit:10;stroke-dasharray:none;paint-order:markers fill stroke;stroke-opacity:1" />
</g>
<g
id="g2836-2-5-2"
transform="matrix(-1.4076976,-1.6776457,1.6776457,-1.4076976,373.88533,715.56738)">
transform="matrix(-1.4076976,-1.6776457,1.6776457,-1.4076976,428.47788,704.20392)">
<path
d="m 273.21167,117.26782 c -0.57835,-0.53701 -1.18546,-1.05059 -1.82141,-1.54094 0.005,0.90274 -0.23069,1.50591 -0.26419,2.48087 1.09658,-0.45317 1.14943,-0.45438 2.0856,-0.93993 z"
d="m 273.17417,117.85007 c -0.41384,-0.67201 -0.86165,-1.32914 -1.34347,-1.97158 -0.23638,0.87126 -0.62466,1.38952 -0.91745,2.32009 1.1778,-0.1437 1.22905,-0.13075 2.26092,-0.34851 z"
id="path1478-7-9-0-19-0-0-3-9-8"
inkscape:connector-curvature="0"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:2.33961892;stroke-miterlimit:10"
sodipodi:nodetypes="cccc" />
<path
sodipodi:nodetypes="cc"
d="m 242.7095,118.61874 c 10.03327,-2.44287 20.74677,-3.27503 28.79188,-1.52922"
d="m 234.09393,113.46865 c 10.00997,-2.47499 26.52553,-1.74229 37.40745,3.62087"
id="path1480-1-3-1-5-7-6-7-2-9"
inkscape:connector-curvature="0"
style="display:inline;fill:none;stroke:#838383;stroke-width:1.32416177;stroke-miterlimit:10;stroke-dasharray:none;paint-order:markers fill stroke" />
</g>
<g
id="g2836-2-5-2-5"
transform="matrix(1.4076976,-1.6776457,-1.6776457,-1.4076976,155.05972,704.28174)">
<path
d="m 273.17417,117.85007 c -0.41384,-0.67201 -0.86165,-1.32914 -1.34347,-1.97158 -0.23638,0.87126 -0.62466,1.38952 -0.91745,2.32009 1.1778,-0.1437 1.22905,-0.13075 2.26092,-0.34851 z"
id="path1478-7-9-0-19-0-0-3-9-8-5"
inkscape:connector-curvature="0"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:2.33961892;stroke-miterlimit:10"
sodipodi:nodetypes="cccc" />
<path
sodipodi:nodetypes="cc"
d="m 234.09393,113.46865 c 10.00997,-2.47499 26.52553,-1.74229 37.40745,3.62087"
id="path1480-1-3-1-5-7-6-7-2-9-4"
inkscape:connector-curvature="0"
style="display:inline;fill:none;stroke:#838383;stroke-width:1.32416177;stroke-miterlimit:10;stroke-dasharray:none;paint-order:markers fill stroke" />
</g>
<g
id="g2852"
transform="translate(-96.16316,-45.622505)">
transform="translate(-41.570624,-38.985969)">
<circle
cx="332.86816"
cy="190.67238"
@ -238,212 +239,10 @@
cx="297.22122" />
</g>
</g>
<g
id="g2762-1"
transform="matrix(0.66654507,0,0,0.66654507,700.56298,-44.923704)">
<circle
cx="323.01764"
cy="91.036781"
r="45.160252"
id="circle15601-2"
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:3.16543818;stroke-miterlimit:10;stroke-opacity:1" />
<circle
cx="348.40515"
cy="90.286079"
r="18.045874"
id="circle15603-9"
style="fill:#f58235;stroke:#e76524;stroke-width:2.52979565;stroke-miterlimit:10" />
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-1-0-3-3"
transform="matrix(0.18443188,-0.00623336,0.02173024,0.2570434,263.02754,33.201428)"
inkscape:transform-center-x="5.0319336"
inkscape:transform-center-y="-7.1122447">
<path
style="stroke-width:35.52600098"
inkscape:connector-curvature="0"
id="path1478-7-9-0-19-0-1"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z" />
<path
style="stroke-width:10.64900017;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-1-5-7-9"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)"
d="M 256.00808,84.703489 C 283.39188,81.262654 297.41031,82.245264 317.498,86.173"
sodipodi:nodetypes="cc" />
</g>
<circle
cx="297.22122"
cy="89.831909"
r="18.045874"
id="circle15605-4"
style="fill:#39bced;stroke:#008dd2;stroke-width:2.52979565;stroke-miterlimit:10" />
</g>
<g
inkscape:transform-center-y="-7.1122447"
inkscape:transform-center-x="5.0319336"
transform="matrix(0.18443188,-0.00623336,0.02173024,0.2570434,299.13251,-318.78082)"
transform="matrix(0.18443188,-0.00623336,0.02173024,0.2570434,353.72506,-312.14428)"
id="g1482-7-0-1-0-3-6-7"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10" />
<g
id="g2840-8"
transform="translate(776.47292,-1.0411245)">
<circle
cx="270.0488"
cy="79.722664"
r="30.101343"
id="circle15601-3-4"
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:2.10990715;stroke-miterlimit:10;stroke-opacity:1" />
<circle
cx="269.64572"
cy="79.04866"
r="12.028388"
id="circle15605-5-5"
style="fill:#39bced;stroke:#008dd2;stroke-width:1.68622279;stroke-miterlimit:10" />
</g>
<g
id="g2836-2-1"
transform="matrix(2.0220259,-0.84114132,-0.84114132,-2.0220259,561.99368,564.27414)">
<path
d="m 273.21167,117.26782 c -0.57835,-0.53701 -1.18546,-1.05059 -1.82141,-1.54094 0.005,0.90274 -0.23069,1.50591 -0.26419,2.48087 1.09658,-0.45317 1.14943,-0.45438 2.0856,-0.93993 z"
id="path1478-7-9-0-19-0-0-3-0"
inkscape:connector-curvature="0"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:2.33961892;stroke-miterlimit:10"
sodipodi:nodetypes="cccc" />
<path
sodipodi:nodetypes="cc"
d="m 207.1669,114.70262 c 20.68864,-4.12884 51.97302,-2.7497 64.33448,2.3869"
id="path1480-1-3-1-5-7-6-7-6"
inkscape:connector-curvature="0"
style="display:inline;fill:none;stroke:#838383;stroke-width:1.32416177;stroke-miterlimit:10;stroke-dasharray:none;paint-order:markers fill stroke" />
</g>
<g
id="g2836-2-5-3"
transform="matrix(-0.13456305,-2.1858637,-2.1858637,0.13456305,1209.0401,632.93851)">
<path
d="m 273.21167,117.26782 c -0.57835,-0.53701 -1.18546,-1.05059 -1.82141,-1.54094 0.005,0.90274 -0.23069,1.50591 -0.26419,2.48087 1.09658,-0.45317 1.14943,-0.45438 2.0856,-0.93993 z"
id="path1478-7-9-0-19-0-0-3-9-2"
inkscape:connector-curvature="0"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:2.33961892;stroke-miterlimit:10"
sodipodi:nodetypes="cccc" />
<path
sodipodi:nodetypes="cc"
d="m 233.62766,121.19192 c 10.30078,-3.47044 29.82861,-5.84821 37.87372,-4.1024"
id="path1480-1-3-1-5-7-6-7-2-0"
inkscape:connector-curvature="0"
style="display:inline;fill:none;stroke:#838383;stroke-width:1.32416177;stroke-miterlimit:10;stroke-dasharray:none;paint-order:markers fill stroke" />
</g>
<g
id="g2836-2-5-2-6"
transform="matrix(-1.719814,-1.3558567,1.3558567,-1.719814,1142.7372,672.4082)">
<path
d="m 273.21167,117.26782 c -0.57835,-0.53701 -1.18546,-1.05059 -1.82141,-1.54094 0.005,0.90274 -0.23069,1.50591 -0.26419,2.48087 1.09658,-0.45317 1.14943,-0.45438 2.0856,-0.93993 z"
id="path1478-7-9-0-19-0-0-3-9-8-1"
inkscape:connector-curvature="0"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:2.33961892;stroke-miterlimit:10"
sodipodi:nodetypes="cccc" />
<path
sodipodi:nodetypes="cc"
d="m 242.7095,118.61874 c 10.03327,-2.44287 20.74677,-3.27503 28.79188,-1.52922"
id="path1480-1-3-1-5-7-6-7-2-9-5"
inkscape:connector-curvature="0"
style="display:inline;fill:none;stroke:#838383;stroke-width:1.32416177;stroke-miterlimit:10;stroke-dasharray:none;paint-order:markers fill stroke" />
</g>
<g
id="g2852-5"
transform="translate(583.03094,-42.400414)">
<circle
cx="332.86816"
cy="190.67238"
r="30.101343"
id="circle15601-6-4"
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:2.10990715;stroke-miterlimit:10;stroke-opacity:1" />
<circle
cx="347.98178"
cy="190.68867"
r="12.028388"
id="circle15603-2-7"
style="fill:#f58235;stroke:#e76524;stroke-width:1.68622279;stroke-miterlimit:10" />
<circle
cx="317.7403"
cy="191.93591"
r="13.235431"
id="circle15605-7-6"
style="fill:#39bced;stroke:#008dd2;stroke-width:1.8554343;stroke-miterlimit:10" />
<g
transform="matrix(0.31836941,0,0,0.31836941,244.30788,162.85877)"
id="g2762-2-5">
<circle
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:3.16543818;stroke-miterlimit:10;stroke-opacity:1"
id="circle15601-61-6"
r="45.160252"
cy="91.036781"
cx="323.01764" />
<circle
style="fill:#f58235;stroke:#e76524;stroke-width:2.52979565;stroke-miterlimit:10"
id="circle15603-8-9"
r="18.045874"
cy="90.286079"
cx="348.40515" />
<g
inkscape:transform-center-y="-7.1122447"
inkscape:transform-center-x="5.0319336"
transform="matrix(0.18443188,-0.00623336,0.02173024,0.2570434,263.02754,33.201428)"
id="g1482-7-0-1-0-3-7-3"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10">
<path
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
id="path1478-7-9-0-19-0-9-7"
inkscape:connector-curvature="0"
style="stroke-width:35.52600098" />
<path
sodipodi:nodetypes="cc"
d="M 256.00808,84.703489 C 283.39188,81.262654 297.41031,82.245264 317.498,86.173"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)"
id="path1480-1-3-1-5-7-2-4"
inkscape:connector-curvature="0"
style="stroke-width:10.64900017;paint-order:markers fill stroke" />
</g>
<circle
style="fill:#39bced;stroke:#008dd2;stroke-width:2.52979565;stroke-miterlimit:10"
id="circle15605-0-5"
r="18.045874"
cy="89.831909"
cx="297.22122" />
</g>
</g>
<g
id="g2836-2-5-2-6-2"
transform="matrix(1.9043843,-1.081401,1.081401,1.9043843,233.95709,91.786826)">
<path
d="m 273.21167,117.26782 c -0.57835,-0.53701 -1.18546,-1.05059 -1.82141,-1.54094 0.005,0.90274 -0.23069,1.50591 -0.26419,2.48087 1.09658,-0.45317 1.14943,-0.45438 2.0856,-0.93993 z"
id="path1478-7-9-0-19-0-0-3-9-8-1-5"
inkscape:connector-curvature="0"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:2.33961892;stroke-miterlimit:10"
sodipodi:nodetypes="cccc" />
<path
sodipodi:nodetypes="cc"
d="m 242.7095,118.61874 c 10.03327,-2.44287 20.74677,-3.27503 28.79188,-1.52922"
id="path1480-1-3-1-5-7-6-7-2-9-5-4"
inkscape:connector-curvature="0"
style="display:inline;fill:none;stroke:#838383;stroke-width:1.32416177;stroke-miterlimit:10;stroke-dasharray:none;paint-order:markers fill stroke" />
</g>
<g
id="g2832-0"
transform="translate(587.34118,-113.435)">
<circle
cx="219.86087"
cy="188.36188"
r="30.101343"
id="circle15601-3-0-3"
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:2.10990715;stroke-miterlimit:10;stroke-opacity:1" />
<circle
cx="219.79033"
cy="189.25879"
r="12.028388"
id="circle15603-3-6"
style="fill:#f58235;stroke:#e76524;stroke-width:1.68622279;stroke-miterlimit:10" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

View File

@ -0,0 +1,352 @@
<?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 189.5"
version="1.1"
id="svg15613"
sodipodi:docname="implies_universal_property.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata15619">
<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="defs15617" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1016"
id="namedview15615"
showgrid="false"
inkscape:zoom="2.5802118"
inkscape:cx="398.08948"
inkscape:cy="85.603448"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg15613" />
<g
id="g2762"
transform="matrix(0.66654507,0,0,0.66654507,142.95022,-17.817425)">
<circle
cx="323.01764"
cy="91.036781"
r="45.160252"
id="circle15601"
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:3.16543818;stroke-miterlimit:10;stroke-opacity:1" />
<circle
cx="348.40515"
cy="90.286079"
r="18.045874"
id="circle15603"
style="fill:#f58235;stroke:#e76524;stroke-width:2.52979565;stroke-miterlimit:10" />
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-1-0-3"
transform="matrix(0.18443188,-0.00623336,0.02173024,0.2570434,263.02754,33.201428)"
inkscape:transform-center-x="5.0319336"
inkscape:transform-center-y="-7.1122447">
<path
style="stroke-width:35.52600098"
inkscape:connector-curvature="0"
id="path1478-7-9-0-19-0"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z" />
<path
style="stroke-width:10.64900017;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-1-5-7"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)"
d="M 256.00808,84.703489 C 283.39188,81.262654 297.41031,82.245264 317.498,86.173"
sodipodi:nodetypes="cc" />
</g>
<circle
cx="297.22122"
cy="89.831909"
r="18.045874"
id="circle15605"
style="fill:#39bced;stroke:#008dd2;stroke-width:2.52979565;stroke-miterlimit:10" />
</g>
<g
inkscape:transform-center-y="-7.1122447"
inkscape:transform-center-x="5.0319336"
transform="matrix(0.18443188,-0.00623336,0.02173024,0.2570434,361.62389,9.6977119)"
id="g1482-7-0-1-0-3-6"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10" />
<g
id="g2840"
transform="translate(-24.530683,-39.433343)">
<circle
cx="270.0488"
cy="79.722664"
r="30.101343"
id="circle15601-3"
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:2.10990715;stroke-miterlimit:10;stroke-opacity:1" />
<circle
cx="269.64572"
cy="79.04866"
r="12.028388"
id="circle15605-5"
style="fill:#39bced;stroke:#008dd2;stroke-width:1.68622279;stroke-miterlimit:10" />
</g>
<g
id="g2836-2"
transform="matrix(2.0220259,-0.84114132,-0.84114132,-2.0220259,7.0938807,529.75757)"
style="stroke:#000000;stroke-opacity:1">
<path
d="m 272.98858,117.54664 c -0.48033,-0.62623 -0.99292,-1.23417 -1.53784,-1.82403 -0.14615,0.89085 -0.47946,1.44606 -0.67565,2.40167 1.15695,-0.26326 1.20926,-0.25561 2.21349,-0.57764 z"
id="path1478-7-9-0-19-0-0-3"
inkscape:connector-curvature="0"
style="display:inline;fill:#dddddd;stroke:#000000;stroke-width:2.33961892;stroke-miterlimit:10;stroke-opacity:1"
sodipodi:nodetypes="cccc" />
<path
sodipodi:nodetypes="cc"
d="m 197.75354,105.98737 c 20.68864,-4.12884 58.0662,3.51328 73.74784,11.10215"
id="path1480-1-3-1-5-7-6-7"
inkscape:connector-curvature="0"
style="display:inline;fill:none;stroke:#000000;stroke-width:1.32416177;stroke-miterlimit:10;stroke-dasharray:none;paint-order:markers fill stroke;stroke-opacity:1" />
</g>
<g
id="g2836-2-5-2"
transform="matrix(-1.4076976,-1.6776457,1.6776457,-1.4076976,439.65731,699.00038)">
<path
d="m 273.17417,117.85007 c -0.41384,-0.67201 -0.86165,-1.32914 -1.34347,-1.97158 -0.23638,0.87126 -0.62466,1.38952 -0.91745,2.32009 1.1778,-0.1437 1.22905,-0.13075 2.26092,-0.34851 z"
id="path1478-7-9-0-19-0-0-3-9-8"
inkscape:connector-curvature="0"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:2.33961892;stroke-miterlimit:10"
sodipodi:nodetypes="cccc" />
<path
sodipodi:nodetypes="cc"
d="m 234.09393,113.46865 c 10.00997,-2.47499 26.52553,-1.74229 37.40745,3.62087"
id="path1480-1-3-1-5-7-6-7-2-9"
inkscape:connector-curvature="0"
style="display:inline;fill:none;stroke:#838383;stroke-width:1.32416177;stroke-miterlimit:10;stroke-dasharray:none;paint-order:markers fill stroke" />
</g>
<g
id="g2836-2-5-2-5"
transform="matrix(1.4076976,-1.6776457,-1.6776457,-1.4076976,166.23915,701.0782)">
<path
d="m 273.17417,117.85007 c -0.41384,-0.67201 -0.86165,-1.32914 -1.34347,-1.97158 -0.23638,0.87126 -0.62466,1.38952 -0.91745,2.32009 1.1778,-0.1437 1.22905,-0.13075 2.26092,-0.34851 z"
id="path1478-7-9-0-19-0-0-3-9-8-5"
inkscape:connector-curvature="0"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:2.33961892;stroke-miterlimit:10"
sodipodi:nodetypes="cccc" />
<path
sodipodi:nodetypes="cc"
d="m 234.09393,113.46865 c 10.00997,-2.47499 26.52553,-1.74229 37.40745,3.62087"
id="path1480-1-3-1-5-7-6-7-2-9-4"
inkscape:connector-curvature="0"
style="display:inline;fill:none;stroke:#838383;stroke-width:1.32416177;stroke-miterlimit:10;stroke-dasharray:none;paint-order:markers fill stroke" />
</g>
<g
id="g2852"
transform="translate(-30.391184,-42.189506)">
<circle
cx="332.86816"
cy="190.67238"
r="30.101343"
id="circle15601-6"
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:2.10990715;stroke-miterlimit:10;stroke-opacity:1" />
<circle
cx="347.98178"
cy="190.68867"
r="12.028388"
id="circle15603-2"
style="fill:#f58235;stroke:#e76524;stroke-width:1.68622279;stroke-miterlimit:10" />
<circle
cx="317.7403"
cy="191.93591"
r="13.235431"
id="circle15605-7"
style="fill:#39bced;stroke:#008dd2;stroke-width:1.8554343;stroke-miterlimit:10" />
<g
transform="matrix(0.31836941,0,0,0.31836941,244.30788,162.85877)"
id="g2762-2">
<circle
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:3.16543818;stroke-miterlimit:10;stroke-opacity:1"
id="circle15601-61"
r="45.160252"
cy="91.036781"
cx="323.01764" />
<circle
style="fill:#f58235;stroke:#e76524;stroke-width:2.52979565;stroke-miterlimit:10"
id="circle15603-8"
r="18.045874"
cy="90.286079"
cx="348.40515" />
<g
inkscape:transform-center-y="-7.1122447"
inkscape:transform-center-x="5.0319336"
transform="matrix(0.18443188,-0.00623336,0.02173024,0.2570434,263.02754,33.201428)"
id="g1482-7-0-1-0-3-7"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10">
<path
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
id="path1478-7-9-0-19-0-9"
inkscape:connector-curvature="0"
style="stroke-width:35.52600098" />
<path
sodipodi:nodetypes="cc"
d="M 256.00808,84.703489 C 283.39188,81.262654 297.41031,82.245264 317.498,86.173"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)"
id="path1480-1-3-1-5-7-2"
inkscape:connector-curvature="0"
style="stroke-width:10.64900017;paint-order:markers fill stroke" />
</g>
<circle
style="fill:#39bced;stroke:#008dd2;stroke-width:2.52979565;stroke-miterlimit:10"
id="circle15605-0"
r="18.045874"
cy="89.831909"
cx="297.22122" />
</g>
</g>
<g
inkscape:transform-center-y="-7.1122447"
inkscape:transform-center-x="5.0319336"
transform="matrix(0.18443188,-0.00623336,0.02173024,0.2570434,364.90449,-315.34782)"
id="g1482-7-0-1-0-3-6-7"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10" />
<g
id="g2836-2-5-2-5-6"
transform="matrix(-1.7222891,-1.3527114,1.3527114,-1.7222891,686.1591,646.17246)">
<path
d="m 273.17417,117.85007 c -0.41384,-0.67201 -0.86165,-1.32914 -1.34347,-1.97158 -0.23638,0.87126 -0.62466,1.38952 -0.91745,2.32009 1.1778,-0.1437 1.22905,-0.13075 2.26092,-0.34851 z"
id="path1478-7-9-0-19-0-0-3-9-8-5-6"
inkscape:connector-curvature="0"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:2.33961892;stroke-miterlimit:10"
sodipodi:nodetypes="cccc" />
<path
sodipodi:nodetypes="cc"
d="m 246.68898,112.48701 c 10.00997,-2.47499 13.93048,-0.76065 24.8124,4.60251"
id="path1480-1-3-1-5-7-6-7-2-9-4-4"
inkscape:connector-curvature="0"
style="display:inline;fill:none;stroke:#838383;stroke-width:1.32416177;stroke-miterlimit:10;stroke-dasharray:none;paint-order:markers fill stroke" />
</g>
<g
id="g2836-2-9"
transform="matrix(-2.0220259,-0.84114132,0.84114132,-2.0220259,728.79875,526.60439)">
<path
d="m 272.98858,117.54664 c -0.48033,-0.62623 -0.99292,-1.23417 -1.53784,-1.82403 -0.14615,0.89085 -0.47946,1.44606 -0.67565,2.40167 1.15695,-0.26326 1.20926,-0.25561 2.21349,-0.57764 z"
id="path1478-7-9-0-19-0-0-3-5"
inkscape:connector-curvature="0"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:2.33961892;stroke-miterlimit:10"
sodipodi:nodetypes="cccc" />
<path
sodipodi:nodetypes="cc"
d="m 216.53483,114.27497 c 20.68864,-4.12884 39.28491,-4.77432 54.96655,2.81455"
id="path1480-1-3-1-5-7-6-7-0"
inkscape:connector-curvature="0"
style="display:inline;fill:none;stroke:#838383;stroke-width:1.32416177;stroke-miterlimit:10;stroke-dasharray:none;paint-order:markers fill stroke" />
</g>
<g
id="g6341"
transform="translate(68.841037,-14.943092)">
<g
id="g6366"
transform="translate(-28.501189,-38.915086)">
<g
transform="matrix(0.66654507,0,0,0.66654507,143.69955,104.70349)"
id="g2762-3">
<circle
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:3.16543818;stroke-miterlimit:10;stroke-opacity:1"
id="circle15601-67"
r="45.160252"
cy="91.036781"
cx="323.01764" />
<circle
style="fill:#f58235;stroke:#e76524;stroke-width:2.52979565;stroke-miterlimit:10"
id="circle15603-5"
r="18.045874"
cy="90.286079"
cx="348.40515" />
<g
inkscape:transform-center-y="-7.1122447"
inkscape:transform-center-x="5.0319336"
transform="matrix(0.18443188,-0.00623336,0.02173024,0.2570434,263.02754,33.201428)"
id="g1482-7-0-1-0-3-35"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10">
<path
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
id="path1478-7-9-0-19-0-6"
inkscape:connector-curvature="0"
style="stroke-width:35.52600098" />
<path
sodipodi:nodetypes="cc"
d="M 256.00808,84.703489 C 283.39188,81.262654 297.41031,82.245264 317.498,86.173"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)"
id="path1480-1-3-1-5-7-29"
inkscape:connector-curvature="0"
style="stroke-width:10.64900017;paint-order:markers fill stroke" />
</g>
<circle
style="fill:#39bced;stroke:#008dd2;stroke-width:2.52979565;stroke-miterlimit:10"
id="circle15605-1"
r="18.045874"
cy="89.831909"
cx="297.22122" />
</g>
<g
transform="matrix(0.45464976,0,0,0.45464976,162.73658,64.774262)"
id="g6346">
<circle
cx="470.26962"
cy="221.28979"
r="30.101343"
id="circle15601-6-7"
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:2.10990715;stroke-miterlimit:10;stroke-opacity:1" />
<circle
cx="485.38324"
cy="221.30609"
r="12.028388"
id="circle15603-2-0"
style="fill:#f58235;stroke:#e76524;stroke-width:1.68622279;stroke-miterlimit:10" />
<circle
cx="456.44937"
cy="220.33838"
r="13.175672"
id="circle3379"
style="fill:#fce600;stroke:#ffdd00;stroke-width:3.21357846;stroke-miterlimit:10" />
</g>
</g>
</g>
<g
id="g2832-4"
transform="translate(267.30844,-148.84957)">
<circle
cx="219.86087"
cy="188.36188"
r="30.101343"
id="circle15601-3-0-8"
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:2.10990715;stroke-miterlimit:10;stroke-opacity:1" />
<circle
cx="219.79033"
cy="189.25879"
r="12.028388"
id="circle15603-3-7"
style="fill:#f58235;stroke:#e76524;stroke-width:1.68622279;stroke-miterlimit:10" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -40,54 +40,18 @@
id="namedview15615"
showgrid="false"
inkscape:zoom="1.4142136"
inkscape:cx="231.26831"
inkscape:cy="50.728755"
inkscape:cx="291.98153"
inkscape:cy="88.91252"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g42748-5" />
inkscape:current-layer="svg15613" />
<g
id="g42748"
transform="matrix(1.518149,0,0,1.518149,-147.54476,-49.770493)" />
<g
transform="translate(-138.93828,-10.503943)"
id="g42748-5">
<g
inkscape:transform-center-y="-8.9953127"
inkscape:transform-center-x="5.8146704"
transform="matrix(0.23118175,0.00513658,0.00915909,0.32311362,359.61458,32.515243)"
id="g1482-7-0-1-0-3-7-0"
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10">
<path
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
id="path1478-7-9-0-19-0-09-6"
inkscape:connector-curvature="0"
style="stroke-width:35.52600098" />
<path
sodipodi:nodetypes="cc"
d="M 256.00808,84.703489 C 283.39188,81.262654 297.41031,82.245264 317.498,86.173"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)"
id="path1480-1-3-1-5-7-3-2"
inkscape:connector-curvature="0"
style="stroke-width:10.64900017;paint-order:markers fill stroke" />
</g>
<circle
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:3;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
id="circle15601-9-4-9-6"
r="86.952599"
cy="104.47703"
cx="318.12561" />
<circle
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:3;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
id="circle15601-9-4-9-6-1"
r="86.952599"
cy="105.13031"
cx="537.86786" />
</g>
transform="matrix(1.9338566,0,0,1.9338566,-269.17829,-89.566137)" />
<g
id="g10229"
transform="matrix(0.50804648,0,0,0.50804648,264.83001,41.229797)">
transform="matrix(0.95588931,0,0,0.95588931,43.86394,3.9795675)">
<circle
style="fill:#dedede;fill-opacity:1;stroke:none;stroke-width:2.57022929;stroke-miterlimit:10"
id="circle15603-3-6"
@ -291,182 +255,4 @@
cy="158.23784"
cx="301.04865" />
</g>
<g
transform="matrix(0.6198535,0,0,0.6198535,8.6371147,27.44817)"
id="g10305">
<g
id="g15609"
transform="matrix(0.28216702,0,0,0.28216702,159.17989,89.595482)">
<circle
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:6;stroke-miterlimit:10;stroke-opacity:1"
id="circle15601"
r="85.599998"
cy="95.300003"
cx="292.39999" />
<circle
style="fill:#f58235;stroke:#e76524;stroke-width:6;stroke-miterlimit:10"
id="circle15603"
r="42.799999"
cy="95.300003"
cx="335.20001" />
<circle
style="fill:#39bced;stroke:#008dd2;stroke-width:6;stroke-miterlimit:10"
id="circle15605-6"
r="42.799999"
cy="95.300003"
cx="249.60001" />
</g>
<g
id="g42490"
transform="translate(79.928424,41.724612)">
<circle
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:1.6930021;stroke-miterlimit:10;stroke-opacity:1"
id="circle15601-9"
r="24.153496"
cy="43.775528"
cx="100.76691" />
<circle
style="fill:#f58235;stroke:#e76524;stroke-width:1.6930021;stroke-miterlimit:10"
id="circle15603-3-2"
r="12.076748"
cy="43.000397"
cx="101.21672" />
</g>
<circle
cx="272.77448"
cy="56.12978"
r="24.153496"
id="circle15601-9-4-9"
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:1.6930021;stroke-miterlimit:10;stroke-opacity:1" />
<g
id="g42515"
transform="translate(196.12557,28.570212)">
<circle
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:1.6930021;stroke-miterlimit:10;stroke-opacity:1"
id="circle15601-4"
r="24.153496"
cy="124.38907"
cx="104.64257" />
<circle
style="fill:#39bced;stroke:#008dd2;stroke-width:1.6930021;stroke-miterlimit:10"
id="circle15605-4-1"
r="12.076748"
cy="124.38907"
cx="104.96791" />
</g>
<g
id="g42486"
transform="rotate(-84.232776,300.18754,-2.7233749)">
<circle
style="fill:#e6e7e8;stroke:#bbbcbe;stroke-width:1.6930021;stroke-miterlimit:10;stroke-opacity:1"
id="circle15601-9-4-4"
r="24.153496"
cy="61.603523"
cx="190.35664" />
<circle
style="fill:#fce600;stroke:#ffdd00;stroke-width:2.62986875;stroke-miterlimit:10"
id="circle3379-2"
r="10.782463"
cy="61.603519"
cx="190.2323" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-1-0"
transform="matrix(-0.20091194,-0.11151814,-0.16988151,0.27261396,308.47791,69.528672)">
<path
style="stroke-width:35.52600098"
inkscape:connector-curvature="0"
id="path1478-7-9-0-19"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z" />
<path
style="stroke-width:10.64900017;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-1-5"
d="M 256.00808,84.703489 C 283.39188,81.262654 297.41031,82.245264 317.498,86.173"
sodipodi:nodetypes="cc"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-1-0-3-7"
transform="matrix(-0.11795826,0.19719978,-0.2836412,-0.15075067,356.34872,64.153902)"
inkscape:transform-center-x="-10.57029"
inkscape:transform-center-y="-0.63822879">
<path
style="stroke-width:35.52600098"
inkscape:connector-curvature="0"
id="path1478-7-9-0-19-0-09"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z" />
<path
style="stroke-width:10.64900017;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-1-5-7-3"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)"
d="M 256.00808,84.703489 C 283.39188,81.262654 297.41031,82.245264 317.498,86.173"
sodipodi:nodetypes="cc" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-1-0-8"
transform="matrix(0.18964306,0.12975907,-0.16775947,0.2739249,253.91699,36.089652)"
inkscape:transform-center-x="32.772803"
inkscape:transform-center-y="75.5104">
<path
style="stroke-width:35.52600098"
inkscape:connector-curvature="0"
id="path1478-7-9-0-19-6"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z" />
<path
style="stroke-width:10.64900017;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-1-5-8"
d="M 256.00808,84.703489 C 283.39188,81.262654 297.41031,82.245264 317.498,86.173"
sodipodi:nodetypes="cc"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-1-0-8-8"
transform="matrix(0.17074794,-0.15377595,0.22674655,0.22751725,221.42119,120.64748)"
inkscape:transform-center-x="-18.084376"
inkscape:transform-center-y="3.795282">
<path
style="stroke-width:35.52600098"
inkscape:connector-curvature="0"
id="path1478-7-9-0-19-6-4"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z" />
<path
style="stroke-width:10.64900017;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-1-5-8-3"
d="M 256.00808,84.703489 C 283.39188,81.262654 297.41031,82.245264 317.498,86.173"
sodipodi:nodetypes="cc"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-1-0-8-8-1"
transform="matrix(-0.17074794,0.15377595,-0.22674655,-0.22751725,432.69864,146.82992)"
inkscape:transform-center-x="18.084381"
inkscape:transform-center-y="-3.7952853">
<path
style="stroke-width:35.52600098"
inkscape:connector-curvature="0"
id="path1478-7-9-0-19-6-4-4"
transform="matrix(0.4768,-0.02932,0.03214,0.42867,147.58,197.367)"
d="m 315.1,101.79 c 10.682,-4.135 21.77,-7.738 33.127,-11.074 -8.518,-8.139 -17.577,-16.01 -27.178,-23.616 -2.04,12.119 -3.103,21.663 -5.949,34.69 z" />
<path
style="stroke-width:10.64900017;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-1-5-8-3-9"
d="M 256.00808,84.703489 C 283.39188,81.262654 297.41031,82.245264 317.498,86.173"
sodipodi:nodetypes="cc"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1,21 +1,24 @@
Functors
===
With this chapter, we will change the tactic a bit, (as I am sure you are a bit tired of jumping through different subjects), and we will examine some purely categorical concepts, using the structures that we saw so far as context. And we will also generalize some of the concepts that we saw in these structures so they are valid for all categories.
With this chapter, we will change the tactic a bit, (as I am sure you are a bit tired of jumping through different subjects). We will examine some purely categorical concepts, using the structures that we saw so far as context and we will also generalize some of the concepts that we saw in these structures so they are valid for all categories.
Connecting categories
===
We already saw a lot of different types of categories:
Categories that have just one object (monoids, groups)
Categories that have only one morphism between any two objects (preorders, partial orders)
Categories based on logic (here each collection of assertions forms its own category) and (somewhat related) programming language categories.
Categories based on logic (here each collection of assertions forms its own category)
We saw the category of sets as well. And related to it are various categories that are subcategories of the category of sets, for example the set inclusion orders, which only consists of sets of a given number of elements.
And (somewhat related) programming language categories.
But how can we utilize the insights that we get from the fact that so many different things are actually one and the same thing in disquise? To do so we must specify ways to connect one category to another. This is the topic of this chapter.
We saw the category of sets and related to it - various categories that are subcategories of the category of sets, as for example the set inclusion orders, which only consists of sets of a given number of elements.
But how can we utilize the insights that we get from the fact that so many different things are actually one and the same thing in disquise? To do so we must specify ways to connect categories to one another. This is the topic of this chapter.
Categorical Isomorphisms
===
@ -43,14 +46,14 @@ Functors
Unlike two-way relations between two categories may be established only in a very limited set of cases, the one-way relations are very common.
Functors in programming
===
The list functor
---
Functors as maps
===
Diagrams
---
===
Natural transformations
===

View File

@ -6,53 +6,50 @@ About category theory
> Category Theory is considered by many to be an involved domain of study to get into. It becomes a ground for unification of mathematical ideas for a wide variety of domains. And the way it achieves this is by taking an abstract vantage point on the ideas, their properties, and processes in these disciplines. This viewpoint gives it the ability to reason about analogies happening in distinct domains and draw rigorous analogies across the patterns happening in them in a rigorous way.
Source: https://github.com/prathyvsh/category-theory-resources
[Source](https://github.com/prathyvsh/category-theory-resources)
Category theory has a variety of applications:
- It is used in **programming language theory**, for example the usage of monads in functional programming.
- It is used in other scientific disciplines e.g. quantum mechanics:
> The conference series Quantum Physics and Logic (QPL), founded by Peter Selinger in 2003 under a different name (but with the same abbreviation!), was a particularly important forum for the development of the key results leading up to this book. In fact, the first paper about diagrammatic reasoning for novel quantum features (Coecke, 2003) was presented at the first QPL. The categorical formalisation of this result (Abramsky and Coecke, 2004), now referred to as categorical quantum mechanics, became a hit within the computer science semantics community, and ultimately allowed for several young people to establish research careers in this area. **Top computer science conferences (e.g. LiCS and ICALP) indeed regularly accept papers on categorical quantum mechanics, and more recently leading physics journals (e.g. PRL and NJP) have started to do so too**.
> [...] the first paper about diagrammatic reasoning for novel quantum features (Coecke, 2003) was presented at the first QPL. The categorical formalisation of this result (Abramsky and Coecke, 2004), now referred to as categorical quantum mechanics, became a hit within the computer science semantics community, and ultimately allowed for several young people to establish research careers in this area. **Top computer science conferences (e.g. LiCS and ICALP) indeed regularly accept papers on categorical quantum mechanics, and more recently leading physics journals (e.g. PRL and NJP) have started to do so too**.
Source: Picturing Quantum Processes by Bob Coecke (Cambridge University Press - 2017)
- It may also be used as an axiomatic foundation for mathematics, as an alternative to set theory and other proposed foundations.
- Last but not least (perhaps even most importantly) category theory has a very good potential as a *teaching tool* allowing for a variety of concepts:
- Last but not least (perhaps even most importantly) category theory has a very good potential as a *teaching tool* for a variety of other concepts.
About the book
---
I am writing a primer in category theory and of various related concepts in "higher" mathematics that is *really* accessible to people with no prior exposure to the subject without being dumbed down, by utilizing visual explanations.
I am writing a primer in category theory and various related concepts in "higher" mathematics that is *really* accessible to people with no prior exposure to the subject without being dumbed down, by utilizing visual explanations.
My book will serve as chapter 0, going through the gist of the material that any other similar introductory book covers, but covering it in a way that would enable non-mathematicians to swift through with ease.
My book serves as chapter 0 going through the gist of the material that any other similar introductory book covers, but covering it in a way that would enable non-mathematicians to swift through with ease.
Reading it would enable my readers to then effortlessly go through any academic introduction to category theory, as well as to start tacking resources that use category theory as a tool to threat other subjects.
Reading it would enable my readers to effortlessly go through any academic introduction to category theory, as well as to start tacking resources that use category theory as a tool to threat other subjects.
About the author
---
I am a web programmer with background in design and technical communication. I have been studying category theory for many years and applying what I learned in my work.
Similar resources
===
To my knowledge, Category Theory Illustrated does not have any *direct* competition, as the materials I have seen are usually have a much more high barrier to entry.
To my knowledge, Category Theory Illustrated (CTI) does not have any *direct* competition, as the materials I have seen are usually have a much more high barrier to entry.
A good list of category theory introductions can be found here:
Here is [a good list of category theory introductions](https://github.com/prathyvsh/category-theory-resources)
https://github.com/prathyvsh/category-theory-resources
In this document, I will concentrate on my favourite introductions, target the two biggest target audiences for CTI - programmers (nerds) and scientists (academics).
In this document, I will concentrate on the following two:
- Category Theory for Programmers by Bartosz Milewski (self-published- 2018) - [Full text](https://github.com/hmemcpy/milewski-ctfp-pdf/)
- Category Theory for Programmers by Bartosz Milewski (self-published- 2018) - Full text: https://github.com/hmemcpy/milewski-ctfp-pdf/
- Category Theory for the Sciences by David I. Spivak (MIT press - 2014) - [Free version](http://math.mit.edu/~dspivak/CT4S.pdf)
- Category Theory for the Sciences by David I. Spivak (MIT press - 2014) - Free version available at: http://math.mit.edu/~dspivak/CT4S.pdf
I chose those two because:
1. They are the closest to my book that I could find.
2. Their readers (and authors) represent the two biggest target audiences for my book - programmers (nerds) and scientists (academics).
I am attaching excerpts from both of them, as well as one from CTI, that explain the concept of an *order*
For comparison, I am attaching excerpts from both of them, as well as one from CTI, that explain the concept of an *order*
Category Theory for Programmers
---
@ -63,7 +60,7 @@ Category Theory for Programmers
> Its easy to convince yourself that this construction is indeed a category: The arrows are composable because, if a <= b and b <= c then a <= c; and the composition is associative. We also have the identity arrows because every element is (less than or) equal to itself (reflexivity of the underlying relation).
Source: https://bartoszmilewski.com/2015/10/28/yoneda-embedding/
[Source](https://bartoszmilewski.com/2015/10/28/yoneda-embedding/)
Category Theory for the Sciences
---
@ -91,7 +88,7 @@ have
> a.) Decide whether the table to the left in Display (3.9) constitutes a linear order.
> b.) Show that neither of the other tables are even preorders.
Source: http://math.mit.edu/~dspivak/CT4S.pdf (page 93)
[Source](http://math.mit.edu/~dspivak/CT4S.pdf) (page 93)
Orders also discussed on page 132 in the same link
@ -155,6 +152,8 @@ Category Theory Illustrated
> You might say that this law is not as self-evident as the rest of them - if you think about different types of real-life objects that we typically order, you would probably think of some situations in which it does not apply. For example, if we aim to order all people based on soccer skills there are many ways in which we can rank a person compared to their friends their friend's friends etc. but there isn't a way to order groups of people who never played with one another.
[Source](/category-theory-illustrated/04_order)
Features
===
@ -166,23 +165,18 @@ Diagrams
Category theory is very *visual* in its nature. Category-theoretic diagrams are not merely supplemental illustrations for the concepts, but are often the very language that is used to define those concepts e.g. defining a more advanced concept such as *natural transformation* without diagrams is practically impossible. So having a lot of diagrams is essential for people who are inexperienced to understand the concepts.
However, books on category theory typically have as many diagrams as other math textbooks. I consider this a huge missed opportunity for making the subject more approachable, which was the original motivation for the creation of CTI.
However, books on category theory typically have as many diagrams as other math textbooks. I consider this a huge missed opportunity for making the subject more approachable. This was the original motivation for the creation of CTI.
Besides being more in quantity, the diagrams of CTI are many different kinds combining and combine different prioms from traditional communication design, such as the use of color for example, in order to illuminate the different subjects and abstractions that I am covering.
Besides being more in quantity, the diagrams of CTI combine many different prioms from traditional communication design, such as the use of color for example, in order to illuminate the different subjects and abstractions that I am covering.
Both books that I am reviewing have less diagrams than CTI. From the resources that I have examined, the only author who stresses on diagrams as much as I do is Tai-Danae Bradley (her blog is https://www.math3ma.com/).
Both books that I am reviewing have less diagrams than CTI. From the resources that I have examined, the only author who stresses on diagrams as much as I do is Tai-Danae Bradley (her blog is [https://www.math3ma.com/](https://www.math3ma.com/).)
The diagrams in CTI had received universal praise from many audiences. The university professor Gonzalo Casas used some of them for his lectures on robotic fabrication at ETH Zurich.
Lecture slides:
https://raw.githubusercontent.com/compas-teaching/COMPAS-II-FS2021/main/lecture_06/lecture_06.pdf
Other lecture resources
https://github.com/compas-teaching/COMPAS-II-FS2021/tree/main/lecture_06
The diagrams in CTI had received universal praise from many audiences. The university professor Gonzalo Casas used some of them for his [lectures on robotic fabrication at ETH Zurich](https://github.com/compas-teaching/COMPAS-II-FS2021/tree/main/lecture_06) ([Lecture slides](https://raw.githubusercontent.com/compas-teaching/COMPAS-II-FS2021/main/lecture_06/lecture_06.pdf).)
Verbosity of language
---
Leaving the diagrams aside, we can see that the descriptions in CTI are much more verbose than equivalent descriptions in other books. This is clearly visible in the excerpts published - although the authors of the books that I am reviewing have quite different styles of presentation, they both move much faster with the exposition, which would be OK for readers who have prior experience with math and computer science, but would be impossible to follow by a newbie in category theory, without either rereading each part a lot of times or doing cross-reference with secondary resources, most likely both (I know that from my own experience).
Leaving the diagrams aside, the descriptions in CTI are much more verbose than equivalent descriptions in other books. This is clearly visible in the excerpts attached: although the authors of the books that I am reviewing have quite different styles of presentation, they both move much faster with the exposition, which would be OK for readers who have prior experience with math and computer science, but would be very hard to follow by lay people (I know that from my own experience).
In CTI, I try above all to keep a really slow pace and be gentle in my exposition, taking the time to stress out the important parts of the descriptions and the places where misunderstanding might occur, such as the fact that the term "object" has entirely different meanings in computer science and in category theory.
@ -196,80 +190,68 @@ CTI has a dedicated chapter on logic (the longest one in the book), which introd
Target audiences
===
The types of people who read CTI:
The types of audiences of CTI.
Programmers, who are curious about category theory, because they are into functional programming.
Programmers
---
Functional programming is on the rise with both new languages and technologies that are gaining traction (Elixir, Clojure), and mainstream languages, trying to catch up (Java, JavaScript). There are many programmers who are interested in Category theory, but lack the math background to tackle the existing resources. CTI is a way for those people to understand "what the fuss is about" and then study
### who are curious about category theory, because they are into functional programming.
Students who are studying category-theory-related disciplines
Functional programming is on the rise with both new languages and technologies that are gaining traction (Elixir, Clojure), and mainstream languages, trying to catch up (Java, JavaScript). There are many programmers who are interested in functional programming and category theory, but lack the math background to tackle the existing resources. CTI is a way for those people to understand "what the fuss is about" before diving to such technologies.
Students
---
Having a just a little insight in category theory opens the gate to a growing number of resources that use category theory and diagrammatic language to introduce other subjects:
### who are studying category-theory-related disciplines
CTI would be of much help for people who want to study category theory or any of the growing number of resources that use category theory and diagrammatic language to introduce other subjects:
- Picturing Quantum Processes by Bob Coecke and Aleks Kissinger (Cambridge University Press - 2017) that uses it to introduce quantum mechanics
By the way, I showed Bob the first few chapters of CTI and he liked them :)
- Visual Group Theory by Nathan Carter (MATHEMATICAL ASSOCIATION OF AMERICA - 2009) sample: http://www.mathcs.emory.edu/~dzb/teaching/421Fall2014/VGT-Ch-1-2.pdf
- "Topology. A Categorical Approach" by Tai-Danae Bradley, Tyler Bryson and John Terilla (MIT press - 2020)
As David Spivak puts it in his review of "Topology. A Categorical Approach":
> This book is at the leading edge of what will *likely become a major pedagogical trend in mathematics: teaching the fundamentals from a categorical perspective*.
> This book is at the leading edge of what will **likely become a major pedagogical trend in mathematics: teaching the fundamentals from a categorical perspective**.
Any other kind of nerds who want to learn some mathematics just for fun.
CTI aids students who are studying these disciplines by communicating what is considered as a "common knowledge" by category theorists.
Any other kind of nerds
---
### who want to learn some mathematics just for fun
Aside from being informative, CTI is easy and fun to read, so many people read it just as a form of recreation.
Aside from being informative, CTI is easy and fun to read so many people read it just as a form of recreation.
Feedback
===
I have reseived a lot of positive feedback on CTI, and a lot of people shared it on social media.
My book received a lot of positive feedback and a lot of people shared it on social media.
Comments
---
> This is the most beautiful and clearly written introduction to categories Ive ever seen. Highly recommended.
> This is the most beautiful and clearly written introduction to categories Ive ever seen. Highly recommended. [Source](https://twitter.com/y0b1byte/status/1417567589241339912)
https://twitter.com/y0b1byte/status/1417567589241339912
> Great stuff man! Internet needs more accessible Category Theory expositions. [Source](https://twitter.com/prathyvsh/status/1253303971185221634)
> Great stuff man! Internet needs more accessible Category Theory expositions.
https://twitter.com/prathyvsh/status/1253303971185221634
> What a wonderful resource this Illustrated Category Theory series is. It's an easy(ier), concise, on-ramp to the topic, that would make a nice introduction. A good resource for sharing. I look forward to the remaining topics. Thanks Boris! [Source](https://www.reddit.com/r/haskell/comments/mhs3ov/category_theory_illustrated/gt9xbp9?utm_source=share&utm_medium=web2x&context=3)
> What a wonderful resource this Illustrated Category Theory series is. It's an easy(ier), concise, on-ramp to the topic, that would make a nice introduction. A good resource for sharing. I look forward to the remaining topics. Thanks Boris!
> Awesome website! Well written and crystal clear. It's truly a feat to explain simply such a complex topic. [Source](https://news.ycombinator.com/item?id=26659190)
https://www.reddit.com/r/haskell/comments/mhs3ov/category_theory_illustrated/gt9xbp9?utm_source=share&utm_medium=web2x&context=3
> My God that site is beautiful. If only every "maths" site could looks like this, I'd have won a field medal! [Source](https://news.ycombinator.com/item?id=26660369)
> Awesome website! Well written and crystal clear. It's truly a feat to explain simply such a complex topic.
> I saw your site on Hacker News. I just wanted to send a note saying it's beautiful! I have been writing Haskell (PureScript really) for years, and I've been wanting to get more into Category Theory. I'm excited to read through your site, and thanks for taking the time to create it! (received by email)
https://news.ycombinator.com/item?id=26659190
> Thank you for creating Category Theory Illustrated, for me the book makes the concepts easier to understand and build an intuition. (received by email)
> My God that site is beautiful. If only every "maths" site could looks like this, I'd have won a field medal!
https://news.ycombinator.com/item?id=26660369
> I saw your site on Hacker News. I just wanted to send a note saying it's beautiful! I have been writing Haskell (PureScript really) for years, and I've been wanting to get more into Category Theory. I'm excited to read through your site, and thanks for taking the time to create it!
(received by email)
> Thank you for creating Category Theory Illustrated, for me the book makes the concepts easier to understand and build an intuition.
(received by email)
Discussions:
Discussions
---
Lobsters: https://lobste.rs/s/bc11fo/category_theory_illustrated_monoids
[Lobste.rs](https://lobste.rs/s/bc11fo/category_theory_illustrated_monoids)
HackerNews: https://news.ycombinator.com/item?id=26658111
[HackerNews](https://news.ycombinator.com/item?id=26658111)
Twitter shares:
---
https://twitter.com/search?q=category-theory-illustrated&src=typed_query&f=live
[Twitter](https://twitter.com/search?q=category-theory-illustrated&src=typed_query&f=live)

41
todo.md
View File

@ -1,41 +0,0 @@
Under the section "Maximum and Minimum", I wasn't sure if the "maximum element" was being defined as being an element "bigger than all other elements" or defined as an element "not smaller than any element".
In addition, the following sentence and diagram is a bit confusing. The red and green are not bigger than all other elements (so maybe the maximum definition is "not smaller than any element"?).
# First possible typo
With respect to category theory, it states.
> 1. We have a morphism from any of the elements of the coproduct to the coproduct, so Y → G and B → G.
Then, with respect to orders, it states.
> 1. It is bigger than both of these objects, so Y ≤ G and P ≤ G.
I suspect that correct statement may be "so Y ≤ G and B ≤ G" because "P" is not defined yet and it didn't draw a parallelism with the aforementioned category theory statement.
# Second possible typo
With respect to category theory, it states.
> 2. For any other object P that also has those morphisms, so for any P such that P ≤ G and P ≤ B, we would have morphism G → P.
Here my intuition thinks it should be "so for any P such that Y ≤ P and B ≤ P"
With respect to orders, it states.
> 2. It is smaller than any other object that is bigger than them, so for any other object P such that P ≤ G and P ≤ B then we should also have G ≤ P
Here my intuition thinks it should be "so for any other object P such that Y ≤ P and B ≤ P then we should also have G ≤ P"
Take this comments with a grain of salt, since I am no mathematician and these comments are based on intuition rather than logic.
I think there might be an error in the colors on this page: https://boris-marinov.github.io/category-theory-illustrated/02_category/
https://boris-marinov.github.io/category-theory-illustrated/02_category/product.svg
Shouldn't the orange element from b be red in B x Y?