massive update - chapters 1 and 2

This commit is contained in:
Boris Marinov 2021-12-09 21:33:37 +02:00
parent 65689e6d5e
commit 88096528df
30 changed files with 5135 additions and 578 deletions

View File

@ -14,17 +14,52 @@ title: About
{: style="text-align: right" }
Tom Lehrer
About this book
===
This book is a product of my own endeavour of understanding category theory. It is just that as I am explaining something, I am understanding it better. It is aimed at programmers, as well as anyone else who is interested in this stuff.
The discipline of mathematics has always suffered from the fact that it is viewed as "science's workhorse". According to this view, mathematics is only "useful" as a means for making it easier for scientists and engineers to do their job making technological and and scientific advancements i.e. it is viewed as a tool for solving problems.
The main reason I am interested in category theory is that it allows us to formalise some common concepts that we use in our daily (intellectual) lives. Much of our language is based on intuition and rightfully so: relying on intuition is a very easy way to get your point across so it is understood by other human beings. However, that is part of the problem: sometimes intuition makes it too easy to communicate with someone. So easy that he might, in fact, understand things that you haven't actually said. For example, when I say that two things are equal, it would seem obvious to you what I mean, although it isn't obvious at all (how are they equal, at what context etc). That is the place when we might want to provide a more rigorous definition of what am I saying. This is a way to make it clearer and more understandable not only for our audience, but for ourselves. But providing such definition in natural language, which is designed to use intuition as a means of communication, is no easy task.
And although many people don't subsribe to this view specifically, we can see it encoded inside the structure of most mathematics text books - each chapter starts with an explanation of a concept, followed by some examples and then ends with a list of problems that this concept solves.
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.
There is nothing wrong with this approach, but mathematics is so much more than solving problems. It was a the basis of a religious cult in ancient Grece (the Pythagoreans), it was seen by philosophers as means to understanding the laws which govern the universe. It was (and still is) a language, which can allow for people with different cultural backgrounds understand each other. And it was also art and a means of entertainment.
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.
Category theory embodies all these aspects of mathematics. It's visual language is, I think a very good grounds to writing a book where all of them shine - a book that is based not on solving of problems, but on exploration of concepts and on seeking connections between them.
About category theory
===
The main reason I am interested in category theory is that it allows us to formalise some common concepts that we use in our daily (intellectual) lives. Much of our language is based on intuition as intuition is a very easy way to get your point across. However, that is part of the problem: sometimes intuition makes it *too easy* to communicate with someone, so easy that he might, in fact, understand things that you haven't actually said. For example, when I say that two things are equal, it would seem obvious to you what I mean, although it isn't obvious at all (how are they equal, at what context etc).
In such occasions we strive to use a more rigorous definition of what we are saying. This is a way to make it clearer and more understandable not only for our audience, but for ourselves. But providing such definition in natural language, which is designed to use intuition as a means of communication, is no easy task.
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 sense, category theory is a way to unify knowledge, both mathematical and scientific, and to bring various modes of thinking in common therms.
Summary
===
In this book we will visit various such modes of knowledge and along the way, we would see all other kinds of mathematical objects, viewed under the prism of categories.
We will start with *set theory* in chapter 1, which is the original way to formalize different mathematical concepts.
Chapter 2 we will do a (hopefully) gentle transition from sets to *categories* while showing how the two compare and (finally) introducing the definition of category theory.
In the next two chapters, 3 and 4 we would jump to two different branches of mathematics and will introduce their main means of abstraction, *groups and orders*, and we will see how do they connect to the core category-theoretic concepts that we introduced earlier.
Chapter 5 also follows the main formula of the previous two chapters, and it gets to the heart of the matter of why category theory is a universal language, by showing it's connection with the ancient discipline of *logic*. As in chapters 3 and 4 we start with a crash course of logic itself.
The connecting between all these different disciplines is examined in chapter 6, using one of the moist interesting category-theoretical concepts - the concept of a functor.
In chapter 7 we review another more interesting and more advanced categorical concept the concept of a *natural transformation*.
<!--
Who is this book for
===
It is aimed at programmers, as well as anyone else who is interested in this stuff.
How is the book organized
===
-->
Acknowledgements
===

View File

@ -6,7 +6,7 @@ title: Sets
Sets
===
Let's begin our inquiry by looking at the basic theory of sets. Set theory and category theory share many similarities. We can view category theory is a *generalization* of set theory. That is it is is meant to describe the same thing as set theory (everything?), but to do it in a more absract manner, one that is more versatile and (hopefully) simpler.
Let's begin our inquiry by looking at the basic theory of sets. Set theory and category theory share many similarities. We can view category theory is a *generalization* of set theory. That is, it is meant to describe the same thing as set theory (everything?), but to do it in a more abstract manner, one that is more versatile and (hopefully) simpler.
In other words sets are an *example of a category* (the *proto-example*, we might say), and it is useful to have examples.
@ -37,11 +37,11 @@ People have tried to be precise and at the same time down to Earth for centuries
Sets
===
Perhaps unsurprisingly, everything in set theory is defined in terms of sets. A set is an collection of things where the "things" can be anything you want (like individuals, populations, genes etc.) Consider, for example, these balls.
Perhaps unsurprisingly, everything in set theory is defined in terms of sets. A set is a collection of things where the "things" can be anything you want (like individuals, populations, genes etc.) Consider, for example, these balls.
![Balls](elements.svg)
Let's construct a set, call it \\(G\\) (as gray) that contains *all* of them as elements. There can only be one such set: Because a set has no structure (there is not order, no ball goes before or after another, there are no members which are "special" with respect to their membership of the set) two sets that contain the same elements are just two pictures of the same set.
Let's construct a set, call it $G$ (as gray) that contains *all* of them as elements. There can only be one such set: Because a set has no structure (there is not order, no ball goes before or after another, there are no members which are "special" with respect to their membership of the set) two sets that contain the same elements are just two pictures of the same set.
![The set of all balls](all.svg)
@ -52,11 +52,11 @@ The key insight that makes the concept useful is the fact that it enables you to
Subsets
---
Let's construct one more set. The set of *all balls that are warm color*. Let's call it \\(Y\\) (because in the diagram is colored in **y**ellow.)
Let's construct one more set. The set of *all balls that are warm color*. Let's call it $Y$ (because in the diagram is colored in **y**ellow.)
![The set of all balls of warm colors](subset.svg)
Notice that \\(Y\\) contains only elements that are also present in \\(G\\). That is, every element of the set of \\(Y\\) is also an element in the set \\(G\\). When two sets have this relation, we may say that \\(Y\\) is a *subset* of \\(G\\) (or \\(Y \subseteq G \\) ). A subset resides completely inside its superset When the two are drawn together.
Notice that $Y$ contains only elements that are also present in $G$. That is, every element of the set of $Y$ is also an element in the set $G$. When two sets have this relation, we may say that $Y$ is a *subset* of $G$ (or $Y \subseteq G$). A subset resides completely inside its superset When the two are drawn together.
![Y and G together](set_subset.svg)
@ -72,13 +72,13 @@ What's the point of the singleton set? Well, it is part of the language of set t
The Empty set
---
Of course if one is a valid answer, so can be zero. If we want a set of all *black balls* \\(B\\) or all the *white balls*, \\(W\\), the answer to all these questions is the same - the empty set. Or in other words.
Of course if one is a valid answer, so can be zero. If we want a set of all *black balls* $B$ or all the *white balls*, $W$, the answer to all these questions is the same - the empty set.
![The empty set](void.svg)
Note that a set is defined only by the items it contains, which means that there is no difference between the set that contains zero *balls* and the set that contains zero *numbers*, for instance. In other words, the empty set is *unique* set, which makes it a very special one. Formally, the empty set is marked with the symbol \\(\varnothing\\) (so \\(B = W = \varnothing\\)).
Because the a set is defined only by the items it contains, the empty set is *unique*- there is no difference between the set that contains zero *balls* and the set that contains zero *numbers*, for instance. Formally, the empty set is marked with the symbol $\varnothing$ (so $B = W = \varnothing$).
The empty set is a special one, for example, it is a subset of every other set or mathematically speaking, \\(\forall A \to \varnothing \subseteq A\\)) (\\(\forall\\) means "for all")
The empty set is a special one, for example, it is a subset of every other set or mathematically speaking, $\forall A \to \varnothing \subseteq A$ ($\forall$ means "for all")
Functions
===
@ -86,31 +86,36 @@ Functions
> By function I mean the unity of the act of arranging various representations under one common representation.
> Immanuel Kant, from Critique of Pure Reason
A function is a relationship between two sets that matches each element of one set, called the *source set* of the function, with exactly one element from another set, called the **target set** of the function.
A function is a relationship between two sets that matches each element of one set, called the *source set* of the function, with exactly one element from another set, called the *target set* of the function.
These two sets are also called the *domain* and *codomain* of the function, or its *input* and *output*. In programming, they go by the name of *argument type* and *return type*. In logic, they correspond to the *premise* and *conclusion* (we will get there.) We might also say, depending on the situation, that a given function *goes* from this set to that other one, *connects* this set to the other, or that it *converts* a value from of this set to one of the the other one. These different terms demonstrate the multifaceted nature of the concept of function.
These two sets are also called the *domain* and *codomain* of the function, or its *input* and *output*. In programming, they go by the name of *argument type* and *return type*. In logic, they correspond to the *premise* and *conclusion* (we will get there.) We might also say, depending on the situation, that a given function *goes* from this set to that other one, *connects* this set to the other, or that it *converts* a value from of this set to a value from the other one. These different terms demonstrate the multifaceted nature of the concept of function.
Here is a function, \\(f\\) which converts each ball from the set \\(R\\) to the ball with the opposite colour in another set \\(G\\) (in mathematics a function's name is often accompanied by the names of its source and target sets, like this: \\(f: R → G\\))
Here is a function, $f$ which converts each ball from the set $R$ to the ball with the opposite color in another set $G$ (in mathematics a function's name is often accompanied by the names of its source and target sets, like this: $f: R → G$)
![Opposite colors](function_one_one.svg)
This is probably one of the simpler types of functions there exists. That is because it encodes a *one-to-one relationship* between the sets - *one* element from the source is connected to exactly *one* element from the target (and the other way around).
This is probably one of the simplest type of functions that exist - one which encodes a *one-to-one relationship* between the sets - *one* element from the source is connected to exactly *one* element from the target (and the other way around).
But functions can also express relationships of the type *many-to-one*, where *many* elements from the source might be connected to *one* element from the target (but not the other way around). For example, a function can express a relationship in which several elements from the source set relate to the same element of the target set.
![Function from a bigger set to a smaller one](function_big_small.svg)
It can also express relationships in which some elements from the target set do not play a part.
Such functions might represent operations such as *categorizing* a given collection of objects by some criteria, or partitioning them, based on some property that they might have.
A function can also express relationships in which some elements from the target set do not play a part.
![Function from a smaller set to a bigger one](function_small_big.svg)
One thing that you cannot have is a source element which is not mapped to anything, or which is mapped to more than one target element. That would mean the relationship expressed by the function will be *many-to-many*, and, as we said in the beginning, functions are many-to-one relationships. There is a reason for that "design decision", and we will arrive at it shortly.
An example might be the relationship between some kind of pattern or structure and the emergence of this pattern in some more complicated context.
Sets and functions can express relationships between all kinds of objects, and even people. Every question that you ask can most probably be expressed as a function.
We saw how versatile functions are, but there is one thing that you cannot have in a function. You cannot have a source element that is not mapped to anything, or that is mapped to more than one target element - that would constitute a *many-to-many* relationship and as we said functions express many-to-one relationships. There is a reason for that "design decision", and we will arrive at it shortly.
The question "How far are we from New York?" is a function with set of all places in the world as source set and an target set consisting of the set of all positive numbers.
Functions in everyday life
---
**Question:** Some people might say that the target of this function is bigger than it should be. How would you refine it?
Sets and functions can express relationships between all kinds of objects, and even people. Every question that you ask that has an answer can be expressed as a function.
The question "How far are we from New York?" is a function with set of all places in the world as source set and its target set consisting of the set of all positive numbers.
The question "Who is my father?" is a function whose source is the set of all people in the world.
@ -123,11 +128,11 @@ Note that the question "Who is my child?" is *NOT* a straightforward function, b
The Identity Function
---
For every set **G**, no matter what it represents, we can define the function that does nothing, or in other words, a function which maps every element G to itself. It is called the *the identity function* of **G** or **id G: G → G**.
For every set $G$, no matter what it represents, we can define the function that does nothing, or in other words, a function which maps every element of $G$ to itself. It is called the *the identity function* of $G$ or $idG: G → G$.
![The identity function](function_identity.svg)
You can think of **id G** as a function which represents the set **G** in the realm of functions. Its existence allows us to prove many theorems, that we "know" by intuition, formally.
You can think of $idG$ as a function which represents the set $G$ in the realm of functions. Its existence allows us to prove many theorems, that we "know" by intuition, formally.
Functions and Subsets
---
@ -149,7 +154,7 @@ There is a unique function from the empty set to any other set.
Note that this statement is also a result from the one saying that there is a function between a Subset and a Set, and the one that says that the empty set is a subset of any other set.
**Question:** What about the other way around. Are there functions with the empty set as an target as opposed to its source?
**Question:** What about the other way around. Are there functions with the empty set as a target as opposed to its source?
Functions and Singleton Sets
---
@ -162,18 +167,20 @@ There is a unique function from any set to any singleton set.
**Question:** Again, what about the other way around?
Sets and Functions
Sets and Functions with numbers
===
Many things can be expressed as sets and functions, let's examine some of them.
All numerical operations can be expressed as functions, acting on the set of (different types of) numbers.
Sets and Functions in Numbers
Number sets
---
All mathematical operations can be expressed as functions, acting on the set of numbers. Actually there are several such sets, such the set of positive whole numbers, (also called "natural" numbers), **N := {1, 2, 3... ∞}**, the set of both positive and negative whole numbers **Z := {-∞... -3 -2, -1, 0, 1, 2, 3... ∞}**. And the set of "Real" numbers which include all numbers that I know of.
Because not all functions work on all numbers, we separate the set of numbers to several sets many of which are subsets to one another, such the set of whole numbers $\mathbb{Z} := {-\infty... -3 -2, -1, 0, 1, 2, 3... \infty }$, the set of positive whole numbers, (also called "natural" numbers), $\mathbb{N} := {1, 2, 3... \infty }$. We also have the set of Real numbers $\mathbb{R}$ (which includes almost all numbers and the set of positive real numbers (or $\mathbb{R}_{>0}$).
For example, squaring a number is a function from the set of real numbers to the set of real positive numbers (because both sets are infinite, we cannot draw them in their entirety, however we can draw a part of them).
Number functions
---
Each numerical operation is a function between two of these sets. For example, squaring a number is a function from the set of real numbers to the set of real positive numbers (because both sets are infinite, we cannot draw them in their entirety, however we can draw a part of them).
![The square function](square.svg)
@ -184,7 +191,7 @@ I will use the occasion to reiterate some of the more important characteristics
- Zero from the source set is connected to itself in the target set - that is permitted.
- Some numbers aren't the square of any other number - that is also permitted.
Overall everything is permitted, as long as you can always provide exactly one result (also known as *The result™*) per value, and in mathematics almost always do. Actually, math is designed in a way so its operations are valid functions:
Overall everything is permitted, as long as you can always provide exactly one result (also known as *The result™*) per value. For numerical operations, this is always true, simply because math is designed in a way.
> Every generalization of number has first presented itself as needed for some simple problem: negative numbers were needed in order that subtraction might be always possible, since otherwise a b would be meaningless if a were less than b; fractions were needed in order that division might be always possible; and complex numbers are needed in order that extraction of roots and solution of equations may be always possible.
> Bertrand Russell, from Introduction to Mathematical Philosophy
@ -192,48 +199,58 @@ Overall everything is permitted, as long as you can always provide exactly one r
Note that most mathematical operations, such as addition, multiplication etc. require two numbers in order to produce a result. This does not mean that they are not functions, it means that they are just a little more fancy ones. Depending on what we need, we may present those operations as functions from the sets of *tuples* of numbers to the set of numbers, or we may say that they take a number and return a function. More on that later.
Sets and Functions in Programming
===
Sets are used extensively in programming, especially in their incarnation as *types* (also called *classes*). All sets of numbers that we discussed earlier also exist in most languages as types.
Sets and types
---
Sets are used extensively in programming, especially in their incarnation as *types* (or also *classes*). All sets of numbers that we discussed earlier also exist in most languages as types, and there are also some non-mathematical types that play a huge role in programming.
The simplest type, `Boolean` is nothing more than a set of two values - `true` and `false`:
Sets are not exactly the same thing as types, but all types are (or can be seen as) sets, for example, we can view the `Boolean` type as a set containing two elements - `true` and `false`.
![Set of boolean values](boolean.svg)
Another very basic set in programming is the set of keyboard characters, or `Char`:
Another very basic set in programming is the set of keyboard characters, or `Char`. Characters are actually used rarely by themselves and mostly as parts of sequences.
![Set of characters](char.svg)
Characters are actually used rarely by themselves and mostly as parts of sequences.
Most of the types of programming are composite types - they are a combination of the primitive types that are listed here. Again, we will cover these later.
Most of the types of programming are composite types - they are a combination of the primitive ones that are listed here. Again, we will cover these later.
**Question:** What is the type equivalent of subsets in programming?
**Question:** Do you recognize some of the basic functions we defined in programming languages you know?
Functions and methods/subroutines
---
Some functions in programming (also called methods, subroutines, etc.) kinda resemble mathematical functions - they sometimes take one value of a given type (or in other words, an element that belongs to a given set) and always return exactly one element which belongs to another type (or set). For example here is a function which that takes an argument of type `Char` and returns a `Boolean`, depending on whether the character is a letter.
![A function from Char to Boolean](char_boolean.svg)
However functions in programming can also be quite different from mathematical functions - they can perform various operations that have nothing to do with returning a value, called side effects. This is because most common programming languages and paradigms which are in use today were created at times when the computer resources were much more limited than today, and programming - much more cumbersome, so people had bigger problems than the fact that their functions were not mathematically sound.
However functions in most programming languages can also be quite different from mathematical functions - they can perform various operations that have nothing to do with returning a value, which are sometimes called side effects.
One type of functions used in programming which strongly resembles mathematical ones are those which convert a value from one type to another, for example, the function which converts a floating-point number to an Integer. That is probably the reason why most functional languages are strongly-typed.
Why are functions in programming different? Well, at the time when most programming paradigms that are in use today were created, computer resources were much more limited than today, and programming - much more cumbersome, so people had bigger problems than the fact that their functions were not mathematically sound. Nowadays, many people feel that mathematical functions are too limiting and hard to use.
Sets and Types
They might be right, mathematical functions have one big advantage over non-mathematical ones - their type signature tells you everything that the function does. This is probably the reason why most functional languages are strongly-typed.
Purely-functional programming languages
---
The concepts of types and sets are related. The concept of sets is simpler - in set theory you have only one kind of object that is (you guessed it) - set and a set can contain anything, including other sets. In type theory, you have two concepts - types and values. Types are like sets, in fact every type can be represented as a set of its values, but *not every set is a type*. Usually, the proper way to think about type is as a collection of values that *share common characteristics*. The definitions tend to vary between different type theories (of which there are a lot), but mostly go along the lines of:
We said that, while all mathematical functions are also programming functions, the reverse is not true for *most* programming languages. There are some languages, that don't permit non-mathematical functions, and for which this equality holds. They are called *purely-functional* programming languages
- A type cannot contain other types, just values.
- value can be a member of only one type (there exist the concept of are subtypes, just as there are subsets, but again things are more strict).
A peculiarity in such languages is that they don't directly allow for writing functions that perform operations other than returning values, like rendering stuff on screen, I/O etc.
In purely functional programming languages, such operations are outsourced to the language's runtime, using a style of programming called *continuation passing style*.
{% if site.distribution == 'print'%}
Russell's Paradox
Interlude - type theory
===
Type theory and set theory are related in that type theory can be seen as a more restrictive version of set theory. In set theory you have only one kind of object that is (you guessed it) - set and a set can contain anything, including other sets. In type theory, you generally have two concepts - types and values.
Russell's paradox
---
The first type theory was developed by Bertrand Russell in response to a paradox in the original set theory, arising due to the fact that, unlike types (which can only contain *values*), sets can contain other sets.
In order to understand type theory better, it's useful to see why it was created originally and its first formulation was developed by Bertrand Russell in response to a paradox in the original formulation of set theory (called *naive* set theory today), arising due to the fact that, unlike types (which can only contain *values*), sets can contain other sets.
In particular, a set can contain itself.
@ -243,97 +260,162 @@ Unlike the set above, most sets that we discussed (like the empty set and single
![Sets that don't contains themselves](sets_dont_contain_themselves.svg)
In order to understand Russell's paradox we will try to visualize **the set all sets that do not contain themselves**. In the original set notation we can define this set as *Let R = { x => x ∉ x }* (let R be such that it contains all sets *x* such that *x* is not a member of *x*).
In order to understand Russell's paradox we will try to visualize *the set all sets that do not contain themselves*. In the original set notation we can define this set to be such that it contains all sets $x$ such that $x$ is not a member of $x$), or $\{x \mid x ∉ x \}$
![Russel's paradox - option one](russells_paradox.svg)
If we look at the definition, we recognize that the set that we just defined - *R* does not contain itself and therefore it belongs there as well.
If we look at the definition, we recognize that the set that we just defined does not contain itself and therefore it belongs there as well.
![Russel's paradox - option one](russells_paradox_2.svg)
Hm, something is not quite right with this diagram as well - Because of the new adjustments that we made *R* **contains itself**. And removing it from the set would just bring us back to the previous situation. This is Russell's paradox. There are, of course, multiple theories that it does not apply to.
Hmm, something is not quite right with this diagram as well - because of the new adjustments that we made, our set now *contains itself*. And removing it from the set would just bring us back to the previous situation. So this is Russell's paradox.
From set theory to type theory
---
To avert this and related paradoxes, we have to impose certain restrictions to the ways in which you can define sets. And while doing so is possible without any significant changes to the set theory's core (the new paradox-free "version" of set theory by *Zermelo and Fraenkel* is still in use today), Russell himself took a different route and he developed an entirely new mathematical theory that is *like set theory*, but which is much more strict and rigid.
The theory of types defines two primitive concepts - *types and values* which correspond to *sets and set elements*, but at the same time differ in many respects.
Types
---
Types contain values, so they are like sets in this respect (although this is not true for all formulations of type theory). In fact, every type can be seen as a set of its values. However, unlike sets, which can contain other sets, *a type cannot contain other types*. And so, *not every set is a type* (although the reverse is true.) The proper way to think about type is as a collection of values that *share some common characteristics*.
Values
---
Values are like set elements, in that they constitute the contents of a type. However, while a given object can be an element of many sets, a given value *belongs to only one type* (we can also say that it *is* a given type) i.e. the type of each value is an intrinsic property of the value.
This may seem weird at first, e.g. when we create a subtype for example, as in the type-theoretic example of our constructing the set of all balls with warm colors, we end up with two instances of all objects that are members of both types, but it actually makes sense after we get used to it, after all we can always convert the more general version of the value to the more specific one, using the function that exist between each set and its subset.
Conclusion
---
I won't get into more details, as there are many versions of type theories which are very different from one another, so examining them wouldn't be easy (e.g. if we look into programming languages, each language uses a different type system and different ways to construct subtypes.) Instead, we will return to using set theory, which in contrast has just a few formulations that are very similar to one another.
But the choice of formal system is not important - all concepts that we are examining here are so essential that they have their counterparts in all set and type theories.
{%endif%}
Functional Composition
===
Let's assume that we have two functions, **g: Y → P** and **f: P → G** and the target of the first one is the same set as the source set of the second one.
Now, we were just about to reach the heart of the matter regarding the topic of functions. And that is functional composition. Assume that we have two functions, $g: Y → P$ and $f: P → G$ and the target of the first one is the same set as the source of the second one.
![Matching functions](functions_matching.svg)
If we apply the first function **g** to some element from set **Y**, we will get an element of the set **P**. Then, if we apply the second function **f** to *that* element, we will get an element from type **G**.
If we apply the first function $g$ to some element from set $Y$, we will get an element of the set $P$. Then, if we apply the second function $f$ to *that* element, we will get an element from type $G$.
![Applying one function after another](functions_one_after_another.svg)
We can define a new function, that is the equivalent to performing the operation described above. Let us call it **h: Y → G**. We may say that **h** is the *composition* of **g** and **f**, or **h = f ∘ g** (notice that the first function is on the right, so it's similar to **b = f(g(a)**).
We can define a function that is the equivalent to performing the operation described above. Let us call it $h: Y → G$. We may say that $h$ is the *composition* of $g$ and $f$, or $h = f \bullet g$ (notice that the first function is on the right, so it's similar to $b = f(g(a)$).
![Functional composition](functions_compose.svg)
Composition is the essence of all things categorical. The key insight is that the sum of two parts is no more complex than the parts themselves.
Composition is the essence of all things categorical. The key insight is that the sum of two parts is no more complex than the parts themselves.
**Question:** The definition of functional composition (presented in the second paragraph) relies on the fact that functions are many-to-one relationships between sets. How could functional composition work for many-to-many relationships? Can it work at all?
Representing Composition with Commutative Diagrams
---
In the last diagram, the equivalence between **f ∘ g** and the new function **h** is expressed by the fact that if you follow the arrow **h** for any element of set **Y** you will get to the same element of the set **G** as the one you will get if you follow the **g** and then follow **f**. Diagrams that express such equivalence between sequences of function application are called *commutative diagrams*.
![Functional composition](functions_compose.svg)
If we "zoom-out" the last diagram so it does not show the individual set elements, we get a more general view of functional composition.
![Functional composition for sets](functions_compose_sets.svg)
In fact, because this diagram commutes (that is, all arrows, starting from a given set element ultimately lead to the same corresponding element from the resulting set), enumerating the elements is redundant. Having this insight allows us to redefine functional composition in the following, more visual, way:
The composition of two functions **f** and **g** is a third function **h** defined in such a way that this diagram commutes.
![Functional composition - general definition](functions_compose_general.svg)
This is called an *external diagram*, by the way (and the ones that we saw before are internal).
**Question:** Think about which are the qualities of a function that make composition possible. e.g. does it work with other types of relationships, like many-to-many and one-to-many.
The Power of Composition
---
To understand how powerful composition is, consider the following: one set being connected to another means that each function from the second set can be transferred to a corresponding function from the first one.
If we have a function **g: P → Y** from set **P** to set **Y**, then for every function **f** from the set **Y** to any other set, there is a corresponding function **f ∘ g** from the set **P** to the same set. In other words, every time you define a new function from **Y** to some other set, you gain one function from **P** to that same set for free.
If we have a function $g: P → Y$ from set $P$ to set $Y$, then for every function $f$ from the set $Y$ to any other set, there is a corresponding function $f \bullet g$ from the set $P$ to the same set. In other words, every time you define a new function from $Y$ to some other set, you gain one function from $P$ to that same set for free.
![Functional composition connect](morphism_general.svg)
For example, if we again take the relationship between a person and his father as a function, with the set of all people in the world as source, and the set of all people that have children as its target, then each person whom my father is related to is automatically my relative - my father's father is my grandfather, my father's wife is my mother and so on.
For example, if we again take the relationship between a person and his mother as a function, with the set of all people in the world as source, and the set of all people that have children as its target, composing this function with other similar functions would give us all relatives on a person's mother side.
Isomorphisms
Although you might be seeing functional composition for the first time, the intuition behind it is there - we all know that each person whom our mother is related to is automatically our relative as well - our mother's father is our grandfather, our mother's partner is our father etc.
Representing Composition with Commutative Diagrams
---
In the last diagram, the equivalence between $f \bullet g$ and the new function $h$ is expressed by the fact that if you follow the arrow $h$ for any element of set $Y$ you will get to the same element of the set $G$ as the one you will get if you follow the $g$ and then follow $f$. Diagrams that express such equivalence between sequences of function applications are called *commutative diagrams*.
![Functional composition](functions_compose.svg)
If we "zoom-out" the view of the last diagram so it does not show the individual set elements, we get a more general view of functional composition.
![Functional composition for sets](functions_compose_sets.svg)
In fact, because this diagram commutes (that is, all arrows, starting from a given set element ultimately lead to the same corresponding element from the resulting set), this view is a more appropriate representation of the concept (as enumerating the elements is redundant).
Having this insight allows us to redefine functional composition in a more visual way.
> The composition of two functions $f$ and $g$ is a third function $h$ defined in such a way that this diagram commutes.
![Functional composition - general definition](functions_compose_general.svg)
Diagrams that show functions without showing the elements of the sets are called *external diagrams*, as opposed to the and the ones that we saw before, which are *internal*.
At this point you might be worried that I had forgotten that I am supposed to talk about category theory and I am just presenting a bunch of irrelevant concepts. I really tend to do that, but not now - the fact that *functional composition* can be presented without even mentioning category theory doesn't stop it from being one of the category theory's *most important concepts*, we will see why shortly, but we have to review a few more things before.
Isomorphism
===
Let's go back to the function that demonstrated a one-to-one relationship.
Let's check another concept which is very important in category theory (although it is not exclusive to it) - the concept of an *isomorphism*.
To do that, we go back to the examples of the types of relationships that functions can represent, and to the first and most elementary of them all - the *one-to-one* type of relationship. We know that all functions have exactly one element from the source set, pointing to one element from the target set. But for one-to-one functions *the reverse is also true* - exactly one element from the target set points to one element from the source.
![Opposite colors](function_one_one.svg)
Notice that the function is invertible, that is if you flip its arrows you get another valid function:
If we have a one-one-function that connects sets that are of the same size (as is the case here), then this function has the following property: all elements from the target set have exactly one arrow pointing at them. In this case, the function is *invertible*, that is, if you flip the arrows of the function and it's source and target, you get another valid function.
![Opposite colors](isomorphism_one_one.svg)
Invertible functions are called *isomorphisms*. When there is an invertible function between two sets we can say that the sets are *isomorphic*. For example, the temperature measured in Celsius is isomorphic to the temperature, measured in Fahrenheit.
Invertible functions are called *isomorphisms*. When there exists an invertible function between two sets we say that the sets are *isomorphic*. For example, because we have an invertible function that converts the temperature measured in *Celsius* to temperature measured in *Fahrenheit* and vise versa, we can say that the temperatures measured in Celsius and Fahrenheit are isomorphic.
More formally, two sets **R** and **G** are isomorphic, or **R ≅ G** if there exist functions **f: G → R** and its reverse **g: R → G**, such that **f ∘ g = id R** and **g ∘ f = id G** (notice how the identity function comes in handy).
Isomorphism means "same form" in Greek (although actually their form is the only thing which is different between two isomorphic sets.)
Isomorphism and equality
More formally, two sets $R$ and $G$ are isomorphic (or $R ≅ G$) if there exist functions $f: G → R$ and its reverse $g: R → G$, such that $f \bullet g = idR$ and $g \bullet f = idG$ (notice how the identity function comes in handy.)
Isomorphism and identity
---
In category theory, the concept of an isomorphism is strongly related to the concept of equality (that is why it is denoted with **≅**, which is almost the same as **=**). This is also related to programming, where if we have a function that convert our object of type A to an object of type B and the other way around we pretty much regard A and B as two formats of the same object.
For example, we all know that everything is equal to itself. Well, if you look closely you would see that the identity function is reversible (its reverse is itself), so each set is also isomorphic to itself.
If you look closely you would see that the identity function is invertible too (its reverse is itself), so each set is isomorphic to itself in that way.
![The identity function](isomorphism_identity.svg)
Note that an isomorphism between two sets does not imply that their *elements* are similar to one another, as some of the examples might suggest. It rather implies that they have similar *structure*, in other words, a function that involves one of the sets, can easily be converted to a function involving the other set.
Therefore, the concept of an isomorphism contains the concept of equality - all equal things are also isomorphic.
Isomorphism and composition
---
An interesting fact about isomorphisms is that if we have functions that convert a member of set $A$ to a member of set $B$ and the other way around . Then, because of functional composition, we know that any function from/to $A$ has a corresponding function from/to $B$.
![The architecture of isomorphism](isomorphism_general.svg)
For example, if you have a function "is the husband of" that goes from the set of all married men to the set of all married women, and the corresponding function, "is the wife of", that would make the sets of married men and married woman isomorphic (ignoring some exceptions). That is not to say that you are the same person as your significant other, but rather that every statement about you, or every relation you have to some other person or object is also a relation between him/her and the same person or object, and vice versa.
For example, if you have a function "is the partner of" that goes from the set of all married people to the same set, than that function is invertible. That is not to say that you are the same person as your significant other, but rather that every statement about you, or every relation you have to some other person or object is also a relation between them and this person/object, and vice versa.
Composing isomorphisms
---
Another interesting fact about isomorphisms is that if we have two isomorphisms that have a set in common, then we can obtain a third isomorphism between the other two sets that would be the result of their (the isomorphisms) composition.
Composing two isomorphisms into another isomorphism is possible by composing the two pairs of functions that make up the isomorphism in the two directions.
![Composing isomorphisms](isomorphisms_compose.svg)
Informally, we can see that the two morphisms are indeed reverse to each other and hence form an isomorphism. If we want to prove that fact formally, we will do something like the following:
Given that if two functions are isomorphic, then their composition is equal to an identity function, proving that functions $g \bullet f$ and $f' \bullet g'$, are isomorphic is equivalent to proving that their composition is equal to identity.
$g \bullet f \bullet f' \bullet g' = id$
But we know already that $f$ and $f'$ are isomorphic and hence $f\bullet f' = id$, so the above formula is equivalent to (you can reference the diagram to see what that means):
$g \bullet id \bullet g' = id$
And we know that anything composed with $id$ is equal to itself, so it is equivalent to:
$g \bullet g' = id$
which is true, because $g$ and $g'$ are isomorphic and isomorphic functions composed are equal to identity.
By the way, there is another way to obtain the isomorphism - by composing the two morphisms one way in order to get the third function and then taking its reverse, But to do this, we have to prove that the function we get from composing two bijective functions is also bijective.
Isomorphisms Between Singleton Sets
---
@ -342,13 +424,90 @@ Between any two singleton sets, we may define the only possible function.
![The only possible function between singletons](singleton_function.svg)
The function is invertible, which means that all singleton sets are isomorphic to one another.
The function is invertible, which means that all singleton sets are isomorphic to one another, and furthermore (which is important) they are isomorphic *in one unique way*.
![Isomorphic singletons](singleton_isomorphism.svg)
Following the logic from the last paragraph, each statement about something that is one of a kind can be transferred to a statement about another thing that is one of a kind.
*Question:* Try to come up with a good example that shows how a statement that demonstrates the isomorphism between singleton sets (I obviously couldn't). Consider that all of people and objects are sharing one and the same universe.
**Question:** Try to come up with a good example that shows how a statement that demonstrates the isomorphism between singleton sets (I obviously couldn't). Consider that all of people and objects are sharing one and the same universe.
**Task:** Think of two singleton sets, and try to pinpoint the relation that they have.
Equivalence relations and isomorphisms
===
We said, that isomorphic sets aren't necessarily the same set (although the reverse is true.) However, it is hard to get away from the notion that being isomorphic means that they are *equal* or *equivalent* in some respect. For example, all people who are connected by the *isomorphic* mother/child relationship share some of the same genes.
And in computer science, if we have functions that convert an object of type $A$ to an object of type $B$ and the other way around (as for example the functions between a data structure and it's id, we also can pretty much regard $A$ and $B$ as two formats of the same thing, as having one means that we can easily obtain the other.
Equivalence relations
---
What does it mean for two things to be equivalent? The question sounds quite philosophical, but there is actually is a formal way to answer it i.e. there is a mathematical concept that captures the concept of equality in a rather elegant way - the concept of an *equivalence relation*.
So what is an equivalence relation? We already know what a relation is - it is a connection between two sets (an example of which is function.) But when is a relation an equivalence relation? Well, according the definition it is when it follows three laws, which correspond to three intuitive ideas about equality. Let's review them.
Reflexivity
---
The first idea that defines equivalence, is that *everything is equivalent with itself*.
![Reflexivity](reflexivity.svg)
This simple principle translates to the equally simple law of *reflexivity*: for all sets $A$, $A=A$.
Transitivity
---
The second idea that defines the concept of equivalence is the idea that things that are equal to another thing must also equal between themselves.
![Transitivity](transitivity.svg)
Mathematically, for all sets $A$ $B$ and $C$, if $A=B$ and $B=C$ then $A=C$.
Note that we don't need to define what happens in similar situations that involve more than three sets, as they can be settled by just multiple application of this same law.
Symmetry
---
If one thing is equal to another, the reverse is also true (i.e the other thing is also equal to the first one. This idea is called *symmetry*. Symmetry is probably the most characteristic property of the equivalence relation, which is not true for almost any other relation.
![symmetry](symmetry.svg)
In mathematical terms: if $A=B$ then $B=A$.
Isomorphisms as equivalence relations
---
Isomorphisms *are* indeed equivalence relations. And "incidentally", we already have all the information needed to prove it (in the same way in which James Bond seems to always incidentally have exactly the gadgets that are needed to complete his mission.)
We said that most characteristic property of the equivalence relation is its *symmetry*. And this property is satisfied by isomorphisms, due to the isomorphisms' most characteristic property, namely the fact that they are *invertible*.
![Symmetry of isomorphisms](isomorphism_symmetry.svg)
**Task:** One law down, two to go: Go through the previous section and verify that isomorphisms also satisfy the other equivalence relation laws.
The practice of using isomorphisms to define an equivalence relation is very prominent in category theory where isomorphisms are denoted with $≅$, which is almost the same as $=$ (and is also similar to having two opposite arrows connecting one set to the other.)
{% if site.distribution == 'print'%}
Interlude - numbers as isomorphisms
===
Many people would say that the concept of a number is the most basic concept in mathematics. But actually they are wrong - *sets and isomorphisms are more basic*! Or at least, numbers can be defined using sets and isomorphisms.
To understand how, let's think about how do you teach a person what a number is (in particular, here we will concentrate on the *natural*, or counting numbers.) You may start your lesson by showing them a bunch of objects that are of a given quantity, like for example if you want to demonstrate the number $2$, you might bring them like two pencils, two apples or two of something else.
![Two balls](number_two.svg)
When you do that, it would be important to highlight that you are not referring to only the left object, or only about the right one, but that we should consider both things as at once (i.e. both things as one), so if the person whom you are explaining happens to know what a set is, this piece of knowledge might come in handy. And also, being good teachers we might provide them with some more examples of sets of 2 things.
![A set of two balls](number_two_sets.svg)
This is a good starting point, but the person may still be staring at the objects instead of the structure - they might ask if this or that set is $2$ as well. At this point you might give up, or, if the person whom you are explaining happens to know about isomorphisms as well (they might have lived in a cave with just this book with them), you can easily formulate your final definition, saying that the number $2$ is represented by those sets and all other sets that are isomorphic to them.
![A set of two balls](number_two_isomorphism.svg)
At this point there is no more examples that we can add. In fact, because we consider all other sets as well, we might say that this is not just a bunch of examples, but a proper *definition* of the number $2$. And we can extend that to include all other numbers. In fact, he first definition of a natural number (presented by Gottlob Frege in 1884) is roughly based on this very idea.
Before we close this chapter, there is one meta-note that we should definitely make: according to the definition of a number that we presented, a number is not an *object*, but a whole *system of interconnected objects*, containing in this case an infinite number of objects. This may seem weird to you, but it's actually pretty characteristic of the categorical way of modeling things.
{%endif%}

View File

@ -1 +1,118 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 595.3 269.9"><switch><g><circle opacity=".14" stroke="#000" stroke-width="6" stroke-miterlimit="10" cx="210" cy="68.4" r="39.1"/><circle fill="#FFF" stroke="#808285" stroke-width="6" stroke-miterlimit="10" cx="206.1" cy="65.9" r="39.1"/><circle opacity=".14" stroke="#000" stroke-width="6" stroke-miterlimit="10" cx="368.8" cy="70.6" r="38.8"/><circle fill="#FFF" stroke="#808285" stroke-width="6" stroke-miterlimit="10" cx="365" cy="68.2" r="38.8"/><circle opacity=".14" stroke="#000" stroke-width="6" stroke-miterlimit="10" cx="368.9" cy="217.7" r="37"/><circle fill="#FFF" stroke="#808285" stroke-width="6" stroke-miterlimit="10" cx="359.3" cy="217.4" r="37"/><path fill="#808082" d="M246.4 64.4s.9-.1 2.4-.4c1.5-.2 3.7-.5 6.3-.8 5.2-.6 12.2-1.1 19.2-1.2 7-.1 14 .2 19.2.7 2.6.2 4.8.5 6.3.7.7.1 1.1.1 1.1.1L299.4 75c7.6-3.5 15.6-6.4 24-8.9-6.3-6.1-13.2-11.9-20.7-17.2l-1.5 11.5s-.4-.1-1.1-.1c-1.5-.2-3.8-.4-6.4-.7-5.3-.5-12.4-.8-19.5-.7-7.1.1-14.2.6-19.5 1.2-2.7.3-4.9.6-6.4.8-1.5.2-2.4.4-2.4.4l.5 3.1zM357.9 107.5s.2.7.6 2c.2.7.4 1.4.7 2.4.2.9.5 2 .8 3.1 1.2 4.5 2.4 10.7 3.2 16.9.7 6.2.9 12.5.8 17.1 0 2.3-.2 4.3-.2 5.7 0 .7-.1 1-.1 1l-11.5-.8c3.9 7.1 7.1 14.9 9.4 23.4 6.1-6.3 11.8-13.5 16.8-21.5l-11.5-.8s0-.4.1-1.1c.1-1.4.2-3.4.2-5.8.1-4.8-.1-11.2-.9-17.6-.7-6.4-2-12.6-3.2-17.3-.3-1.2-.6-2.2-.9-3.2-.3-.9-.5-1.7-.7-2.4-.4-1.3-.7-2.1-.7-2.1l-2.9 1zM219 102.4s1.3 1.5 3.7 4c1.2 1.2 2.6 2.7 4.2 4.4 1.5 1.8 3.3 3.8 5.2 6 7.6 8.8 17.8 20.5 28.8 31.4 5.5 5.5 11.2 10.8 16.8 15.5 2.8 2.4 5.6 4.6 8.2 6.6 2.7 2 5.2 3.9 7.6 5.6 4.8 3.3 8.9 6 11.7 7.8.7.4 1.1.7 1.1.7l-6.2 9.8c8.9.5 17.7.7 26.5.9-4.2-7.7-8.5-15.4-12.3-23l-6.2 9.8s-.4-.2-1.1-.7c-2.8-1.8-6.9-4.5-11.6-7.8-2.4-1.7-4.9-3.5-7.5-5.5-2.6-2-5.3-4.2-8.1-6.5-5.5-4.6-11.2-9.9-16.6-15.3-10.9-10.9-21.1-22.5-28.7-31.3-1.9-2.2-3.7-4.2-5.2-6-1.6-1.8-3-3.3-4.2-4.5-2.3-2.4-3.5-3.9-3.5-3.9l-2.6 2z"/><path d="M276.4 39.6H274v-3.9l2.4-.2v-1c0-3.8 1.8-6.8 6.6-6.8 1.5 0 2.8.4 3.6.6l-1 3.9c-.6-.2-1.3-.4-1.8-.4-1.3 0-2 .7-2 2.5v1.1h3.2v4.1h-3.2v13.7h-5.3V39.6zM376 143.1c0-1.5.9-2.7 2.5-3.6v-.1c-.9-.6-1.6-1.5-1.6-3 0-1.3.9-2.5 2-3.3v-.1c-1.3-.9-2.4-2.5-2.4-4.6 0-4.3 3.5-6.4 7.4-6.4 1 0 2 .1 2.8.4h6.5v3.8h-2.8c.3.5.6 1.4.6 2.3 0 4.1-3.1 6-7 6-.6 0-1.4-.1-2.2-.4-.5.4-.6.7-.6 1.3 0 .9.7 1.3 2.7 1.3h2.9c4.4 0 6.8 1.3 6.8 4.5 0 3.7-3.8 6.4-9.9 6.4-4.4 0-7.7-1.3-7.7-4.5zm12.4-.9c0-1.1-1-1.4-2.7-1.4h-1.8c-1.2 0-1.9-.1-2.5-.2-.6.6-1 1.1-1 1.8 0 1.3 1.6 2 3.9 2 2.4-.1 4.1-1 4.1-2.2zm-2.1-13.9c0-1.9-1-2.9-2.4-2.9s-2.4 1-2.4 2.9c0 2 1 3 2.4 3s2.4-1.1 2.4-3zM245.2 147.6h5.3v6.2l-.3 3.2c1.3-1.2 3.1-2.4 5.5-2.4 3.9 0 5.5 2.7 5.5 7.2v11h-5.3v-10.4c0-2.6-.7-3.4-2.2-3.4-1.3 0-2.2.6-3.3 1.7v12h-5.3v-25.1z" opacity=".64"/><path d="M277.4 40.8H275v-3.9l2.4-.2v-1c0-3.8 1.8-6.8 6.6-6.8 1.5 0 2.8.4 3.6.6l-1 3.9c-.6-.2-1.3-.4-1.8-.4-1.3 0-2 .7-2 2.5v1.1h3.2v4.1h-3.2v13.7h-5.3V40.8zM377 144.3c0-1.5.9-2.7 2.5-3.6v-.1c-.9-.6-1.6-1.5-1.6-3 0-1.3.9-2.5 2-3.3v-.1c-1.3-.9-2.4-2.5-2.4-4.6 0-4.3 3.5-6.4 7.4-6.4 1 0 2 .1 2.8.4h6.5v3.8h-2.8c.3.5.6 1.4.6 2.3 0 4.1-3.1 6-7 6-.6 0-1.4-.1-2.2-.4-.5.4-.6.7-.6 1.3 0 .9.7 1.3 2.7 1.3h2.9c4.4 0 6.8 1.3 6.8 4.5 0 3.7-3.8 6.4-9.9 6.4-4.4 0-7.7-1.4-7.7-4.5zm12.4-1c0-1.1-1-1.4-2.7-1.4h-1.8c-1.2 0-1.9-.1-2.5-.2-.6.6-1 1.1-1 1.8 0 1.3 1.6 2 3.9 2 2.4 0 4.1-1 4.1-2.2zm-2.1-13.9c0-1.9-1-2.9-2.4-2.9s-2.4 1-2.4 2.9c0 2 1 3 2.4 3s2.4-1 2.4-3zM246.2 148.8h5.3v6.2l-.3 3.2c1.3-1.2 3.1-2.4 5.5-2.4 3.9 0 5.5 2.7 5.5 7.2v11h-5.3v-10.4c0-2.6-.7-3.4-2.2-3.4-1.3 0-2.2.6-3.3 1.7v12h-5.3v-25.1z" opacity=".31"/></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 269.9"
version="1.1"
id="svg18807"
sodipodi:docname="functions_compose_general.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata18813">
<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="defs18811" />
<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="namedview18809"
showgrid="false"
inkscape:zoom="4.0611686"
inkscape:cx="297.64999"
inkscape:cy="134.95"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="switch18805" />
<switch
id="switch18805">
<g
id="g18803">
<circle
opacity=".14"
stroke="#000"
stroke-width="6"
stroke-miterlimit="10"
cx="210"
cy="68.4"
r="39.1"
id="circle18785" />
<circle
fill="#FFF"
stroke="#808285"
stroke-width="6"
stroke-miterlimit="10"
cx="206.1"
cy="65.9"
r="39.1"
id="circle18787" />
<circle
opacity=".14"
stroke="#000"
stroke-width="6"
stroke-miterlimit="10"
cx="368.8"
cy="70.6"
r="38.8"
id="circle18789" />
<circle
fill="#FFF"
stroke="#808285"
stroke-width="6"
stroke-miterlimit="10"
cx="365"
cy="68.2"
r="38.8"
id="circle18791" />
<circle
opacity=".14"
stroke="#000"
stroke-width="6"
stroke-miterlimit="10"
cx="368.9"
cy="217.7"
r="37"
id="circle18793" />
<circle
fill="#FFF"
stroke="#808285"
stroke-width="6"
stroke-miterlimit="10"
cx="359.3"
cy="217.4"
r="37"
id="circle18795" />
<path
fill="#808082"
d="M246.4 64.4s.9-.1 2.4-.4c1.5-.2 3.7-.5 6.3-.8 5.2-.6 12.2-1.1 19.2-1.2 7-.1 14 .2 19.2.7 2.6.2 4.8.5 6.3.7.7.1 1.1.1 1.1.1L299.4 75c7.6-3.5 15.6-6.4 24-8.9-6.3-6.1-13.2-11.9-20.7-17.2l-1.5 11.5s-.4-.1-1.1-.1c-1.5-.2-3.8-.4-6.4-.7-5.3-.5-12.4-.8-19.5-.7-7.1.1-14.2.6-19.5 1.2-2.7.3-4.9.6-6.4.8-1.5.2-2.4.4-2.4.4l.5 3.1zM357.9 107.5s.2.7.6 2c.2.7.4 1.4.7 2.4.2.9.5 2 .8 3.1 1.2 4.5 2.4 10.7 3.2 16.9.7 6.2.9 12.5.8 17.1 0 2.3-.2 4.3-.2 5.7 0 .7-.1 1-.1 1l-11.5-.8c3.9 7.1 7.1 14.9 9.4 23.4 6.1-6.3 11.8-13.5 16.8-21.5l-11.5-.8s0-.4.1-1.1c.1-1.4.2-3.4.2-5.8.1-4.8-.1-11.2-.9-17.6-.7-6.4-2-12.6-3.2-17.3-.3-1.2-.6-2.2-.9-3.2-.3-.9-.5-1.7-.7-2.4-.4-1.3-.7-2.1-.7-2.1l-2.9 1zM219 102.4s1.3 1.5 3.7 4c1.2 1.2 2.6 2.7 4.2 4.4 1.5 1.8 3.3 3.8 5.2 6 7.6 8.8 17.8 20.5 28.8 31.4 5.5 5.5 11.2 10.8 16.8 15.5 2.8 2.4 5.6 4.6 8.2 6.6 2.7 2 5.2 3.9 7.6 5.6 4.8 3.3 8.9 6 11.7 7.8.7.4 1.1.7 1.1.7l-6.2 9.8c8.9.5 17.7.7 26.5.9-4.2-7.7-8.5-15.4-12.3-23l-6.2 9.8s-.4-.2-1.1-.7c-2.8-1.8-6.9-4.5-11.6-7.8-2.4-1.7-4.9-3.5-7.5-5.5-2.6-2-5.3-4.2-8.1-6.5-5.5-4.6-11.2-9.9-16.6-15.3-10.9-10.9-21.1-22.5-28.7-31.3-1.9-2.2-3.7-4.2-5.2-6-1.6-1.8-3-3.3-4.2-4.5-2.3-2.4-3.5-3.9-3.5-3.9l-2.6 2z"
id="path18797" />
<path
style="opacity:0.63999999"
inkscape:connector-curvature="0"
d="m 377.35616,129.96808 h -2.4 v -3.9 l 2.4,-0.2 v -1 c 0,-3.8 1.8,-6.8 6.6,-6.8 1.5,0 2.8,0.4 3.6,0.6 l -1,3.9 c -0.6,-0.2 -1.3,-0.4 -1.8,-0.4 -1.3,0 -2,0.7 -2,2.5 v 1.1 h 3.2 v 4.1 h -3.2 v 13.7 h -5.3 v -13.6 z M 265.19445,49.038404 c 0,-1.5 0.9,-2.7 2.5,-3.6 v -0.1 c -0.9,-0.6 -1.6,-1.5 -1.6,-3 0,-1.3 0.9,-2.5 2,-3.3 v -0.1 c -1.3,-0.9 -2.4,-2.5 -2.4,-4.6 0,-4.3 3.5,-6.4 7.4,-6.4 1,0 2,0.1 2.8,0.4 h 6.5 v 3.8 h -2.8 c 0.3,0.5 0.6,1.4 0.6,2.3 0,4.1 -3.1,6 -7,6 -0.6,0 -1.4,-0.1 -2.2,-0.4 -0.5,0.4 -0.6,0.7 -0.6,1.3 0,0.9 0.7,1.3 2.7,1.3 h 2.9 c 4.4,0 6.8,1.3 6.8,4.5 0,3.7 -3.8,6.4 -9.9,6.4 -4.4,0 -7.7,-1.3 -7.7,-4.5 z m 12.4,-0.9 c 0,-1.1 -1,-1.4 -2.7,-1.4 h -1.8 c -1.2,0 -1.9,-0.1 -2.5,-0.2 -0.6,0.6 -1,1.1 -1,1.8 0,1.3 1.6,2 3.9,2 2.4,-0.1 4.1,-1 4.1,-2.2 z m -2.1,-13.9 c 0,-1.9 -1,-2.9 -2.4,-2.9 -1.4,0 -2.4,1 -2.4,2.9 0,2 1,3 2.4,3 1.4,0 2.4,-1.1 2.4,-3 z M 245.2,147.6 h 5.3 v 6.2 l -0.3,3.2 c 1.3,-1.2 3.1,-2.4 5.5,-2.4 3.9,0 5.5,2.7 5.5,7.2 v 11 h -5.3 v -10.4 c 0,-2.6 -0.7,-3.4 -2.2,-3.4 -1.3,0 -2.2,0.6 -3.3,1.7 v 12 h -5.3 v -25.1 z"
id="path18799"
sodipodi:nodetypes="ccccssccssccccccccsccsccssccccsscssssssssscscssssssccccssccssccccc" />
</g>
</switch>
</svg>

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@ -1 +1,146 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 595.3 407.4"><switch><g><circle opacity=".14" stroke="#000" stroke-width="6" stroke-miterlimit="10" cx="160.2" cy="88.4" r="61.8"/><circle fill="#F8F6C1" stroke="#808285" stroke-width="6" stroke-miterlimit="10" cx="154.1" cy="84.5" r="61.8"/><circle opacity=".14" stroke="#000" stroke-width="6" stroke-miterlimit="10" cx="411.4" cy="91.9" r="61.3"/><circle fill="#D6D5EB" stroke="#808285" stroke-width="6" stroke-miterlimit="10" cx="405.4" cy="88" r="61.3"/><circle opacity=".14" stroke="#000" stroke-width="6" stroke-miterlimit="10" cx="411.6" cy="324.6" r="58.5"/><circle fill="#D9ECD5" stroke="#808285" stroke-width="6" stroke-miterlimit="10" cx="405.8" cy="320.8" r="58.5"/><path fill="#808082" d="M217.6 81.2s1.6-.2 4.4-.6c2.8-.4 6.8-.9 11.6-1.5 9.6-1.1 22.5-1.8 35.4-1.7 12.9.1 25.8 1.2 35.3 2.5 4.8.6 8.8 1.3 11.6 1.7.4.1.7.1.9.1h.3l-2 11.4c7.9-3.1 16.1-5.8 24.5-8.3-6.3-6.1-13-12-20.1-17.7l-2 11.4h-.3c-.2 0-.5-.1-1-.2-2.8-.4-6.8-1.1-11.7-1.7-9.7-1.2-22.7-2.4-35.7-2.5-13-.2-26 .6-35.8 1.7-4.9.6-8.9 1-11.7 1.5-2.8.4-4.4.7-4.4.7l.7 3.2zM404.4 146.7s.4 1.4 1.2 3.8c.8 2.4 1.7 6 2.9 10.2 2.2 8.5 4.2 20 5.2 31.7.3 2.9.4 5.8.5 8.7.1 2.9.1 5.7.2 8.5-.1 2.7-.1 5.4-.2 7.9-.2 2.5-.2 4.9-.4 7.1-.2 2.2-.4 4.2-.5 6-.2 1.8-.4 3.3-.6 4.6-.1.7-.1 1.2-.1 1.2l-11.5-1.6c3.3 7.6 6.2 15.7 8.6 24.2 6.1-6.3 12-13.1 17.5-20.5l-11.5-1.6s.1-.4.2-1.2c.2-1.3.4-2.9.6-4.7.2-1.8.4-3.8.6-6.1.2-2.2.3-4.6.4-7.2.1-2.5.1-5.2.2-8 0-2.8 0-5.7-.2-8.6-.2-2.9-.2-5.9-.5-8.8-.9-11.8-3.1-23.6-5.2-32.2-1.1-4.3-2.1-7.9-2.9-10.4-.8-2.5-1.2-3.9-1.2-3.9l-3.3.9zM184.7 138.4s.6.6 1.6 1.8c1 1.2 2.6 2.8 4.6 4.9 2 2.1 4.4 4.6 7 7.5 2.6 3 5.6 6.4 8.8 10.1 12.9 14.9 30.3 34.7 49.2 53 9.5 9.2 19.4 17.9 29 25.6 9.7 7.7 19.2 14.3 27.4 19.8s15.2 9.8 20.1 12.9c.8.5 1.3.8 1.3.8l-6.1 9.8c8.8.3 17.6.5 26.4.7-4.2-7.7-8.5-15.4-12.6-23l-6.1 9.8s-.5-.3-1.3-.8c-4.9-3-11.8-7.4-20-12.8s-17.6-12-27.2-19.6c-9.6-7.6-19.4-16.3-28.8-25.4-18.8-18.2-36.1-38-49-52.8-3.2-3.7-6.2-7.1-8.8-10.2-2.7-3-5.1-5.5-7.1-7.6-2-2.1-3.5-3.7-4.5-4.8-1-1.1-1.5-1.7-1.5-1.7l-2.4 2z"/></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 407.4"
version="1.1"
id="svg36285"
sodipodi:docname="functions_compose_sets.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata36291">
<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="defs36289" />
<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="namedview36287"
showgrid="false"
showguides="false"
inkscape:zoom="4.4180412"
inkscape:cx="277.52372"
inkscape:cy="203.7"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="switch36283" />
<switch
id="switch36283">
<g
id="g36281"
transform="translate(-17.468877)">
<circle
stroke-miterlimit="10"
cx="159.45663"
cy="98.806992"
r="61.799999"
id="circle36267"
style="opacity:0.13999999;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
stroke-miterlimit="10"
cx="410.65665"
cy="102.30699"
r="61.299999"
id="circle36271"
style="opacity:0.13999999;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
stroke-miterlimit="10"
cx="408.85666"
cy="347.00699"
r="58.5"
id="circle36275"
style="opacity:0.13999999;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<g
style="display:inline;fill:#dddddd;stroke:#848484;stroke-width:6.38899994;stroke-miterlimit:10;stroke-opacity:1"
id="g1482-7-0-2"
transform="matrix(0.46557312,-0.15282506,0.23127448,0.66112479,32.030878,87.999063)">
<path
style="stroke:#848484;stroke-width:16.09810066;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path1478-7-9-7"
d="m 560.31882,138.45993 c 5.67622,-0.66754 11.43224,-1.07817 17.25801,-1.35358 -2.2705,-4.15211 -4.84001,-8.24642 -7.70842,-12.28425 -3.31875,4.76807 -5.68499,8.57526 -9.54959,13.63783 z" />
<path
style="fill:none;stroke:#848484;stroke-width:5.69897842;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-7"
d="m 327.16882,85.247297 c 61.03479,-6.323091 179.55362,16.098563 239.16592,48.705573"
sodipodi:nodetypes="cc" />
</g>
<circle
stroke-miterlimit="10"
cx="153.35664"
cy="94.90699"
r="61.799999"
id="circle36269"
style="fill:#f8f6c1;stroke:#808285;stroke-width:6;stroke-miterlimit:10" />
<g
style="display:inline;fill:#dddddd;stroke:#848484;stroke-width:6.38899994;stroke-miterlimit:10;stroke-opacity:1"
id="g1482-7-0-2-3"
transform="matrix(0.15282506,0.46557312,-0.66112479,0.23127448,409.49989,-27.123066)">
<path
style="stroke:#848484;stroke-width:16.09810066;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path1478-7-9-7-7"
d="m 560.31882,138.45993 c 5.67622,-0.66754 11.43224,-1.07817 17.25801,-1.35358 -2.2705,-4.15211 -4.84001,-8.24642 -7.70842,-12.28425 -3.31875,4.76807 -5.68499,8.57526 -9.54959,13.63783 z" />
<path
style="fill:none;stroke:#848484;stroke-width:5.69897842;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-7-5"
d="m 327.16882,85.247297 c 61.03479,-6.323091 179.55362,16.098563 239.16592,48.705573"
sodipodi:nodetypes="cc" />
</g>
<circle
stroke-miterlimit="10"
cx="404.65665"
cy="98.40699"
r="61.299999"
id="circle36273"
style="fill:#d6d5eb;stroke:#808285;stroke-width:6;stroke-miterlimit:10" />
<circle
stroke-miterlimit="10"
cx="403.05664"
cy="343.20697"
r="58.5"
id="circle36277"
style="fill:#d9ecd5;stroke:#808285;stroke-width:6;stroke-miterlimit:10" />
<g
style="display:inline;fill:#dddddd;stroke:#363636;stroke-width:6.38899994;stroke-miterlimit:10;stroke-opacity:1"
id="g1482-7-0-2-3-9"
transform="matrix(-0.43727355,-0.22114627,0.30395007,-0.63102158,401.72179,373.1531)">
<path
style="stroke:#363636;stroke-width:16.09810066;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path1478-7-9-7-7-2"
d="m 560.31882,138.45993 c 5.67622,-0.66754 11.43224,-1.07817 17.25801,-1.35358 -2.2705,-4.15211 -4.84001,-8.24642 -7.70842,-12.28425 -3.31875,4.76807 -5.68499,8.57526 -9.54959,13.63783 z" />
<path
style="fill:none;stroke:#363636;stroke-width:5.69897842;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-7-5-2"
d="M 145.69299,52.838186 C 251.84173,46.607849 460.71734,79.183022 566.33474,133.95287"
sodipodi:nodetypes="cc" />
</g>
</g>
</switch>
</svg>

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

View File

@ -0,0 +1,188 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 595.3 177"
version="1.1"
id="svg3397"
sodipodi:docname="isomorphism_symmetry.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<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="2560"
inkscape:window-height="1376"
id="namedview3399"
showgrid="false"
inkscape:zoom="3.6553133"
inkscape:cx="302.49394"
inkscape:cy="87.569754"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg3397"
inkscape:document-rotation="0" />
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.389;stroke-miterlimit:10"
id="g1482-7-0-4"
transform="matrix(0.32913359,-0.00613048,0.03180803,0.45906746,206.02041,-51.65295)">
<path
style="stroke-width:36.8983"
inkscape:connector-curvature="0"
id="path1478-7-9-9"
d="m 300.11147,308.89056 c 11.45734,-5.05862 23.31627,-9.60141 35.44547,-13.89029 -8.57402,-7.71646 -17.73121,-15.11655 -27.47244,-22.20324 -2.74504,12.60642 -4.33418,22.49306 -7.97303,36.09353 z" />
<path
style="stroke-width:14.2769;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-7"
d="m 130.20492,307.63343 c 55.06889,-12.45337 125.33622,-12.58656 169.06769,-4.24803" />
<path
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:14.2769;stroke-miterlimit:10;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-7-9"
d="M 130.14688,279.92717 C 185.21577,267.47379 255.4831,267.3406 299.21457,275.67914" />
</g>
<g
id="g2605"
transform="matrix(1.1909331,0,0,1.1909331,-92.289506,-21.250305)">
<circle
cx="250.16379"
cy="90.603348"
r="24.6"
id="circle3365"
style="opacity:0.12999998;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
cx="245.36378"
cy="84.403351"
r="24.6"
id="circle3379"
style="fill:#fce600;stroke:#ffdd00;stroke-width:6;stroke-miterlimit:10" />
</g>
<g
id="g2601"
transform="matrix(1.1909331,0,0,1.1909331,-102.28951,-21.250305)">
<circle
cx="153.12378"
cy="90.683884"
r="24.6"
id="circle3371-9"
style="opacity:0.12999998;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
cx="148.32379"
cy="84.383881"
r="24.6"
id="circle3385-3"
style="fill:#f58235;stroke:#e76524;stroke-width:6;stroke-miterlimit:10" />
</g>
<g
id="g2605-4"
transform="matrix(1.1909331,0,0,1.1909331,90.308472,-20.819575)">
<circle
cx="250.16379"
cy="90.603348"
r="24.6"
id="circle3365-1"
style="opacity:0.12999998;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
cx="245.36378"
cy="84.403351"
r="24.6"
id="circle3379-5"
style="fill:#fce600;stroke:#ffdd00;stroke-width:6;stroke-miterlimit:10" />
</g>
<g
id="g2601-0"
transform="matrix(1.1909331,0,0,1.1909331,329.82834,-21.302115)">
<circle
cx="153.12378"
cy="90.683884"
r="24.6"
id="circle3371-9-8"
style="opacity:0.12999998;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
cx="148.32379"
cy="84.383881"
r="24.6"
id="circle3385-3-3"
style="fill:#f58235;stroke:#e76524;stroke-width:6;stroke-miterlimit:10" />
</g>
<g
transform="matrix(0.87291979,0,0,1,-121.36191,-5.8924149)"
id="g25573"
style="stroke:#838383;stroke-opacity:1">
<path
inkscape:connector-curvature="0"
id="path25536"
d="m 271.75484,79.082492 h 51.93678"
style="fill:none;stroke:#838383;stroke-width:2.73304653;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path25536-7"
d="m 271.19895,96.315335 h 51.93678"
style="fill:none;stroke:#838383;stroke-width:2.73304653;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
transform="matrix(0.87291979,0,0,1,186.11979,-5.2663862)"
id="g25573-5"
style="stroke:#838383;stroke-opacity:1">
<path
inkscape:connector-curvature="0"
id="path25536-6"
d="m 271.75484,79.082492 h 51.93678"
style="fill:none;stroke:#838383;stroke-width:2.73304653;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path25536-7-2"
d="m 271.19895,96.315335 h 51.93678"
style="fill:none;stroke:#838383;stroke-width:2.73304653;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#9393ac;stroke-width:6.38899994;stroke-miterlimit:10;stroke-opacity:1"
id="g1482-7-0-2"
transform="matrix(0.46557312,-0.15282506,0.23127448,0.66112479,200.58475,23.002917)" />
<path
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:5.83160782;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path1478-7-9-9-0"
d="m 156.96272,76.363125 c 1.34883,-1.130252 2.76831,-2.17264 4.23219,-3.173048 -1.3973,-1.269558 -2.86128,-2.470754 -4.39214,-3.604122 0.0611,2.366377 0.18383,4.212379 0.15995,6.77717 z" />
<path
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:5.83160782;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path1478-7-9-9-0-6"
d="m 119.60521,87.24987 c -1.34883,1.13025 -2.76831,2.17264 -4.23219,3.17305 1.3973,1.26955 2.86128,2.47075 4.39214,3.60412 -0.0611,-2.36638 -0.18383,-4.21238 -0.15995,-6.77717 z" />
<path
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:5.83160782;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path1478-7-9-9-0-1"
d="m 464.44442,76.989155 c 1.34883,-1.130252 2.76831,-2.17264 4.23219,-3.173049 -1.3973,-1.269558 -2.86128,-2.470754 -4.39214,-3.604122 0.0611,2.366377 0.18383,4.21238 0.15995,6.777171 z" />
<path
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:5.83160782;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path1478-7-9-9-0-6-5"
d="m 427.08691,87.8759 c -1.34883,1.13025 -2.76831,2.17264 -4.23219,3.17305 1.3973,1.26955 2.86128,2.47075 4.39214,3.60412 -0.0611,-2.36638 -0.18383,-4.21238 -0.15995,-6.77717 z" />
</svg>

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

@ -0,0 +1,288 @@
<?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 407.4"
version="1.1"
id="svg36285"
sodipodi:docname="isomorphisms_compose.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata36291">
<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="defs36289" />
<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="namedview36287"
showgrid="false"
showguides="false"
inkscape:zoom="2.3171331"
inkscape:cx="294.55757"
inkscape:cy="238.24339"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g36281" />
<switch
id="switch36283">
<g
id="g36281"
transform="translate(-17.468877)">
<circle
stroke-miterlimit="10"
cx="159.45663"
cy="86.806992"
r="61.799999"
id="circle36267"
style="opacity:0.13999999;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
stroke-miterlimit="10"
cx="410.65665"
cy="90.306992"
r="61.299999"
id="circle36271"
style="opacity:0.13999999;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
stroke-miterlimit="10"
cx="408.85666"
cy="335.00699"
r="58.5"
id="circle36275"
style="opacity:0.13999999;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<g
style="display:inline;fill:#dddddd;stroke:#9393ac;stroke-width:6.38899994;stroke-miterlimit:10;stroke-opacity:1"
id="g1482-7-0-2"
transform="matrix(0.46557312,-0.15282506,0.23127448,0.66112479,35.082523,54.844128)">
<path
style="stroke:#9393ac;stroke-width:16.09810066;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path1478-7-9-7"
d="m 560.31882,138.45993 c 5.67622,-0.66754 11.43224,-1.07817 17.25801,-1.35358 -2.2705,-4.15211 -4.84001,-8.24642 -7.70842,-12.28425 -3.31875,4.76807 -5.68499,8.57526 -9.54959,13.63783 z" />
<path
style="fill:none;stroke:#9393ac;stroke-width:5.69897842;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-7"
d="m 327.16882,85.247297 c 61.03479,-6.323091 179.55362,16.098563 239.16592,48.705573"
sodipodi:nodetypes="cc" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#9393ac;stroke-width:6.38899994;stroke-miterlimit:10;stroke-opacity:1"
id="g1482-7-0-2-3"
transform="matrix(0.15282506,0.46557312,-0.66112479,0.23127448,426.51867,-35.292079)">
<path
style="stroke:#9393ac;stroke-width:16.09810066;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path1478-7-9-7-7"
d="m 560.31882,138.45993 c 5.67622,-0.66754 11.43224,-1.07817 17.25801,-1.35358 -2.2705,-4.15211 -4.84001,-8.24642 -7.70842,-12.28425 -3.31875,4.76807 -5.68499,8.57526 -9.54959,13.63783 z" />
<path
style="fill:none;stroke:#9393ac;stroke-width:5.69897842;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-7-5"
d="m 327.16882,85.247297 c 61.03479,-6.323091 179.55362,16.098563 239.16592,48.705573"
sodipodi:nodetypes="cc" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#338000;stroke-width:6.38899994;stroke-miterlimit:10;stroke-opacity:1"
id="g1482-7-0-2-3-9"
transform="matrix(-0.43727355,-0.22114627,0.30395007,-0.63102158,419.58852,345.86484)">
<path
style="stroke:#338000;stroke-width:16.09810066;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path1478-7-9-7-7-2"
d="m 560.31882,138.45993 c 5.67622,-0.66754 11.43224,-1.07817 17.25801,-1.35358 -2.2705,-4.15211 -4.84001,-8.24642 -7.70842,-12.28425 -3.31875,4.76807 -5.68499,8.57526 -9.54959,13.63783 z" />
<path
style="fill:none;stroke:#338000;stroke-width:5.69897842;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-7-5-2"
d="m 109.61015,54.882942 c 139.15528,-12.96169 351.10719,24.30008 456.72459,79.069928"
sodipodi:nodetypes="cc" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#8dd35f;stroke-width:6.38899994;stroke-miterlimit:10;stroke-opacity:1"
id="g1482-7-0-2-8"
transform="matrix(-0.46557312,-0.15282506,-0.23127448,0.66112479,525.18189,92.5492)">
<path
style="stroke:#8dd35f;stroke-width:16.09810066;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path1478-7-9-7-9"
d="m 560.31882,138.45993 c 5.67622,-0.66754 11.43224,-1.07817 17.25801,-1.35358 -2.2705,-4.15211 -4.84001,-8.24642 -7.70842,-12.28425 -3.31875,4.76807 -5.68499,8.57526 -9.54959,13.63783 z" />
<path
style="fill:none;stroke:#8dd35f;stroke-width:5.69897842;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-7-7"
d="m 327.16882,85.247297 c 61.03479,-6.323091 179.55362,16.098563 239.16592,48.705573"
sodipodi:nodetypes="cc" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#8dd35f;stroke-width:6.38899994;stroke-miterlimit:10;stroke-opacity:1"
id="g1482-7-0-2-3-3"
transform="matrix(0.15282506,-0.46557312,-0.66112479,-0.23127448,394.70008,459.02918)">
<path
style="stroke:#8dd35f;stroke-width:16.09810066;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path1478-7-9-7-7-6"
d="m 560.31882,138.45993 c 5.67622,-0.66754 11.43224,-1.07817 17.25801,-1.35358 -2.2705,-4.15211 -4.84001,-8.24642 -7.70842,-12.28425 -3.31875,4.76807 -5.68499,8.57526 -9.54959,13.63783 z" />
<path
style="fill:none;stroke:#8dd35f;stroke-width:5.69897842;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-7-5-1"
d="m 327.16882,85.247297 c 61.03479,-6.323091 179.55362,16.098563 239.16592,48.705573"
sodipodi:nodetypes="cc" />
</g>
<circle
stroke-miterlimit="10"
cx="404.65665"
cy="86.40699"
r="61.299999"
id="circle36273"
style="fill:#d6d5eb;stroke:#808285;stroke-width:6;stroke-miterlimit:10" />
<circle
stroke-miterlimit="10"
cx="403.05664"
cy="329.72025"
r="58.5"
id="circle36277"
style="fill:#d9ecd5;stroke:#808285;stroke-width:6;stroke-miterlimit:10" />
<path
style="opacity:0.63999999"
inkscape:connector-curvature="0"
d="m 265.70164,38.801391 c 0,-1.5 0.9,-2.7 2.5,-3.6 v -0.1 c -0.9,-0.6 -1.6,-1.5 -1.6,-3 0,-1.3 0.9,-2.5 2,-3.3 v -0.1 c -1.3,-0.9 -2.4,-2.5 -2.4,-4.6 0,-4.3 3.5,-6.4 7.4,-6.4 1,0 2,0.1 2.8,0.4 h 6.5 v 3.8 h -2.8 c 0.3,0.5 0.6,1.4 0.6,2.3 0,4.1 -3.1,6 -7,6 -0.6,0 -1.4,-0.1 -2.2,-0.4 -0.5,0.4 -0.6,0.7 -0.6,1.3 0,0.9 0.7,1.3 2.7,1.3 h 2.9 c 4.4,0 6.8,1.3 6.8,4.5 0,3.7 -3.8,6.4 -9.9,6.4 -4.4,0 -7.7,-1.3 -7.7,-4.5 z m 12.4,-0.9 c 0,-1.1 -1,-1.4 -2.7,-1.4 h -1.8 c -1.2,0 -1.9,-0.1 -2.5,-0.2 -0.6,0.6 -1,1.1 -1,1.8 0,1.3 1.6,2 3.9,2 2.4,-0.1 4.1,-1 4.1,-2.2 z m -2.1,-13.9 c 0,-1.9 -1,-2.9 -2.4,-2.9 -1.4,0 -2.4,1 -2.4,2.9 0,2 1,3 2.4,3 1.4,0 2.4,-1.1 2.4,-3 z"
id="path18799"
sodipodi:nodetypes="sccsccssccccsscssssssssscscssssss" />
<path
style="opacity:0.63999999"
inkscape:connector-curvature="0"
d="m 410.84432,201.07478 h -2.4 v -3.90001 l 2.4,-0.2 v -1 c 0,-3.8 1.8,-6.8 6.6,-6.8 1.5,0 2.8,0.4 3.6,0.6 l -1,3.9 c -0.6,-0.2 -1.3,-0.4 -1.8,-0.4 -1.3,0 -2,0.7 -2,2.5 v 1.1 h 3.2 v 4.10001 h -3.2 v 13.7 h -5.3 v -13.6 z"
id="path18799-1"
sodipodi:nodetypes="ccccssccsscccccccc" />
<path
style="opacity:0.63999999"
inkscape:connector-curvature="0"
d="m 275.38267,81.239694 c 0,-1.5 0.9,-2.7 2.5,-3.6 v -0.1 c -0.9,-0.6 -1.6,-1.5 -1.6,-3 0,-1.3 0.9,-2.5 2,-3.3 v -0.1 c -1.3,-0.9 -2.4,-2.500004 -2.4,-4.600004 0,-4.3 3.5,-6.4 7.4,-6.4 1,0 2,0.1 2.8,0.4 h 6.5 v 3.8 h -2.8 c 0.3,0.5 0.6,1.4 0.6,2.3 0,4.100004 -3.1,6.000004 -7,6.000004 -0.6,0 -1.4,-0.1 -2.2,-0.4 -0.5,0.4 -0.6,0.7 -0.6,1.3 0,0.9 0.7,1.3 2.7,1.3 h 2.9 c 4.4,0 6.8,1.3 6.8,4.5 0,3.7 -3.8,6.4 -9.9,6.4 -4.4,0 -7.7,-1.3 -7.7,-4.5 z m 12.4,-0.9 c 0,-1.1 -1,-1.4 -2.7,-1.4 h -1.8 c -1.2,0 -1.9,-0.1 -2.5,-0.2 -0.6,0.6 -1,1.1 -1,1.8 0,1.3 1.6,2 3.9,2 2.4,-0.1 4.1,-1 4.1,-2.2 z m -2.1,-13.900004 c 0,-1.9 -1,-2.9 -2.4,-2.9 -1.4,0 -2.4,1 -2.4,2.9 0,2 1,3.000004 2.4,3.000004 1.4,0 2.4,-1.100004 2.4,-3.000004 z"
id="path18799-9"
sodipodi:nodetypes="sccsccssccccsscssssssssscscssssss" />
<rect
style="opacity:1;fill:#000000;fill-opacity:0.63921569;stroke:#338000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill"
id="rect47388"
width="4.2723036"
height="8.8497715"
x="284.90164"
y="18.101391" />
<rect
style="opacity:1;fill:#000000;fill-opacity:0.63921569;stroke:#338000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill"
id="rect47388-4"
width="4.2723036"
height="8.8497715"
x="451.19141"
y="188.30853" />
<path
style="opacity:0.63999999"
inkscape:connector-curvature="0"
d="m 439.8837,199.64846 h -2.4 v -3.90001 l 2.4,-0.2 v -1 c 0,-3.8 1.8,-6.8 6.6,-6.8 1.5,0 2.8,0.4 3.6,0.6 l -1,3.9 c -0.6,-0.2 -1.3,-0.4 -1.8,-0.4 -1.3,0 -2,0.7 -2,2.5 v 1.1 h 3.2 v 4.10001 h -3.2 v 13.7 h -5.3 v -13.6 z"
id="path18799-1-7"
sodipodi:nodetypes="ccccssccsscccccccc" />
<g
id="g47459"
transform="translate(-22.873093,28.915042)">
<g
transform="matrix(0.24309126,0.42546501,0.61475274,-0.33563811,133.48412,79.186496)"
id="g1482-7-0-2-3-9-2"
style="display:inline;fill:#dddddd;stroke:#2c2ca0;stroke-width:6.38899994;stroke-miterlimit:10;stroke-opacity:1">
<path
d="m 560.31882,138.45993 c 5.67622,-0.66754 11.43224,-1.07817 17.25801,-1.35358 -2.2705,-4.15211 -4.84001,-8.24642 -7.70842,-12.28425 -3.31875,4.76807 -5.68499,8.57526 -9.54959,13.63783 z"
id="path1478-7-9-7-7-2-9"
inkscape:connector-curvature="0"
style="stroke:#2c2ca0;stroke-width:16.09810066;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
d="M 108.92789,58.951962 C 263.0837,35.142258 460.71734,79.183022 566.33474,133.95287"
id="path1480-1-3-7-5-2-3"
inkscape:connector-curvature="0"
style="fill:none;stroke:#2c2ca0;stroke-width:5.69897842;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke" />
</g>
<rect
transform="rotate(34.98656)"
y="-10.273473"
x="328.39221"
height="8.8497715"
width="4.2723036"
id="rect47388-4-8"
style="opacity:1;fill:#000000;fill-opacity:0.63921569;stroke:#338000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
<path
sodipodi:nodetypes="ccccssccsscccccccc"
id="path18799-1-7-4"
d="m 258.6994,182.20852 -1.96628,-1.37612 2.2362,-3.19523 2.08097,1.21227 0.57338,-0.81929 c 2.17886,-3.11329 5.37373,-4.53906 9.3063,-1.78681 1.22893,0.86007 2.06465,1.93319 2.60541,2.55575 l -3.05549,2.62184 c -0.37689,-0.50789 -0.83572,-1.07312 -1.24536,-1.35981 -1.06507,-0.7454 -2.03994,-0.57327 -3.07204,0.90145 l -0.63072,0.90121 2.62172,1.83483 -2.35088,3.35909 -2.62172,-1.83483 -7.85536,11.22422 -4.34222,-3.03894 7.79802,-11.14229 z"
inkscape:connector-curvature="0"
style="opacity:0.63999999" />
<path
sodipodi:nodetypes="sccsccssccccsscssssssssscscssssss"
id="path18799-5"
d="m 275.45326,209.85752 c 0.86008,-1.22893 2.2855,-1.69603 4.1124,-1.51597 l 0.0573,-0.0819 c -0.39333,-1.00762 -0.45078,-2.14635 0.40929,-3.37528 0.7454,-1.06507 2.17082,-1.53217 3.53074,-1.55687 l 0.0573,-0.0819 c -0.54902,-1.48276 -0.53282,-3.42434 0.67128,-5.14484 2.46555,-3.52293 6.53716,-3.23659 9.73238,-1.00039 0.81929,0.57338 1.58124,1.2287 2.06465,1.93319 l 5.32536,3.727 -2.17886,3.11329 -2.294,-1.60548 c -0.0409,0.58166 -0.31117,1.49103 -0.82721,2.22839 -2.35088,3.35907 -5.98009,3.13823 -9.17531,0.90203 -0.49157,-0.34403 -1.08967,-0.88467 -1.57308,-1.58916 -0.639,0.041 -0.89294,0.22947 -1.23697,0.72104 -0.51605,0.73736 -0.1719,1.46644 1.46667,2.61321 l 2.37593,1.66281 c 3.60487,2.5229 4.82575,4.96409 2.99092,7.58581 -2.12152,3.03136 -6.78294,3.06457 -11.78059,-0.43307 -3.60486,-2.52289 -5.56311,-5.48013 -3.72828,-8.10185 z m 10.6752,6.37261 c 0.63072,-0.90122 -0.0165,-1.72039 -1.40934,-2.69514 l -1.47471,-1.03209 c -0.98315,-0.68807 -1.49931,-1.17136 -1.93354,-1.59732 -0.8356,0.14754 -1.45001,0.32783 -1.85138,0.90133 -0.7454,1.06507 0.16409,2.55599 2.04845,3.87477 2.02363,1.29419 3.93246,1.53159 4.62052,0.54845 z m 6.24954,-12.59219 c 1.08943,-1.55665 0.84353,-2.94932 -0.30347,-3.75206 -1.14701,-0.80274 -2.53968,-0.55683 -3.62911,0.99981 -1.14677,1.63857 -0.90086,3.03124 0.24614,3.83398 1.147,0.80274 2.59701,0.47491 3.68644,-1.08173 z"
inkscape:connector-curvature="0"
style="opacity:0.63999999" />
</g>
<circle
stroke-miterlimit="10"
cx="153.35664"
cy="82.90699"
r="61.799999"
id="circle36269"
style="fill:#f8f6c1;stroke:#808285;stroke-width:6;stroke-miterlimit:10" />
<circle
style="opacity:1;fill:#000000;fill-opacity:0.63921569;stroke:#338000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill"
id="path47482"
cx="252.34964"
cy="226.46519"
r="4.6393538" />
<rect
transform="rotate(34.98656)"
y="29.847918"
x="362.73148"
height="8.8497715"
width="4.2723036"
id="rect47388-4-8-1"
style="opacity:1;fill:#000000;fill-opacity:0.63921569;stroke:#338000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
<path
sodipodi:nodetypes="ccccssccsscccccccc"
id="path18799-1-7-4-0"
d="m 295.16201,196.19015 -1.96628,-1.37612 2.2362,-3.19523 2.08097,1.21227 0.57338,-0.81929 c 2.17886,-3.11329 5.37373,-4.53906 9.3063,-1.78681 1.22893,0.86007 2.06465,1.93319 2.60541,2.55575 l -3.05549,2.62184 c -0.37689,-0.50789 -0.83572,-1.07312 -1.24536,-1.35981 -1.06507,-0.7454 -2.03994,-0.57327 -3.07204,0.90145 l -0.63072,0.90121 2.62172,1.83483 -2.35088,3.35909 -2.62172,-1.83483 -7.85536,11.22422 -4.34222,-3.03894 7.79802,-11.14229 z"
inkscape:connector-curvature="0"
style="opacity:0.63999999" />
<path
sodipodi:nodetypes="sccsccssccccsscssssssssscscssssss"
id="path18799-5-6"
d="m 260.99087,184.13491 c 0.86008,-1.22893 2.2855,-1.69603 4.1124,-1.51597 l 0.0573,-0.0819 c -0.39333,-1.00762 -0.45078,-2.14635 0.40929,-3.37528 0.7454,-1.06507 2.17082,-1.53217 3.53074,-1.55687 l 0.0573,-0.0819 c -0.54902,-1.48276 -0.53282,-3.42434 0.67128,-5.14484 2.46555,-3.52293 6.53716,-3.23659 9.73238,-1.00039 0.81929,0.57338 1.58124,1.2287 2.06465,1.93319 l 5.32536,3.727 -2.17886,3.11329 -2.294,-1.60548 c -0.0409,0.58166 -0.31117,1.49103 -0.82721,2.22839 -2.35088,3.35907 -5.98009,3.13823 -9.17531,0.90203 -0.49157,-0.34403 -1.08967,-0.88467 -1.57308,-1.58916 -0.639,0.041 -0.89294,0.22947 -1.23697,0.72104 -0.51605,0.73736 -0.1719,1.46644 1.46667,2.61321 l 2.37593,1.66281 c 3.60487,2.5229 4.82575,4.96409 2.99092,7.58581 -2.12152,3.03136 -6.78294,3.06457 -11.78059,-0.43307 -3.60486,-2.52289 -5.56311,-5.48013 -3.72828,-8.10185 z m 10.6752,6.37261 c 0.63072,-0.90122 -0.0165,-1.72039 -1.40934,-2.69514 l -1.47471,-1.03209 c -0.98315,-0.68807 -1.49931,-1.17136 -1.93354,-1.59732 -0.8356,0.14754 -1.45001,0.32783 -1.85138,0.90133 -0.7454,1.06507 0.16409,2.55599 2.04845,3.87477 2.02363,1.29419 3.93246,1.53159 4.62052,0.54845 z m 6.24954,-12.59219 c 1.08943,-1.55665 0.84353,-2.94932 -0.30347,-3.75206 -1.14701,-0.80274 -2.53968,-0.55683 -3.62911,0.99981 -1.14677,1.63857 -0.90086,3.03124 0.24614,3.83398 1.147,0.80274 2.59701,0.47491 3.68644,-1.08173 z"
inkscape:connector-curvature="0"
style="opacity:0.63999999" />
<circle
style="opacity:1;fill:#000000;fill-opacity:0.63921569;stroke:#338000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill"
id="path47482-3"
cx="284.71237"
cy="191.67964"
r="4.6393538" />
</g>
</switch>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 595.3 177"
version="1.1"
id="svg3083"
sodipodi:docname="number_two.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata3089">
<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="defs3087" />
<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="namedview3085"
showgrid="false"
inkscape:zoom="1.1106079"
inkscape:cx="400.07138"
inkscape:cy="102.00612"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg3083" />
<circle
style="fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:7.28163195;stroke-miterlimit:10;stroke-opacity:1"
id="circle3053"
r="29.854694"
cy="88.866219"
cx="262.82538" />
<circle
style="fill:#39bced;stroke:#008dd2;stroke-width:6.78604698;stroke-miterlimit:10"
id="circle3067"
r="27.822794"
cy="83.16346"
cx="257.62473" />
<circle
style="fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:7.28163195;stroke-miterlimit:10;stroke-opacity:1"
id="circle3053-7"
r="29.854694"
cy="90.134148"
cx="348.28882" />
<circle
style="fill:#39bced;stroke:#008dd2;stroke-width:6.78604698;stroke-miterlimit:10"
id="circle3067-5"
r="27.822794"
cy="84.431404"
cx="343.08817" />
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,274 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 595.3 177"
version="1.1"
id="svg3083"
sodipodi:docname="number_two_isomorphism.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata3089">
<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="defs3087" />
<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="namedview3085"
showgrid="false"
inkscape:zoom="1.8237179"
inkscape:cx="351.31456"
inkscape:cy="102.00612"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg3083" />
<circle
style="fill:#e6e7e8;stroke:#cbcccd;stroke-width:3.49380517;stroke-miterlimit:10;stroke-opacity:1"
id="circle14075-1-9-5-2"
r="66.90638"
cy="108.67593"
cx="298.60867"
stroke-miterlimit="10" />
<circle
style="fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:5.25076628;stroke-miterlimit:10;stroke-opacity:1"
id="circle3053"
r="21.528145"
cy="107.38258"
cx="269.77649" />
<circle
style="fill:#e6e7e8;stroke:#cbcccd;stroke-width:3.49380517;stroke-miterlimit:10;stroke-opacity:1"
id="circle14075-1-9-5-2-9"
r="66.90638"
cy="74.696785"
cx="502.79935"
stroke-miterlimit="10" />
<circle
style="fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:5.25076628;stroke-miterlimit:10;stroke-opacity:1"
id="circle3057"
r="21.528145"
cy="63.54755"
cx="476.28644" />
<circle
style="fill:#e6e7e8;stroke:#cbcccd;stroke-width:3.49380517;stroke-miterlimit:10;stroke-opacity:1"
id="circle14075-1-9-5"
r="66.90638"
cy="84.312874"
cx="105.03029"
stroke-miterlimit="10" />
<circle
style="fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:5.25076628;stroke-miterlimit:10;stroke-opacity:1"
id="circle3061"
r="21.528145"
cy="89.773468"
cx="69.764839" />
<circle
style="fill:#39bced;stroke:#008dd2;stroke-width:4.89340115;stroke-miterlimit:10"
id="circle3067"
r="20.062946"
cy="103.27034"
cx="266.02631" />
<circle
style="fill:#f58235;stroke:#e76524;stroke-width:4.89340115;stroke-miterlimit:10"
id="circle3071"
r="20.062946"
cy="59.593758"
cx="471.65881" />
<circle
style="fill:#54b948;stroke:#00873a;stroke-width:4.89340115;stroke-miterlimit:10"
id="circle3075"
r="20.062946"
cy="86.315056"
cx="65.447021" />
<g
style="display:inline;fill:#dddddd;stroke:#848484;stroke-width:6.38899994;stroke-miterlimit:10;stroke-opacity:1"
id="g1482-7-0-2"
transform="matrix(0.27892094,-0.09155621,0.1385546,0.3960743,264.45802,51.542185)">
<path
style="stroke:#848484;stroke-width:16.09810066;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path1478-7-9-7"
d="m 560.31882,138.45993 c 5.67622,-0.66754 11.43224,-1.07817 17.25801,-1.35358 -2.2705,-4.15211 -4.84001,-8.24642 -7.70842,-12.28425 -3.31875,4.76807 -5.68499,8.57526 -9.54959,13.63783 z" />
<path
style="fill:none;stroke:#848484;stroke-width:5.69897834;stroke-opacity:1;paint-order:markers fill stroke;stroke-miterlimit:10;stroke-dasharray:none"
inkscape:connector-curvature="0"
id="path1480-1-3-7"
d="M 42.929756,85.319146 C 229.4783,30.427388 411.90415,47.945063 566.33474,133.95287"
sodipodi:nodetypes="cc" />
<path
style="display:inline;fill:#dddddd;stroke:#848484;stroke-width:16.09810066;stroke-miterlimit:10;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path1478-7-9-7-1"
d="m 38.747848,79.302901 c -3.685376,3.126841 -7.675213,6.101885 -11.846439,9.0099 5.66716,1.99806 11.50698,3.81476 17.520627,5.45113 -1.999024,-5.0466 -3.811052,-8.944433 -5.674188,-14.46103 z" />
</g>
<circle
style="fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:5.25076628;stroke-miterlimit:10;stroke-opacity:1"
id="circle3057-3"
r="21.528145"
cy="80.675522"
cx="544.22595" />
<circle
style="fill:#f58235;stroke:#e76524;stroke-width:4.89340115;stroke-miterlimit:10"
id="circle3071-6"
r="20.062946"
cy="76.721725"
cx="539.59833" />
<circle
style="fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:5.25076628;stroke-miterlimit:10;stroke-opacity:1"
id="circle3053-7"
r="21.528145"
cy="108.29689"
cx="331.40396" />
<circle
style="fill:#39bced;stroke:#008dd2;stroke-width:4.89340115;stroke-miterlimit:10"
id="circle3067-5"
r="20.062946"
cy="104.18465"
cx="327.65378" />
<circle
style="fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:5.25076628;stroke-miterlimit:10;stroke-opacity:1"
id="circle3061-5"
r="21.528145"
cy="82.488602"
cx="143.3054" />
<circle
style="fill:#54b948;stroke:#00873a;stroke-width:4.89340115;stroke-miterlimit:10"
id="circle3075-6"
r="20.062946"
cy="79.030197"
cx="138.98756" />
<g
style="display:inline;fill:#dddddd;stroke:#848484;stroke-width:6.38899994;stroke-miterlimit:10;stroke-opacity:1"
id="g1482-7-0-2-2"
transform="matrix(0.29347507,-0.00719813,-0.00217274,-0.41960398,346.84469,151.47006)">
<path
style="stroke:#848484;stroke-width:16.09810066;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path1478-7-9-7-7"
d="m 560.31882,138.45993 c 5.67622,-0.66754 11.43224,-1.07817 17.25801,-1.35358 -2.2705,-4.15211 -4.84001,-8.24642 -7.70842,-12.28425 -3.31875,4.76807 -5.68499,8.57526 -9.54959,13.63783 z" />
<path
style="fill:none;stroke:#848484;stroke-width:5.69897841;stroke-opacity:1;paint-order:markers fill stroke;stroke-miterlimit:10;stroke-dasharray:none"
inkscape:connector-curvature="0"
id="path1480-1-3-7-0"
d="M 42.929756,85.319146 C 229.4783,30.427388 411.90415,47.945063 566.33474,133.95287"
sodipodi:nodetypes="cc" />
<path
style="display:inline;fill:#dddddd;stroke:#848484;stroke-width:16.09810066;stroke-miterlimit:10;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path1478-7-9-7-1-9"
d="m 38.747848,79.302901 c -3.685376,3.126841 -7.675213,6.101885 -11.846439,9.0099 5.66716,1.99806 11.50698,3.81476 17.520627,5.45113 -1.999024,-5.0466 -3.811052,-8.944433 -5.674188,-14.46103 z" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#848484;stroke-width:6.38899994;stroke-miterlimit:10;stroke-opacity:1"
id="g1482-7-0-2-3"
transform="matrix(-0.2928813,0.01999929,-0.03667865,-0.41800347,316.33798,297.19101)">
<path
style="stroke:#848484;stroke-width:16.09810066;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path1478-7-9-7-6"
d="m 446.8457,502.21372 c 5.73142,-0.2798 11.50642,-0.298 17.33194,-0.17663 -1.67886,-4.29461 -3.66279,-8.55191 -5.95148,-12.77321 -3.95899,4.52889 -6.83832,8.16439 -11.38046,12.94984 z" />
<path
style="fill:none;stroke:#848484;stroke-width:5.69897842;stroke-opacity:1;paint-order:markers fill stroke;stroke-miterlimit:10;stroke-dasharray:none"
inkscape:connector-curvature="0"
id="path1480-1-3-7-06"
d="m 212.14502,456.93595 c 90.0582,-23.55421 180.14674,2.84144 252.03262,45.10114"
sodipodi:nodetypes="cc" />
<path
style="display:inline;fill:#dddddd;stroke:#848484;stroke-width:16.09810066;stroke-miterlimit:10;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path1478-7-9-7-1-2"
d="m 214.70903,447.21135 c -4.09527,2.86742 -8.4719,5.56279 -13.01942,8.17898 5.35223,2.37758 10.90116,4.58606 16.64781,6.62654 -1.28496,-5.1681 -2.54369,-9.17799 -3.62839,-14.80552 z" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#848484;stroke-width:6.38899994;stroke-miterlimit:10;stroke-opacity:1"
id="g1482-7-0-2-2-6"
transform="matrix(-0.29347507,-0.00719813,0.00217274,-0.41960398,255.98301,167.70817)">
<path
style="stroke:#848484;stroke-width:16.09810066;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path1478-7-9-7-7-1"
d="m 560.31882,138.45993 c 5.67622,-0.66754 11.43224,-1.07817 17.25801,-1.35358 -2.2705,-4.15211 -4.84001,-8.24642 -7.70842,-12.28425 -3.31875,4.76807 -5.68499,8.57526 -9.54959,13.63783 z" />
<path
style="fill:none;stroke:#848484;stroke-width:5.69897841;stroke-opacity:1;paint-order:markers fill stroke;stroke-miterlimit:10;stroke-dasharray:none"
inkscape:connector-curvature="0"
id="path1480-1-3-7-0-8"
d="M -159.63659,107.03583 C 150.86788,11.39233 411.90415,47.945063 566.33474,133.95287"
sodipodi:nodetypes="cc" />
<path
style="display:inline;fill:#dddddd;stroke:#848484;stroke-width:16.09810066;stroke-miterlimit:10;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path1478-7-9-7-1-9-7"
d="m -171.22409,99.270105 c -2.20329,3.736275 -4.76374,7.392185 -7.52697,11.022435 6.29439,0.7109 12.67712,1.21368 19.14975,1.50908 -4.0742,-4.3693 -7.47835,-7.68799 -11.62278,-12.531515 z"
inkscape:transform-center-x="11.984155"
inkscape:transform-center-y="8.9513322" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#848484;stroke-width:6.38899994;stroke-miterlimit:10;stroke-opacity:1"
id="g1482-7-0-2-2-6-9"
transform="matrix(-0.2921699,0.02856889,0.03274976,0.41832963,326.72498,-9.8029193)">
<path
style="stroke:#848484;stroke-width:16.09810066;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path1478-7-9-7-7-1-2"
d="m 560.31882,138.45993 c 5.67622,-0.66754 11.43224,-1.07817 17.25801,-1.35358 -2.2705,-4.15211 -4.84001,-8.24642 -7.70842,-12.28425 -3.31875,4.76807 -5.68499,8.57526 -9.54959,13.63783 z" />
<path
style="fill:none;stroke:#848484;stroke-width:5.69897834;stroke-opacity:1;paint-order:markers fill stroke;stroke-miterlimit:10;stroke-dasharray:none"
inkscape:connector-curvature="0"
id="path1480-1-3-7-0-8-0"
d="M -412.78287,153.18008 C -102.2784,57.53658 213.22895,62.589337 566.33474,133.95287"
sodipodi:nodetypes="cc" />
<path
style="display:inline;fill:#dddddd;stroke:#848484;stroke-width:16.09810066;stroke-miterlimit:10;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path1478-7-9-7-1-9-7-2"
d="m -405.2559,142.15764 c -2.20329,3.73628 -4.76374,7.39219 -7.52697,11.02244 6.29439,0.7109 12.67712,1.21368 19.14975,1.50908 -4.0742,-4.3693 -7.47835,-7.68799 -11.62278,-12.53152 z"
inkscape:transform-center-x="11.984155"
inkscape:transform-center-y="8.9513322" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#848484;stroke-width:6.38899994;stroke-miterlimit:10;stroke-opacity:1"
id="g1482-7-0-2-2-6-9-3"
transform="matrix(-0.28832426,0.05521371,0.07093418,0.41357051,240.48401,-22.812205)">
<path
style="stroke:#848484;stroke-width:16.09810066;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path1478-7-9-7-7-1-2-7"
d="m 560.31882,138.45993 c 5.67622,-0.66754 11.43224,-1.07817 17.25801,-1.35358 -2.2705,-4.15211 -4.84001,-8.24642 -7.70842,-12.28425 -3.31875,4.76807 -5.68499,8.57526 -9.54959,13.63783 z" />
<path
style="fill:none;stroke:#848484;stroke-width:5.69897833;stroke-opacity:1;paint-order:markers fill stroke;stroke-miterlimit:10;stroke-dasharray:none"
inkscape:connector-curvature="0"
id="path1480-1-3-7-0-8-0-5"
d="M -913.39295,301.65738 C -555.60153,112.61457 112.06137,19.489634 566.33474,133.95287"
sodipodi:nodetypes="cc" />
<path
style="display:inline;fill:#dddddd;stroke:#848484;stroke-width:16.09810066;stroke-miterlimit:10;stroke-opacity:1"
inkscape:connector-curvature="0"
id="path1478-7-9-7-1-9-7-2-9"
d="m -912.87112,294.74375 c -0.8689,3.97958 -2.11374,7.94141 -3.5652,11.91248 6.38369,-0.36888 12.78225,-0.95366 19.19742,-1.7539 -5.47161,-3.53829 -9.92958,-6.17386 -15.63222,-10.15858 z"
inkscape:transform-center-x="14.276965"
inkscape:transform-center-y="5.4639331" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1,142 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 595.3 177"
version="1.1"
id="svg3083"
sodipodi:docname="number_two_sets.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata3089">
<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="defs3087" />
<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="namedview3085"
showgrid="false"
inkscape:zoom="1.1106079"
inkscape:cx="400.07138"
inkscape:cy="102.00612"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg3083" />
<circle
style="fill:#e6e7e8;stroke:#cbcccd;stroke-width:3.49380517;stroke-miterlimit:10;stroke-opacity:1"
id="circle14075-1-9-5-2"
r="66.90638"
cy="108.67593"
cx="298.60867"
stroke-miterlimit="10" />
<circle
style="fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:5.25076628;stroke-miterlimit:10;stroke-opacity:1"
id="circle3053"
r="21.528145"
cy="107.38258"
cx="269.77649" />
<circle
style="fill:#e6e7e8;stroke:#cbcccd;stroke-width:3.49380517;stroke-miterlimit:10;stroke-opacity:1"
id="circle14075-1-9-5-2-9"
r="66.90638"
cy="74.696785"
cx="502.79935"
stroke-miterlimit="10" />
<circle
style="fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:5.25076628;stroke-miterlimit:10;stroke-opacity:1"
id="circle3057"
r="21.528145"
cy="63.54755"
cx="476.28644" />
<circle
style="fill:#e6e7e8;stroke:#cbcccd;stroke-width:3.49380517;stroke-miterlimit:10;stroke-opacity:1"
id="circle14075-1-9-5"
r="66.90638"
cy="84.312874"
cx="105.03029"
stroke-miterlimit="10" />
<circle
style="fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:5.25076628;stroke-miterlimit:10;stroke-opacity:1"
id="circle3061"
r="21.528145"
cy="89.773468"
cx="69.764839" />
<circle
style="fill:#39bced;stroke:#008dd2;stroke-width:4.89340115;stroke-miterlimit:10"
id="circle3067"
r="20.062946"
cy="103.27034"
cx="266.02631" />
<circle
style="fill:#f58235;stroke:#e76524;stroke-width:4.89340115;stroke-miterlimit:10"
id="circle3071"
r="20.062946"
cy="59.593758"
cx="471.65881" />
<circle
style="fill:#54b948;stroke:#00873a;stroke-width:4.89340115;stroke-miterlimit:10"
id="circle3075"
r="20.062946"
cy="86.315056"
cx="65.447021" />
<circle
style="fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:5.25076628;stroke-miterlimit:10;stroke-opacity:1"
id="circle3057-3"
r="21.528145"
cy="80.675522"
cx="544.22595" />
<circle
style="fill:#f58235;stroke:#e76524;stroke-width:4.89340115;stroke-miterlimit:10"
id="circle3071-6"
r="20.062946"
cy="76.721725"
cx="539.59833" />
<circle
style="fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:5.25076628;stroke-miterlimit:10;stroke-opacity:1"
id="circle3053-7"
r="21.528145"
cy="108.29689"
cx="331.40396" />
<circle
style="fill:#39bced;stroke:#008dd2;stroke-width:4.89340115;stroke-miterlimit:10"
id="circle3067-5"
r="20.062946"
cy="104.18465"
cx="327.65378" />
<circle
style="fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:5.25076628;stroke-miterlimit:10;stroke-opacity:1"
id="circle3061-5"
r="21.528145"
cy="82.488602"
cx="143.3054" />
<circle
style="fill:#54b948;stroke:#00873a;stroke-width:4.89340115;stroke-miterlimit:10"
id="circle3075-6"
r="20.062946"
cy="79.030197"
cx="138.98756" />
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 595.3 177"
version="1.1"
id="svg3397"
sodipodi:docname="reflexivity.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<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="2560"
inkscape:window-height="1376"
id="namedview3399"
showgrid="false"
inkscape:zoom="1.574029"
inkscape:cx="323.53563"
inkscape:cy="109.19138"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg3397"
inkscape:document-rotation="0" />
<circle
cx="237.29469"
cy="94.607574"
r="24.6"
id="circle3369"
style="opacity:0.12999998;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
cx="232.49467"
cy="86.307571"
r="24.6"
id="circle3383"
style="fill:#d71920;stroke:#be1e2d;stroke-width:6;stroke-miterlimit:10" />
<g
id="g25573">
<path
inkscape:connector-curvature="0"
id="path25536"
d="m 271.75484,79.082492 h 51.93678"
style="fill:none;stroke:#666666;stroke-width:2.73304653;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path25536-7"
d="m 271.19895,96.315335 h 51.93678"
style="fill:none;stroke:#666666;stroke-width:2.73304653;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<circle
cx="364.68683"
cy="96.494637"
r="24.6"
id="circle3369-5"
style="opacity:0.12999998;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
cx="359.88684"
cy="88.194641"
r="24.6"
id="circle3383-3"
style="fill:#d71920;stroke:#be1e2d;stroke-width:6;stroke-miterlimit:10" />
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -0,0 +1,162 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 595.3 177"
version="1.1"
id="svg3397"
sodipodi:docname="symmetry.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<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="2560"
inkscape:window-height="1376"
id="namedview3399"
showgrid="false"
inkscape:zoom="3.1480579"
inkscape:cx="319.69493"
inkscape:cy="87.569754"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg3397"
inkscape:document-rotation="0" />
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.389;stroke-miterlimit:10"
id="g1482-7-0-4"
transform="matrix(0.32913359,-0.00613048,0.03180803,0.45906746,206.02041,-51.65295)">
<path
style="stroke-width:36.8983"
inkscape:connector-curvature="0"
id="path1478-7-9-9"
d="m 300.11147,308.89056 c 11.45734,-5.05862 23.31627,-9.60141 35.44547,-13.89029 -8.57402,-7.71646 -17.73121,-15.11655 -27.47244,-22.20324 -2.74504,12.60642 -4.33418,22.49306 -7.97303,36.09353 z" />
<path
style="stroke-width:14.2769;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-7"
d="m 130.20492,307.63343 c 55.06889,-12.45337 125.33622,-12.58656 169.06769,-4.24803" />
<path
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:14.2769;stroke-miterlimit:10;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-7-9"
d="M 130.14688,279.92717 C 185.21577,267.47379 255.4831,267.3406 299.21457,275.67914" />
</g>
<g
id="g2605"
transform="matrix(1.1909331,0,0,1.1909331,-92.289506,-21.250305)">
<circle
cx="250.16379"
cy="90.603348"
r="24.6"
id="circle3365"
style="opacity:0.12999998;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
cx="245.36378"
cy="84.403351"
r="24.6"
id="circle3379"
style="fill:#fce600;stroke:#ffdd00;stroke-width:6;stroke-miterlimit:10" />
</g>
<g
id="g2601"
transform="matrix(1.1909331,0,0,1.1909331,-102.28951,-21.250305)">
<circle
cx="153.12378"
cy="90.683884"
r="24.6"
id="circle3371-9"
style="opacity:0.12999998;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
cx="148.32379"
cy="84.383881"
r="24.6"
id="circle3385-3"
style="fill:#f58235;stroke:#e76524;stroke-width:6;stroke-miterlimit:10" />
</g>
<g
id="g2605-4"
transform="matrix(1.1909331,0,0,1.1909331,90.308472,-20.819575)">
<circle
cx="250.16379"
cy="90.603348"
r="24.6"
id="circle3365-1"
style="opacity:0.12999998;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
cx="245.36378"
cy="84.403351"
r="24.6"
id="circle3379-5"
style="fill:#fce600;stroke:#ffdd00;stroke-width:6;stroke-miterlimit:10" />
</g>
<g
id="g2601-0"
transform="matrix(1.1909331,0,0,1.1909331,329.82834,-21.302115)">
<circle
cx="153.12378"
cy="90.683884"
r="24.6"
id="circle3371-9-8"
style="opacity:0.12999998;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
cx="148.32379"
cy="84.383881"
r="24.6"
id="circle3385-3-3"
style="fill:#f58235;stroke:#e76524;stroke-width:6;stroke-miterlimit:10" />
</g>
<g
transform="matrix(0.87291979,0,0,1,-121.36191,-5.8924149)"
id="g25573">
<path
inkscape:connector-curvature="0"
id="path25536"
d="m 271.75484,79.082492 h 51.93678"
style="fill:none;stroke:#666666;stroke-width:2.73304653;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path25536-7"
d="m 271.19895,96.315335 h 51.93678"
style="fill:none;stroke:#666666;stroke-width:2.73304653;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
transform="matrix(0.87291979,0,0,1,186.11979,-5.2663862)"
id="g25573-5">
<path
inkscape:connector-curvature="0"
id="path25536-6"
d="m 271.75484,79.082492 h 51.93678"
style="fill:none;stroke:#666666;stroke-width:2.73304653;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path25536-7-2"
d="m 271.19895,96.315335 h 51.93678"
style="fill:none;stroke:#666666;stroke-width:2.73304653;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@ -0,0 +1,214 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 595.3 177"
version="1.1"
id="svg3397"
sodipodi:docname="transitivity.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<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="2560"
inkscape:window-height="1376"
id="namedview3399"
showgrid="false"
inkscape:zoom="2.7111955"
inkscape:cx="367.14719"
inkscape:cy="84.140869"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg3397"
inkscape:document-rotation="0" />
<circle
cx="97.136223"
cy="54.212177"
r="23.414963"
id="circle3369"
style="opacity:0.12999998;stroke:#000000;stroke-width:5.71095991;stroke-miterlimit:10" />
<circle
cx="185.72101"
cy="52.110073"
r="23.414963"
id="circle3371"
style="opacity:0.13;stroke:#000000;stroke-width:5.71096;stroke-miterlimit:10" />
<circle
cx="181.15222"
cy="46.113556"
r="23.414963"
id="circle3385"
style="stroke-width:5.71096;stroke-miterlimit:10"
stroke="#e76524"
fill="#f58235" />
<circle
cx="92.567444"
cy="46.312016"
r="23.414963"
id="circle3383"
style="fill:#d71920;stroke:#be1e2d;stroke-width:5.71095991;stroke-miterlimit:10" />
<circle
cx="553.74371"
cy="95.41021"
r="23.414963"
id="circle3365-3"
style="opacity:0.12999998;stroke:#000000;stroke-width:5.71095991;stroke-miterlimit:10" />
<circle
cx="375.93707"
cy="98.017258"
r="23.414963"
id="circle3369-8"
style="opacity:0.12999998;stroke:#000000;stroke-width:5.71095991;stroke-miterlimit:10" />
<circle
cx="465.37836"
cy="95.486885"
r="23.414963"
id="circle3371-6"
style="opacity:0.12999998;stroke:#000000;stroke-width:5.71095991;stroke-miterlimit:10" />
<circle
cx="549.17487"
cy="89.508896"
r="23.414963"
id="circle3379-0"
style="fill:#fce600;stroke:#ffdd00;stroke-width:5.71095991;stroke-miterlimit:10" />
<circle
cx="371.36829"
cy="90.117081"
r="23.414963"
id="circle3383-3"
style="fill:#d71920;stroke:#be1e2d;stroke-width:5.71095991;stroke-miterlimit:10" />
<circle
cx="460.8096"
cy="89.490356"
r="23.414963"
id="circle3385-3"
style="fill:#f58235;stroke:#e76524;stroke-width:5.71095991;stroke-miterlimit:10" />
<circle
cx="184.74231"
cy="131.37019"
r="23.414963"
id="circle3365-3-1"
style="opacity:0.13;stroke:#000000;stroke-width:5.71096;stroke-miterlimit:10" />
<circle
cx="94.659637"
cy="131.87514"
r="23.414963"
id="circle3371-6-0"
style="opacity:0.12999998;stroke:#000000;stroke-width:5.71095991;stroke-miterlimit:10" />
<circle
cx="180.17346"
cy="125.46888"
r="23.414963"
id="circle3379-0-3"
style="stroke-width:5.71096;stroke-miterlimit:10"
stroke="#ffdd00"
fill="#fce600" />
<circle
cx="90.733276"
cy="127.80587"
r="23.414963"
id="circle3385-3-0"
style="fill:#f58235;stroke:#e76524;stroke-width:5.71095991;stroke-miterlimit:10" />
<g
style="display:inline;fill:#ff8080;stroke:#838383;stroke-width:6.389;stroke-miterlimit:10"
id="g1482-7-0-4"
transform="matrix(0.32913359,-0.00613048,0.03180803,0.45906746,200.26029,-45.527461)">
<path
style="fill:#ff8080;stroke-width:36.8983"
inkscape:connector-curvature="0"
id="path1478-7-9-9"
d="m 300.11147,308.89056 c 11.45734,-5.05862 23.31627,-9.60141 35.44547,-13.89029 -8.57402,-7.71646 -17.73121,-15.11655 -27.47244,-22.20324 -2.74504,12.60642 -4.33418,22.49306 -7.97303,36.09353 z" />
<path
style="fill:#ff8080;stroke-width:14.2769;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-7"
d="m 130.20492,307.63343 c 55.06889,-12.45337 125.33622,-12.58656 169.06769,-4.24803" />
<path
style="display:inline;fill:#ff8080;stroke:#838383;stroke-width:14.2769;stroke-miterlimit:10;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-7-9"
d="M 130.14688,279.92717 C 185.21577,267.47379 255.4831,267.3406 299.21457,275.67914" />
</g>
<g
transform="matrix(0.54267318,0,0,1,-23.284636,-37.580211)"
id="g25573-5">
<path
inkscape:connector-curvature="0"
id="path25536-6"
d="m 271.75484,79.082492 h 51.93678"
style="fill:none;stroke:#666666;stroke-width:2.73304653;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path25536-7-2"
d="m 271.19895,90.315335 h 51.93678"
style="fill:none;stroke:#666666;stroke-width:2.73304653;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
transform="matrix(0.54267318,0,0,1,-24.206733,42.138713)"
id="g25573-5-6">
<path
inkscape:connector-curvature="0"
id="path25536-6-2"
d="m 271.75484,79.082492 h 51.93678"
style="fill:none;stroke:#666666;stroke-width:2.73304653;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path25536-7-2-6"
d="m 271.19895,90.315335 h 51.93678"
style="fill:none;stroke:#666666;stroke-width:2.73304653;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
transform="matrix(0.54267318,0,0,1,256.26821,5.9922971)"
id="g25573-5-6-1">
<path
inkscape:connector-curvature="0"
id="path25536-6-2-8"
d="m 271.75484,79.082492 h 51.93678"
style="fill:none;stroke:#666666;stroke-width:2.73304653;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path25536-7-2-6-7"
d="m 271.19895,90.315335 h 51.93678"
style="fill:none;stroke:#666666;stroke-width:2.73304653;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
transform="matrix(0.54267318,0,0,1,343.52773,5.9922967)"
id="g25573-5-6-1-9">
<path
inkscape:connector-curvature="0"
id="path25536-6-2-8-2"
d="m 271.75484,79.082492 h 51.93678"
style="fill:none;stroke:#666666;stroke-width:2.73304653;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path25536-7-2-6-7-0"
d="m 271.19895,90.315335 h 51.93678"
style="fill:none;stroke:#666666;stroke-width:2.73304653;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@ -6,61 +6,92 @@ title: Categories
From Sets to Categories
===
In this chapter we will continue with set theory, and at the same time we will start exploring categories and talking about why they are important.
In this chapter we will see some more set-theoretic constructs, but we will also introduce their category-theoretic counterparts in an effort to gently introduce the concept of a category itself.
When we are finished with that, we will try, (and almost succeed) to define categories from scratch, without actually relying on set theory.
Products
===
In the previous chapter, we needed a way to make a set that is a composite of other sets that we already have. For example, when we discussed mathematical functions, we couldn't define **+** and **-** functions, because we only knew about functions that take one argument. When we talked about programming, we talked about the primitive types, `Char` and `Number`, and we mentioned that most of the types are composite types. So how do we construct those?
In the previous chapter there were several places where needed a way to construct a set whose elements are *composite* of the elements of some other sets: when we discussed mathematical functions, we couldn't define $+$ and $-$ because we could only formulate functions that take one argument. Then, when we introduced the primitive types in programming languages, like `Char` and `Number`, we mentioned that most of the types that we actually use are *composite* types. So how do we construct those?
The simplest composite type, of the sets **B**, which contains **b**'s and the set **Y**, which contains **y**'s is the *product* of **B** and **Y**.
The simplest composite type, of the sets $B$, that contains $b$'s and the set $Y$, that contains $y$'s is the *Cartesian product* of $B$ and $Y$, that is the set of *ordered pairs* that contain one element of the set $Y$ and one element of the set $B$. Or formally speaking: $Y \times B = \{ (y, b) \}$ where $y ∈ Y, b ∈ B$ ($∈$ means "is an element of").
![Product parts](product_parts.svg)
The product is the set of *ordered pairs* of **b**'s and **y**'s. It is denoted **B x Y** and it comes equipped with two functions for retrieving the **b** and the **y** from each **(b, y)**.
It is denoted $B \times Y$ and it comes equipped with two functions for retrieving the $b$ and the $y$ from each $(b, y)$.
![Product](product.svg)
The product is denoted **B x Y**, and it comes equipped with two functions for retrieving the **b** and the **y** from each **(b, y)**.
**Question**: Why is this called a product? Hint: How many elements does it have?
The Cartesian product was first defined by the mathematician and philosopher René Descartes as a basis for the Cartesian coordinate system. But as we shall see, it has many other use-cases.
{% if site.distribution == 'print'%}
Interlude - coordinate systems
---
The concept of the Cartesian product was first defined by the mathematician and philosopher René Descartes as a basis for the *Cartesian coordinate system*. Although it does not look like it, both concepts are named after him (or after the Latinized version of his name.)
You probably know how the Cartesian coordinate system works, but an equally interesting question, of which you probably haven't thought about, is how we can define it using sets and functions.
An Cartesian coordinate system consists of two perpendicular lines, situated on an *Euclidian plane* and some kind of mapping that resembles a function, connecting any point in these two lines to a number, representing the distance between the point that is being mapped and the lines' point of overlap (which is mapped to the number $0$).
![Cartesian coordinates](coordinates_x_y.svg)
Using this construct (as well as the concept of a Cartesian product), we can describe not only the points on the lines, but any point on the Euclidian plane. We do that by measuring the distance between the point and those two lines.
![Cartesian coordinates](coordinates.svg)
And since the point is the main primitive of Euclidian geometry, the coordinate system allows us to also describe all kinds of geometric figures such as this triangle (which is described using products of products.)
![Cartesian coordinates](coordinates_triangle.svg)
So we can say that the Cartesian coordinate system is some kind of function-like mapping between all kinds of sets of (products of) *products of numbers* and *geometric figures* that correspond to these numbers, using which we can derive some properties of the figures using the numbers (for example, using the products in the example below, we can compute that the triangle that they represent has base of $6$ units and height of $5$ units.
![Cartesian coordinates](coordinates_isomorphism.svg)
What's even more interesting is that this mapping is one-to-one, which makes the two realms *isomorphic* (traditionally we say that the point is *completely* described by the coordinates, which is the same thing.)
Our effort to represent Cartesian coordinates with sets is satisfactory, but incomplete, as we still don't know what these function-like things that connect points to numbers are - they make intuitive sense as functions, and that they exhibit all relevant properties (many-to-one mapping, or one-to-one in this case), however, we have only covered functions as mappings between sets and in this case, even if we can think of the coordinate system as a set (of points and figures), geometrical figures are definitely not a set, as it has a lot of additional things going on (or additional *structure*, as a category theorist would say.)
So defining this mapping formally, would require us to also formalize both geometry and algebra, and moreover to do so in a way in which they are compatible with one another. This is some of the ambitions of category theory and this is what we will attempt to do later in this book (even if not for this exact example.)
But before we continue with that, let's see some other neat uses of products.
{%endif%}
Products as Objects
---
We established that in programming, sets resemble types, and functions resemble functions. Products, in this case, are like stripped-out *classes* (also called *records* or *structs*). The composite sets (the ones which form the product) are just the class's fields (also called *members*). The functions for accessing them are like what programmers call *getter methods*.
In the previous chapter we established the correspondence of various concepts in programming languages and set theory sets resemble types, functions resemble methods/subroutines. This picture is made complete with products, that are like stripped-down *classes* (also called *records* or *structs*) - the sets that form the product correspond to the class's *properties* (also called *members*) and the functions for accessing them are like what programmers call *getter methods*.
The famous example of object-oriented programming of a `Person` class with `name` and `age` fields is nothing more than a product of the set of strings, and the sets of numbers. (We still haven't defined strings and lists in terms of set theory but we will get to that.) Objects with more than two values can be expressed as products the composites of which are themselves products.
The famous example of object-oriented programming of a `Person` class with `name` and `age` fields is nothing more than a product of the set of strings, and the sets of numbers. Objects with more than two values can be expressed as products the composites of which are themselves products.
Using Products to Define Numeric Operations
---
Products can also be used for expressing functions which take more than one argument. For example, "plus" and "minus", are functions from the set of products of two numbers to the set of numbers. (So, **+: R x R → R**.) Of course, we cannot draw the function itself, even partly, because it has too much arrows and would look messy.
Products can also be used for expressing functions that take more than one argument. For example, "plus" and "minus", are functions from the set of products of two numbers to the set of numbers. (So, $+: \mathbb{Z} \times \mathbb{Z} → \mathbb{Z}$.) Of course, we cannot draw the function itself, even partly, because it has too much arrows and would look messy.
Joking, here it is.
Actually, here it is.
![The plus function](plus.svg)
Note that there are languages where the *pair* data structure (also called a *tuple*) is a first-level construct, and multi-argument functions are really implemented in this way.
Note that there are languages, such as the ones from the ML family, where the *pair* data structure (also called a *tuple*) is a first-level construct, and multi-argument functions are really implemented in this way.
Defining products in Terms of Sets
<!--TODO: there are also languages (Haskell) where multi argument functions are implemented using currying -->
Defining products in terms of sets
---
Now we will define the abstract concept of a product of two sets in terms of sets themselves. It is not hard: the product of two sets **Y** and **B** is just the set of all possible *ordered pairs*, which contain one element of the set **Y** and one element of the set **B**. Or formally speaking: **Y x B = { (y, b) }** where **y ∈ Y, b ∈ B** (**∈** means "is an element of").
When we said that the product is a set of *ordered* pairs (formally speaking $A \times B ≠ B \times A$). But we didn't define how ordered pairs formally. Note that the criteria for order prevents us from symbolizing the pair with just a set containing the two elements, as while some mathematical operations (such as addition) indeed don't care about order, others (such as subtraction) do. And in programming, we have the ability to assign names to each member of an object, which accomplishes the same purpose as ordering does for pairs.
![A pair](pair.svg)
The real challenge is defining what a pair means in terms of sets. Note that the pair have to be *ordered* (formally speaking **A x B ≠ B x A for all A and B**), so it cannot be just a set of the elements - some mathematical operations (such as addition) don't care about order, but others (such as subtraction) do.
In programming we have the ability to assign names to each member of an object, which accomplishes the same purpose as ordering does for pairs.
So the pair must be ordered, and sets aren't, but that that hasn't stopped mathematicians from coming up with multiple ingenious ways to represent an ordered pair using sets. Let's see them, just for fun. Here is the first one, which was discovered by Norbert Wiener in 1914. The definition is notable for its smart use of the uniqueness of the empty set.
So does that mean that we have to define ordered pair as a "primitive" type, like we defined sets in order to use them? That's possible, but there is another approach if we can define a construct that is *isomorphic* to the ordered pair, using only sets, we can use that construct instead of them. And mathematicians had come up with multiple ingenious ways to do that. Here is the first one, which was discovered by Norbert Wiener in 1914. Note the smart use of the fact that the empty set is unique.
![A pair, represented by sets](pair_as_set_2.svg)
The next one was discovered in the same year by Felix Hausdorff. In order to use that one, we just have to define "1", and "2" first.
The next one was discovered in the same year by Felix Hausdorff. In order to use that one, we just have to define $1$, and $2$ first.
![A pair, represented by sets](pair_as_set_3.svg)
@ -68,128 +99,165 @@ Discovered in 1921 Kazimierz Kuratowski, this one uses just the component of the
![A pair, represented by sets](pair_as_set_1.svg)
Defining products in Terms of Functions
Defining products in terms of functions
---
In the previous chapter we provided a definition of a product by *zooming in* the individual elements of the sets and seeing what they can be made of. This gave us a *low-level* view of products. This time we will try to do the opposite - be as oblivious to the contents of our sets as possible. Instead of zooming in we will *zoom out*, and try to define the product in terms of functions and functional composition. Effectively we will be working at a *higher level* of abstraction.
In the product definitions presented in the previous section worked by *zooming in* into the individual elements of the product and seeing what they can be made of. I call this the *low-level* approach. This time we will try to do the opposite - be as oblivious to the contents of our sets as possible i.e. instead of zooming in we will *zoom out*, and try to define the product in terms of functions and functional composition. Effectively we will be working at a *higher level* of abstraction.
So let's begin with an external diagram, showing the definition of the product. Disclaimer: I know that this is a somewhat weird notation, but don't worry, we will not be using it for very long.
How can we define products in terms of functions? Let's begin with an external diagram, showing the definition of the product.
![Product, external diagram](product_external.svg)
This diagram already contains the first piece of the puzzle: if we have a set **G** which is the product of sets **Y** and **B**, then we should also have functions which give us back the elements of the product, so **G → Y** and **G → B**.
This diagram already contains the first piece of the puzzle: if we have a set $G$ which is the product of sets $Y$ and $B$, then we should also have functions which give us back the elements of the product, so $G → Y$ and $G → B$.
This definition is not complete, however, because the product of **G** and **B** is not the only set for which such functions can be defined. For example:
- A set of triples of **Y x B x R** for any random element **R** also qualifies.
- If there is a function from **G** to **B** then the set **G** itself meets our condition for being the product, because it is connected to **B** and to itself.
Depending on our specific case there can be many other such objects.
This definition is not complete, however, because the product of $G$ and $B$ is not the only set for which such functions can be defined. For example, a set of triples of $Y \times B \times R$ for any random element $R$ also qualifies. And if there is a function from $G$ to $B$ then the set $G$ itself meets our condition for being the product, because it is connected to $B$ and to itself. And there can be many other such objects.
![Product, external diagram](product_candidates.svg)
So how do we set apart the true product from all those "imposter" products? Simple - by using the observation that *they all can be converted to it*, This observation is true, because:
1. By definition, each "impostor" can be converted to both elements of the pair.
2. The pair is nothing more than the sum of its elements.
So how do we set apart the true product from all those "impostor" products? Simple - by using the observation that *they all can be converted to it*, This observation is true, because. The pair is nothing more than the sum of its elements. And you can always have a function that converts a more complex structure, to a simpler one (we saw an example of this when we covered the functions that convert subsets to their supersets).
More formally, in order for a set **I** to serve as an impostor for the product of **B** and **Y**, there should be two functions, which we will call **b: I → B** and **y: I → Y**. In order to prove that **I** is an impostor we need a function **I → B x Y**. That function is simply (programmers will understand this best) **(a) → b(a) x y(a)** for each **a:I**.
More formally, if we suppose that there is a set $I$ that can serve as an impostor product of sets $B$ and $Y$ i.e. that $I$ is such that there exist two functions, which we will call $b: I → B$ and $y: I → Y$ that allow us to derive elements $B$ and $Y$ from it, then there must also exist a function with the type signature $I → B \times Y$ that converts the impostor from the true product. We can be sure that this function exists because $I$ (being an impostor) would contain some extra information other than the information contained in the true pair. So given we have functions $b: I → B$ and $y: I → Y$ that function would be $(i) → b(i) \times y(i)$ for each element $i:I$.
Therefore, we can define the product of $B$ and $Y$ as a set that has functions for deriving $B$ and $Y$, but, more importantly, all other sets that have such functions can be converted to it. The second requirement would mean that
![Product, external diagram](products_morphisms.svg)
In category theory, this type of property that a given object might posess (participating in a structure such that all similar objects can be converted to/from it) is called a *universal property*.
Notice that this definition does not rule out the sets which are isomorphic to the product - when we represents things using universal properties, an isomorphism is the same as equality.
In category theory, this type of property that a given object might possess (participating in a structure such that all similar objects can be converted to/from it) is called a *universal property*. I don't want to go into more detail, as it is a bit early for that now (after all we haven't even defined what category theory is). One thing that I like to point out is that this definition (as, by the way, all the previous ones) does not rule out the sets which are isomorphic to the product - when we represents things using universal properties, an isomorphism is the same as equality.
Sums
===
We will now study a construct that is pretty similar to the product but at the same time is very different. Similar because, like the product, it is a relation between two sets which allows you to unite them into one without erasing their structure. Different because it encodes a different type of relation between them - a product encodes an **AND** relation between two sets, while the sum encodes an **OR** relation. For example, a parent is either a mother or a father of a child, so the set of parent's is a sum set of the sets of mothers and fathers.
We will now study a construct that is pretty similar to the product but at the same time is very different. Similar because, like the product, it is a relation between two sets which allows you to unite them into one, without erasing their structure. But different as it encodes a quite different type of relation - a product encodes an **AND** relation between two sets, while the sum encodes an **OR** relation.
A sum of two sets $B$ and $Y$, denoted $B + Y$ is a set that contains *all elements from the first set combined with all elements from the second one*.
![Sum or coproduct](coproduct.svg)
Notice that the when a given object is an element of both sets, then it appears in the sum twice. This is why this type of sum of two sets is also called a *disjoint union*.
We can immediately see the connection with the **OR** logical structure: For example, because a parent is either a mother or a father of a child, the set of all parents is the sum of the set of mothers and the set of fathers, or $P = M + F$.
**Question:** Why is this called a sum?
Defining Sums in Terms of Sets
---
Simply put, a sum of two sets is a set that contains all elements from the first set and all elements from the second one. But, as with the product, it is not so straightforward to represent sums in terms of sets. For example, if two sets can have the same element as a member, their sum will have that element twice which is not permitted, because a set cannot contain the same element twice.
As with the product, the solution is to put some extra structure.
As with the product, representing sums in terms of sets is not so straightforward. This time the complication comes from the fact that when a given object is an element of both sets, then it appears in the sum twice. This is why this type of sum of two sets is also called a *disjoint union*. Because of this, if two sets can have the same element as a member, then their sum will have that element twice which is not permitted, because a set cannot contain the same element twice. As with the product, the solution is to put some extra structure.
![A member of a coproduct](coproduct_member.svg)
Like with the product, there is a low-level way to express a sum using sets alone. Incidentally, we can use pairs.
And as with the product, there is a low-level way to express a sum using sets alone. Incidentally, we can use pairs.
![A member of a coproduct, examined](coproduct_member_set.svg)
But again, this distinction is only relevant only when the two sets have common elements.
But again, this distinction is only relevant only when the two sets have common elements. If they don't then just uniting the two sets is sufficient to represent their sum.
Defining Sums in Terms of Functions
Defining sums in terms of functions
---
You might already suspect, the interesting part is expressing the sum of two sets using functions. To do that we have to go back to the conceptual part of the definition. We said that sums express an **OR** relation between two things. A simple property of every **OR** relation is that if something is an **A** that something is also an **A OR B** (and the same is valid if it is **B**). For example, if I am *a man*, I am also *a man OR a woman*. This is what **OR** means, right?
As you might already suspect, the interesting part is expressing the sum of two sets using functions. To do that we have to go back to the conceptual part of the definition. We said that sums express an **OR** relation between two things.
This relationship can be expressed as a function. Two functions actually - one for each set that takes part in the relation.
A property of every **OR** relation is that if something is an $A$ that something is also an $A \vee B$ , and same for $B$ (The $\vee$ symbol means **OR**, by the way). For example, if my hair is *brown*, then my hair is also *either blond or brown*. This is what **OR** means, right? This property can be expressed as a function, two functions actually - one for each set that takes part in the sum relation (for example, if parents are either mothers or fathers, then there surely exist functions $mothers → parents$ and $fathers → parents$.)
![Coproduct, external diagram](coproduct_external.svg)
Why can it be expressed as a function? Because it is a *many-to-one* relationship.
What are we saying with this, if we apply it to the example, is simply that if parents are either mothers or fathers, then there surely exist a functions **mothers → parents** and **fathers → parents**.
You might already notice that this definition is pretty similar to the previous one, and the similarities don't end here - here again we have sets that can be thought of as *impostor* sums - ones for which these functions exists, but which aren't real sums (where by "real sum" we mean a set which expresses the *OR* relation and contains no additional structure).
As you might have already noticed, this definition is pretty similar to the definition of the product from the previous section. And the similarities don't end here. As with products, we have sets that can be thought of as *impostor* sums - ones for which these functions exist, but which also contain additional information.
![Coproduct, external diagram](coproduct_candidates.svg)
All these sets express relationships which are more vague than the simple sum, and therefore given any such set, there would exist a function from the sum to it.
For example, there exist a trivial function between the set **Y \| B** and the set **Y \| B \| R**.
All these sets express relationships which are more vague than the simple sum, and therefore given such a set (an "impostor" set as we called it earlier), there would exist a function that would distinguish it from the true sum. The only difference is that, unlike with the products, this time this function goes *from the sum* to the impostor.
![Coproduct, external diagram](coproduct_morphisms.svg)
This diagram captures the **OR** relation in the same way as the previous one captures the essence of **AND**.
Duality
Categorical Duality
===
If we compare the concepts of *sum* and *product*, we will find out that they are related:
The concepts of product and sum might already look similar in a way when we view them through their internal diagrams, but once we zoom out to the external view, and we draw the two concepts external diagrams, this similarity is quickly made precise.
- The *product* of two sets is related to an element of the first one *and* one element of the second one.
- A *sum* of two sets is related to an element of the first one *or* one element of the second one.
Actually, the two concepts are captured by one and the same external diagram, just the arrows are flipped - many-to-one relationships become one-to-many and the other way around (that's normal right? After all, **AND** *is* the opposite of **OR**).
The connection between the two has always been there, evidenced, for example, by the De Morgan's law, citing that **NOT (A AND B) ↔ (NOT A) OR (NOT B)** (or to put it in everyday language, "If either A or B is false, then (and only then) A *and* B is also false). But only with category theory, this connection can be expressed in such a concise way:
I use "diagrams" in plural, but actually the two concepts are captured *by one and the same diagram*, the only difference between the two being that their arrows are flipped - many-to-one relationships become one-to-many and the other way around.
![Coproduct and product](coproduct_product_duality.svg)
Otherwise, when in category theory two concepts are captured by the same diagram, only with reversed arrows, we can say that the two concepts are **dual** to each other. That means that the concepts of *product* and *sum* are dual. (This is why sum is also known as *converse product*, or *coproduct* in short.)
The universal properties that define the two construct are the same as well - if we have a sum $Y + B$, for each impostor sum, such as $Y + B + R$, there exist a trivial function $Y + B \to Y + B + R$.
And, if you remember, with product the arrows go the other way around - the equivalent example for product would be the function $Y \times B \times R \to Y \times B $
This fact uncovers a deep connection between the concepts of the *product* and *sum*, which is not otherwise apparent - they are each other's opposites - *product* is the opposite of *sum* and *sum* is the opposite of *product*.
In category theory, concepts that have such a relationship are said to be *dual* to each other. So the the concepts of *product* and *sum* are dual. This is why sum is known in a category-theoretic setting as *converse product*, or *coproduct* for short. This naming convention is used for all dual constructs in category theory.
{% if site.distribution == 'print'%}
Interlude - De Morgan duality
===
Now let's look at how the concepts of product and sum from the viewpoint of *logic*. We mentioned that:
- The *product* of two sets contains an element of the first one **AND** one element of the second one.
- A *sum* of two sets contains an element of the first one **OR** one element of the second one.
When we view those sets as propositions, we discover the concept of the *product* ($\times$) corresponds exactly to the **AND** relation in logic (denoted $\land$.) From this viewpoint, the function $Y \times B \to Y$ can be viewed as instance of a logical rule of inference called *conjunction elimination* (also called *simplification*) stating that, $Y \land B \to Y$, for example, if your hair is partly blond and partly brown, then it is partly blond.
By the same token, the concept of a *sum* ($+$) corresponds the **OR** relation in logic (denoted $\lor$.) From this viewpoint, the function $Y \to Y + B$ can be viewed as instance of a logical rule of inference called *disjunction introduction*, stating that, $Y \to Y \lor B$ for example, if your hair is blond, it is either blond or brown.
This means, among other things, that the concepts of **AND** and **OR** are also dual - an idea which was put forward in the 19th century by the mathematician Augustus De Morgan and is henceforth known as *De Morgan duality*, and which is a predecessor to the modern idea of duality in category theory, that we examined before.
This duality is subtly encoded in the logical symbols for **AND** and **OR** ($\land$ and $\lor$) - they are nothing but stylized-versions of the diagrams of products and coproducts.
![Coproduct and product](demorgan_duality.svg)
To understand, the connection, consider the two formulas which are most often associated with De Morgan which are known as De Morgan laws, although De Morgan didn't actually discover those (they were previously formulated, by William of Ockham (of "Ockham's razor" fame) among other people.
$\neg(A \wedge B) = \neg{A} \vee \neg{B}$
$\neg(A \vee B) = \neg{A} \wedge \neg{B}$
You can read the second formula as, for example, if my hair is not blond *or* brown, this means that my hair is not blond *and* my hair is not brown, and vice versa (the connection work both ways)
Now we will go through the formulas and we would try to show that they are actually a simple corollary of the duality between **AND** and **OR**.
Let's say we want to find the statement that is opposite of "blond *or* brown".
$A \vee B$
The first thing we want to do is, to replace the statements that constitute it with their opposites, which would make the statement "not blond *or* not brown"
$\neg{A} \vee \neg{B}$
However, this statement is clearly not the opposite of "blond *or* brown"(saying that my hair is not blond *or* not brown does in fact allow it to be blond and also allows for it to be brown, it just doesn't allow it to be both of these things.)
So what have we missed? Simple - although we replaced the propositions that constitute our proposition with their opposites, we didn't replace the operator that connects them - it is still **OR** for both propositions. So we must replace it with **OR**'s converse. As we said earlier, and as you can see by analyzing this example, this operator is **AND**. So the formula becomes "not blond *and* not brown".
$\neg{A} \wedge \neg{B}$
Saying that this formula is the opposite or "blond and brown" - is the same thing as saying that it is equivalent to it's negation, which is precisely what the second De Morgan formula says.
$\neg(A \vee B) = \neg{A} \wedge \neg{B}$
And if we "flip" this whole formula (we can do that without changing the signs of the individual propositions, as it is valid for all propositions) we get the first formula.
$\neg(A \wedge B) = \neg{A} \vee \neg{B}$
This probably provokes a lot of questions, but I won't get into more detail here, as we have a whole chapter on logic. But before we get to it, we have to see what categories are.
{% endif %}
Category Theory - brief definition
===
Maybe it is time to see what a category is. Well, a category consists of objects (an example of which are sets) and morphisms which go from one object to another (which can be viewed as functions) and which should be composable. We can say a lot more about categories, and even present a formal definition, but for now it is sufficient for you to remember that sets are one example of a category and that categorical objects are like sets, except that we don't *see* their elements. This is why category-theoretic notions are captured by the external diagrams, and strictly set-theoretic notions are captured by internal ones.
Maybe it is about time to see what a category is. We will start with a short definition - a category consists of objects (an example of which are sets) and morphisms that go from one object to another (which can be viewed as functions) and that should be composable. We can say a lot more about categories, and even present a formal definition, but for now it is sufficient for you to remember that sets are one example of a category and that categorical objects are like sets, except that we don't *see* their elements. Or to put it another way, category-theoretic notions are captured by the external diagrams, while strictly set-theoretic notions can be captured by internal ones.
What other categories, or applications of category theory are there, other than sets? We already discussed one - types in programming languages. Remember that we said that programming types (classes) are somewhat similar to sets, and programming functions are somewhat similar to functions between sets? This is another example of a connection between two things that can be defined using category theory:
![Category theory and set theory compared](set_category.svg)
When we are at the realm of sets we can view the set as a collection of individual elements. In category theory we don't have such notion, but we saw how taking this notion away allows us to define concepts such as the sum and product sets in a whole different and more general way.
Still why would we want to restrict ourselves from looking at the individual elements? It is because, in this way we can relate this viewpoint to objects other than sets. We already discussed one such object - types in programming languages. Remember that we said that programming types (classes) are somewhat similar to sets, and programming methods are somewhat similar to functions between sets, but they are not exactly identical? A formal connection between the two can be made via category theory.
| Category Theory | Set theory | Programming Languages |
| --- | --- | --- |
| Category | N/A | N/A |
| Objects and Morphisms | Sets and Functions | Classes and functions |
| Objects and Morphisms | Sets and Functions | Classes and methods |
| N/A | Element | Object |
This table illustrates how category theory allows us to see the big picture when it comes to sets and similar structures - when we are at the realm of sets we can view the set as a collection of individual elements. In category theory we don't have such notion, but we saw how taking this notion away allows us to define concepts such as the sum and product sets in a whole different and more general way.
**NB: Do note how the word "Object" is used in both programming languages and in category theory, but for completely different things. The equivalent a categorical object is equivalent to a class in programming language.**
Looking at the table I cannot help but notice the somehow weird, but otherwise completely logical, symmetry (or perhaps "reverse symmetry") between the world as viewed through the lenses of set theory, and the way it is viewed through the (inverted) lens of category theory:
Category theory allows us to see the big picture when it comes to sets and similar structures - looking at the table, we cannot help but notice the somehow weird, (but actually completely logical) symmetry (or perhaps "reverse symmetry") between the world as viewed through the lenses of set theory, and the way it is viewed through the lens of category theory:
| Category Theory | Set theory |
| --- | --- |
@ -199,18 +267,21 @@ Looking at the table I cannot help but notice the somehow weird, but otherwise c
By switching to external diagrams, we lose sight of the particular (the elements of our sets), but we have gained the ability to see the whole universe that we have been previously trapped in. Just as the whole realm of sets can be thought as one category, a programming language can also be thought as a category. The concept of a category allows us to find and analyze similarities between these and other structures.
![Category theory and set theory compared](set_category.svg)
**NB:** The word "Object" is used in both programming languages and in category theory, but for completely different things. The equivalent a categorical object is equivalent to a *type* or a *class* in programming language theory.
One remark before we go: in the last paragraphs I sound as if I'm *comparing* categories and sets and rooting for categories. I don't want you to get the wrong impression that the two concepts are somehow competing with one another.
Sets VS Categories
---
Perhaps that notion would be somewhat correct if category and set theory were meant to describe *concrete* phenomena, in the way that the theory of relativity and the theory of quantum mechanics in physics. Concrete theories are conceived mainly as *descriptions* of the world, and as such it makes sense for them to be connected to one another in some sort of hierarchy. Abstract theories, like category theory and set theory, on the other hand, are more like languages for expressing such descriptions. They still can be connected, and are connected in more than one way, but there is no inherent hierarchy between the two and therefore arguing over which of the two is more basic, or more general, is just a chicken-and-egg problem, as you would see in the next chapter.
One remark before we go: in the last paragraphs I sound as if I'm *comparing* categories and sets (and rooting for categories, in order to get more copies of my book sold) and I don't want you to get the wrong impression that the two concepts are somehow competing with one another. Perhaps that notion would be somewhat correct if category and set theory were meant to describe *concrete* phenomena, in the way that the theory of relativity and the theory of quantum mechanics in physics. Concrete theories are conceived mainly as *descriptions* of the world, and as such it makes sense for them to be connected to one another in some sort of hierarchy. Abstract theories, like category theory and set theory, on the other hand, are more like languages for expressing such descriptions - they still can be connected, and are connected in more than one way, but there is no inherent hierarchy between the two and therefore arguing over which of the two is more basic, or more general, is just a chicken-and-egg problem, as you would see in the next chapter.
Defining Categories (again)
===
Every category theory guide (including mine) starts by talking about set theory, however looking back I really don't know why that is the case - most books that focus around a given subject don't start by introducing an entirely different subject. Perhaps the set-first approach is the best way to introduce people to categories. Or perhaps using sets to introduce categories is just one of the things that people just do because everyone else does it. But one thing is for sure - we don't need to study sets in order to understand categories. So now I would like to start over and talk about categories as a first concept. So pretend like it's a new book.
All category theory books (including this one) starts by talking about set theory. However looking back I really don't know why that is the case - most books that focus around a given subject don't usually start off by introducing an *entirely different subject* before even starting to talk about the main one, even if the two subjects are so related.
So, a category is a collection of objects (things) where the "things" can be anything you want. Consider, for example, these ~~colorful~~ gray balls:
Perhaps the set-first approach *is* the best way to introduce people to categories. Or perhaps using sets to introduce categories is just one of those things that people do because everyone else does it. But one thing is for certain - we don't need to study sets in order to understand categories. So now I would like to start over and talk about categories as a first concept. So pretend like it's a new book (I wonder if I can dedicate this to a different person.)
So. A category is a collection of objects (things) where the "things" can be anything you want. Consider, for example, these ~~colorful~~ gray balls:
![Balls](elements.svg)
@ -220,110 +291,91 @@ A category consists of a collection of objects as well as some arrows connecting
Wait a minute - we said that all sets form a category, but at the same time any one set can be seen as a category on its own right (just one which has no morphisms). This is true and an example of a phenomenon that is very characteristic of category theory - one structure can be examined from many different angles and may play many different roles, often in a recursive fashion.
This particular analogy (a set as a category with no morphisms) is, however, not very useful. Not because it's in any way incorrect, but because category theory is *all about the morphisms*. If in set theory arrows are nothing but a connection between a source and a destination, in category theory it's the *objects* that are nothing but a source and destination for the arrows that connect them to other objects. This is why, in the diagram above, the arrows, and not the objects, are colored: the category of sets should really be called the category of set functions.
This particular analogy (a set as a category with no morphisms) is, however, not very useful. Not because it's in any way incorrect, but because category theory is *all about the morphisms*. If in set theory arrows are nothing but a connection between a source and a destination, in category theory it's the *objects* that are nothing but a source and destination for the arrows that connect them to other objects. This is why, in the diagram above, the arrows, and not the objects, are colored: if you ask me, the category of sets should really be called *the category of functions*.
Speaking of which, note that objects in a category can be connected by multiple arrows and that arrows having the same source and target sets does not in any way make them equivalent (it does not actually mean that they would produce the same value).
![Two objects connected with multiple arrows](arrows.svg)
Why that is true is pretty obvious if we go back to set theory for a second. (OK, maybe we really *have* to do this from time to time.) There are, for example, an infinite number of functions that go from number to boolean, and the fact that they have the same input type and the same output type (or the same *type signature*, as we like to say) does not in any way make them equivalent to one another.
Why that is true is pretty obvious if we go back to set theory for a second. (OK, maybe we really *have* to do it from time to time.) There are, for example, an infinite number of functions that go from number to boolean, and the fact that they have the same input type and the same output type (or the same *type signature*, as we like to say) does not in any way make them equivalent to one another.
![Two sets connected with multiple functions](set_arrows.svg)
There are some types of categories in which only one morphism between two objects is allowed (or one in each direction), but we will talk about them later (they are also called orders).
There are some types of categories in which only one morphism between two objects is allowed (or one in each direction), but we will talk about them later.
Composition
---
One of the few or maybe even the only requirement for a structure to be called a category is that two morphisms can make a third, or in other words that morphisms are *composable* - given two successive arrows with appropriate type signature, we can draw a third one that is equivalent to the consecutive application of the other two.
One of the few or maybe even the only requirement for a structure to be called a category is that *two morphisms can make a third*, or in other words, that morphisms are *composable* - given two successive arrows with appropriate type signature, we can draw a third one that is equivalent to the consecutive application of the other two.
![Composition of morphisms](composition.svg)
Formally, this requirement says that there should exist an operation (denoted with the symbol **•**) such that for each two functions **g: A → B** and **f: B → C**, there exists exactly one function **(f • g): A → C**.
**NB:** Note that functional composition is written from right to left. e.g. applying **g** and then applying **f** is written **f • g** and not the other way around. (You can think of it as a shortcut to **f(g(a))**.)
Again, note that this criteria is not met by just *any* morphism with this type signature. There is *exactly one* morphism that fits these criteria, and there may be some which don't.
Formally, this requirement says that there should exist an operation (denoted with the symbol $•$) such that for each two functions $g: A → B$ and $f: B → C$, there exists exactly one function $(f • g): A → C$. Again, note that this criteria is not met by just *any* morphism with this type signature. There is *exactly one* morphism that fits these criteria, and there may be some which don't.
![Composition of morphisms in the context of additional morphism](composition_arrows.svg)
**NB:** Note (if you haven't already) that functional composition is written from right to left. e.g. applying $g$ and then applying $f$ is written $f • g$ and not the other way around. (You can think of it as a shortcut to $f(g(a))$.)
Commuting diagrams
---
The diagram above, uses colors to illustrate the fact that the green morphism is equivalent to the other two (and not just some unrelated morphism), but in practice this notation is a little redundant - the only reason to draw diagrams with arrows in the first place is represent paths between objects that are equivalent to each other, all other paths just belong in different diagrams. For this reason, we can drop the colors from our diagrams.
The diagram above, uses colors to illustrate the fact that the green morphism is equivalent to the other two (and not just some unrelated morphism), but in practice this notation is a little redundant - the only reason to draw diagrams in the first place is to represent paths that are equivalent to each other - all other paths just belong in different diagrams.
![Composition of morphisms - a commuting diagram](composition_commuting_diagram.svg)
Diagrams that are like that (ones in which any two paths between two objects are equivalent to one another) are called *commutative diagrams* (or diagrams that *commute*). All diagrams that we have here (except the wrong ones) commute.
Diagrams that are like that (ones in which any two paths between two objects are equivalent to one another) are called *commutative diagrams* (or diagrams that *commute*). All diagrams in this book (except the wrong ones) commute.
The law of associativity
---
Functional composition is special not only because you can take any two morphisms with appropriate signatures and make a third, but because you can do so indefinitely, i.e. given **n** successive arrows, each of which starts from the object that the other one finishes, we can draw one (exactly one) arrow that is equivalent to the consecutive application of all **n** arrows.
Functional composition is special not only because you can take any two morphisms with appropriate signatures and make a third, but because you can do so indefinitely, i.e. given $n$ successive arrows, each of which starts from the object that the other one finishes, we can draw one (exactly one) arrow that is equivalent to the consecutive application of all $n$ arrows.
![Composition of morphisms with many objects](composition_n_objects.svg)
This approach for building stuff is often used in programming. To see some examples, you don't need to look further than the way the pipe operator in bash (`|`), that feeds the standard output of a program with the standard input of another program, is (ab)used. (If you *want* to look further, note that there is a whole programming paradigm based on functional composition, called "concatenative programming".)
But let's get back to the math. If we carefully review the definition above, we can see that it can be reduced to multiple applications of the following formula: given 4 objects and 3 morphisms between them $f$ $g$ $h$, combining $h$ and $g$ and then combining the end result with $f$ should be the same as combining $h$ to the result of $g$ and $f$ (or simply $(h • g) • f = h • (g • f)$).
But let's get back to the math. If we carefully review the definition above, we can see that it can be reduced to multiple applications of the following formula: given 4 objects and 3 morphisms between them **f** **g** **h**, combining **h** and **g** and then combining the end result with **f** should be the same as combining **h** to the result of **g** and **f** (or simply **(h • g) • f = h • (g • f)**).
**Task:** show how the definition can be reduced to the formula. (The approach resembles mathematical induction.)
This formula is true if and only if this diagram commutes.
This formula can be expressed using the following diagram, which would only commute if the formula is true (given that all our category-theoretic diagrams commute, we can say, in such cases, that the formula and the diagram are equivalent.)
![Composition of morphisms with many objects](composition_associativity.svg)
Given that all our category-theoretic diagrams commute, we can say, in such cases, that the formula and the diagram are equivalent.
This formula (and the diagram) is the definition of a property called $associativity$. Being associative is required for functional composition to really be called functional composition (and for a category to really be called category). It is also required for our diagrams to work, as diagrams can only represent associative structures (imagine if the diagram above does not commute - it would be super weird.)
This formula (and the diagram) is the definition of a property called **associativity**. Being associative is required for functional composition to really be called functional composition (and for a category to really be called category). It is also required for our diagrams to work, as diagrams can only represent associative structures. (Imagine if the diagram above does not commute - it would be super weird.)
Associativity is not just about diagrams. For example, when we express relations using formulas, associativity just means that brackets don't matter in our formulas (as evidenced by the definition $(h • g) • f = h • (g • f)$).
Associativity is not just about diagrams. For example when we express relations using formulas, associativity just means that brackets don't matter in our formulas (as evidenced by the definition **(h • g) • f = h • (g • f)**).
And it is not only about categories either, it is a property of many other operations on other types of objects as well e.g. if we look at numbers, we can see that the multiplication operation is associative e.g. $(1 \times 2) \times 3 = 1 \times (2 \times 3)$. While division is not $(1 / 2) / 3 = 1 / (2 / 3)$.
And it is not only about categories either, it is a property of many other operations on other types of objects as well e.g. if we look at numbers, we can see that the multiplication operation is associative e.g. **(1 . 2) . 3 = 1 . (2 . 3)**. While division is not **(1 / 2) / 3 = 1 / (2 / 3)**.
This approach (composing indefinitely many things) for building stuff is often used in programming. To see some examples, you don't need to look further than the way the pipe operator in Unix (`|`), which feeds the standard output of a program with the standard input of another program, is (ab)used. If you *want* to look further, note that there is a whole programming paradigm based on functional composition, called "concatenative programming".
Identity
---
Ancient mathematicians invented the number zero that, although useless by itself, allowed them to define many useful numbers. In order to be able to define more stuff using morphisms in category theory, we too would want to define zero, or what we call the "identity morphism" for each object. In short, this is a morphism, that doesn't do anything.
Before the standard Arabic numerals that we use today, there were Roman numbers. They were no good, for the simple reason that they lacked the concept of *zero* - a number that indicated the absence of number. Any number system that lacks this simple concept is extremely limited. It is the same in programming, where we have multiple values that indicate the absence of a value and it is the same in category theory - in order to be able to define more stuff using morphisms in category theory, we too would want to define zero, or what we call the "identity morphism" for each object. In short, this is a morphism, that doesn't do anything.
![The identity morphism (but can also be any other morphism)](identity.svg)
It's important to mark this morphism, because there can be (let's add the very important (and also very boring) reminder) many morphisms that go from one object to the same object, many of which actually do stuff. For example, mathematics deals with a multitude of functions that have the set of numbers as source and target, such as **negate**, **square**, **add one**, and are not at all the identity morphism.
It's important to mark this morphism, because there can be (let's add the very important (and also very boring) reminder) many morphisms that go from one object to the same object, many of which actually do stuff. For example, mathematics deals with a multitude of functions that have the set of numbers as source and target, such as $negate$, $square$, $add one$, and are not at all the identity morphism.
**Question:** What is the identity morphism in the category of sets?
Isomorphisms
Isomorphism
---
Why do we need to define a morphism that does nothing? It's because morphisms are the basic building blocks of our language, and we need this one to be able to speak properly. For example, once we have the concept of identity morphism defined, we can have a category-theoretic definition of an *isomorphism* (which is important, because the concept of an isomorphism is very important for category theory): An isomorphism between two objects (**A** and **B**) consists of two morphisms - (**A → B**. and **B → A**) such that their compositions are equivalent to the identity functions of the respective objects.
Here is how this looks when expressed using a formulas:
Objects **A** and **B** are isomorphic
iff there exist morphisms
**f: A → B**
**g: B → A**
such that
**f • g = id B**
and
**g • f = id A**
Why do we need to define a morphism that does nothing? It's because morphisms are the basic building blocks of our language, and we need this one to be able to speak properly. For example, once we have the concept of identity morphism defined, we can have a category-theoretic definition of an *isomorphism* (which is important, because the concept of an isomorphism is very important for category theory). Like we said in the previous chapter, an isomorphism between two objects ($A$ and $B$) consists of two morphisms - ($A → B$. and $B → A$) such that their compositions are equivalent to the identity functions of the respective objects. Formally, objects $A$ and $B$ are isomorphic if there exist morphisms $f: A → B$ and $g: B → A$ such that $f \bullet g = id B$ and $g \bullet f = id A$.
And here is the same thing expressed with a commuting diagram.
![Isomorphism](isomorphism.svg)
Like the example with the law of associativity, the diagram expresses the same (simple) fact as the formula, namely that going from the one of objects (**A** and **B**) to the other one and then back again is the same as applying the identity morphism i.e. doing nothing.
Like the example with the law of associativity, the diagram expresses the same (simple) fact as the formula, namely that going from the one of objects ($A$ and $B$) to the other one and then back again is the same as applying the identity morphism i.e. doing nothing.
A summary
---
For future reference, let's repeat what a category is.
For future reference, let's restate what a category is.
A category is a collection of **objects** (we can think of them as points) and **morphisms** (arrows) that go from one object to another, where:
1. Each object has to have the identity mophism.
2. There should be a way to compose two morphisms with an appropriate type signature into a third one in a way that is associative.
A category is a collection of *objects* (we can think of them as *points*) and *morphisms* ( or *arrows*) that go from one object to another, where:
1. Each object has to have the identity morphism.
2. There should be a way to compose two morphisms with an appropriate type signature into a third one in a way that is *associative*.
This is it.

View File

@ -0,0 +1,531 @@
<?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 300"
version="1.1"
id="svg3397"
sodipodi:docname="coordinates.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
width="595.29999"
height="300">
<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="2560"
inkscape:window-height="1376"
id="namedview3399"
showgrid="false"
inkscape:zoom="1.4142136"
inkscape:cx="324.58047"
inkscape:cy="112.36951"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg3397"
inkscape:document-rotation="0" />
<g
transform="matrix(0.49503815,0,0,0.49503815,140.7937,194.61064)"
style="fill:#c6e9af;stroke:#666666"
id="g2749-48">
<path
inkscape:connector-curvature="0"
id="circle3369-0"
d="m 80.040796,90.58149 a 24.6,24.6 0 0 1 -24.6,24.6 24.6,24.6 0 0 1 -24.6,-24.6 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
style="opacity:0.12999998;fill:#c6e9af;stroke:#666666;stroke-width:6;stroke-miterlimit:10" />
<path
inkscape:connector-curvature="0"
id="circle3383-81"
d="m 76.107595,84.367409 a 24.6,24.6 0 0 1 -24.6,24.600001 24.6,24.6 0 0 1 -24.6,-24.600001 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
style="fill:#c6e9af;stroke:#666666;stroke-width:6;stroke-miterlimit:10" />
</g>
<g
id="text2753-0"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
transform="matrix(0.50606963,0,0,0.48424714,140.65236,194.468)"
aria-label="1">
<path
inkscape:connector-curvature="0"
id="path130720-2"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
d="m 44.272152,92.213257 h 4.738584 V 78.764041 l -4.864017,1.003465 v -3.651497 l 4.836143,-1.003465 h 5.100946 v 17.100713 h 4.738584 v 3.707245 h -14.55024 z" />
</g>
<g
transform="matrix(0.49503815,0,0,0.49503815,141.7567,153.30399)"
style="fill:#c6e9af;stroke:#666666"
id="g2749-4-9">
<path
inkscape:connector-curvature="0"
id="circle3369-5-7"
d="m 80.040796,90.58149 a 24.6,24.6 0 0 1 -24.6,24.6 24.6,24.6 0 0 1 -24.6,-24.6 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
style="opacity:0.12999998;fill:#c6e9af;stroke:#666666;stroke-width:6;stroke-miterlimit:10" />
<path
inkscape:connector-curvature="0"
id="circle3383-6-5"
d="m 76.107595,84.367409 a 24.6,24.6 0 0 1 -24.6,24.600001 24.6,24.6 0 0 1 -24.6,-24.600001 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
style="fill:#c6e9af;stroke:#666666;stroke-width:6;stroke-miterlimit:10" />
</g>
<g
id="text2753-2-6"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
transform="matrix(0.50606963,0,0,0.48424714,141.61537,153.16135)"
aria-label="2">
<path
inkscape:connector-curvature="0"
id="path130728-4"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
d="m 49.150106,91.976327 h 9.156616 v 3.944175 H 43.185065 v -3.944175 l 7.595671,-6.703702 q 1.017402,-0.919843 1.505197,-1.797874 0.487796,-0.878032 0.487796,-1.825749 0,-1.463386 -0.989528,-2.355355 -0.975591,-0.891969 -2.606221,-0.891969 -1.254331,0 -2.745592,0.543544 -1.49126,0.529606 -3.191575,1.588819 v -4.57134 q 1.811811,-0.599291 3.581812,-0.905905 1.77,-0.320552 3.470316,-0.320552 3.735119,0 5.797796,1.644568 2.076615,1.644567 2.076615,4.585277 0,1.700315 -0.878032,3.177638 -0.878031,1.463386 -3.693308,3.930237 z" />
</g>
<g
transform="matrix(0.49503815,0,0,0.49503815,141.87605,111.10537)"
style="fill:#c6e9af;stroke:#666666"
id="g2749-7-7">
<path
id="circle3369-7-9"
d="m 80.040796,90.58149 a 24.6,24.6 0 0 1 -24.6,24.6 24.6,24.6 0 0 1 -24.6,-24.6 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
style="opacity:0.12999998;fill:#c6e9af;stroke:#666666;stroke-width:6;stroke-miterlimit:10"
inkscape:connector-curvature="0" />
<path
id="circle3383-4-7"
d="m 76.107595,84.367409 a 24.6,24.6 0 0 1 -24.6,24.600001 24.6,24.6 0 0 1 -24.6,-24.600001 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
style="fill:#c6e9af;stroke:#666666;stroke-width:6;stroke-miterlimit:10"
inkscape:connector-curvature="0" />
</g>
<g
id="text2753-1-4"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
transform="matrix(0.50606963,0,0,0.48424714,141.73471,110.96272)"
aria-label="3">
<path
id="path130733-9"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
d="m 54.223178,84.701208 q 2.104489,0.543543 3.191575,1.895433 1.101024,1.337953 1.101024,3.414568 0,3.094016 -2.369292,4.71071 -2.369292,1.602756 -6.912757,1.602756 -1.602757,0 -3.21945,-0.264803 -1.602756,-0.250866 -3.177638,-0.766536 v -4.139292 q 1.505197,0.752598 2.98252,1.142835 1.49126,0.376299 2.926772,0.376299 2.132363,0 3.261261,-0.738662 1.142835,-0.738661 1.142835,-2.118425 0,-1.421575 -1.170709,-2.1463 -1.156772,-0.738662 -3.428505,-0.738662 h -2.1463 v -3.456378 h 2.257796 q 2.020867,0 3.010395,-0.627166 0.989528,-0.641102 0.989528,-1.937245 0,-1.198583 -0.961654,-1.853622 -0.961654,-0.65504 -2.717717,-0.65504 -1.296143,0 -2.620159,0.292678 -1.324016,0.292677 -2.634095,0.864094 v -3.930237 q 1.58882,-0.445984 3.149765,-0.668976 1.560945,-0.222993 3.066142,-0.222993 4.055671,0 6.0626,1.337954 2.020867,1.324016 2.020867,3.999922 0,1.825748 -0.961654,2.996457 -0.961654,1.156772 -2.84315,1.630631 z"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0.49503815,0,0,0.49503815,142.98113,67.337755)"
style="fill:#c6e9af;stroke:#666666"
id="g2749-8-0">
<path
id="circle3369-74-6"
d="m 80.040796,90.58149 a 24.6,24.6 0 0 1 -24.6,24.6 24.6,24.6 0 0 1 -24.6,-24.6 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
style="opacity:0.12999998;fill:#c6e9af;stroke:#666666;stroke-width:6;stroke-miterlimit:10"
inkscape:connector-curvature="0" />
<path
id="circle3383-9-0"
d="m 76.107595,84.367409 a 24.6,24.6 0 0 1 -24.6,24.600001 24.6,24.6 0 0 1 -24.6,-24.600001 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
style="fill:#c6e9af;stroke:#666666;stroke-width:6;stroke-miterlimit:10"
inkscape:connector-curvature="0" />
</g>
<g
id="text2753-3-8"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
transform="matrix(0.50606963,0,0,0.48424714,142.83979,67.195111)"
aria-label="4">
<path
id="path130738-5"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
d="m 51.435776,79.530576 -5.881419,8.710632 h 5.881419 z m -0.891969,-4.418032 h 5.965041 v 13.128664 h 2.968583 v 3.888427 h -2.968583 v 3.790867 h -5.073072 v -3.790867 h -9.226302 v -4.599214 z"
inkscape:connector-curvature="0" />
</g>
<path
style="opacity:0.12999998;fill:#cccccc;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 218.2084,279.68293 a 11.965828,11.965828 0 0 1 -11.96582,11.96583 11.965828,11.965828 0 0 1 -11.96584,-11.96583 11.965828,11.965828 0 0 1 11.96584,-11.96583 11.965828,11.965828 0 0 1 11.96582,11.96583 z"
id="circle3369"
inkscape:connector-curvature="0" />
<path
style="fill:#ffe6d5;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 216.29523,276.66031 a 11.965828,11.965828 0 0 1 -11.96583,11.96581 11.965828,11.965828 0 0 1 -11.96582,-11.96581 11.965828,11.965828 0 0 1 11.96582,-11.96584 11.965828,11.965828 0 0 1 11.96583,11.96584 z"
id="circle3383"
inkscape:connector-curvature="0" />
<path
d="m 201.15098,279.35875 h 2.35628 v -6.39932 l -2.41866,0.47747 v -1.73743 l 2.4048,-0.47746 h 2.53647 v 8.13674 h 2.35629 v 1.76395 h -7.23518 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.34709507"
id="path130720"
inkscape:connector-curvature="0" />
<path
style="opacity:0.12999998;fill:#cccccc;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 261.2035,280.37046 a 11.965828,11.965828 0 0 1 -11.96584,11.96583 11.965828,11.965828 0 0 1 -11.96581,-11.96583 11.965828,11.965828 0 0 1 11.96581,-11.96582 11.965828,11.965828 0 0 1 11.96584,11.96582 z"
id="circle3369-5"
inkscape:connector-curvature="0" />
<path
style="fill:#ffe6d5;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 259.29032,277.34784 a 11.965828,11.965828 0 0 1 -11.96582,11.96582 11.965828,11.965828 0 0 1 -11.96583,-11.96582 11.965828,11.965828 0 0 1 11.96583,-11.96583 11.965828,11.965828 0 0 1 11.96582,11.96583 z"
id="circle3383-6"
inkscape:connector-curvature="0" />
<path
d="m 246.57166,279.93354 h 4.55317 v 1.87669 h -7.51931 v -1.87669 l 3.77698,-3.18971 q 0.5059,-0.43766 0.74847,-0.85544 0.24255,-0.41778 0.24255,-0.86872 0,-0.6963 -0.49204,-1.12071 -0.48512,-0.42441 -1.29596,-0.42441 -0.62372,0 -1.36526,0.25863 -0.74154,0.25199 -1.58703,0.75597 v -2.1751 q 0.90093,-0.28514 1.78107,-0.43103 0.88014,-0.15253 1.72564,-0.15253 1.85731,0 2.88298,0.78251 1.03261,0.7825 1.03261,2.18174 0,0.80902 -0.43661,1.51195 -0.4366,0.6963 -1.83651,1.87006 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.34709507"
id="path130728"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="opacity:0.12999998;fill:#cccccc;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 304.04912,280.4069 a 11.965828,11.965828 0 0 1 -11.96583,11.96582 11.965828,11.965828 0 0 1 -11.96583,-11.96582 11.965828,11.965828 0 0 1 11.96583,-11.96583 11.965828,11.965828 0 0 1 11.96583,11.96583 z"
id="circle3369-7" />
<path
inkscape:connector-curvature="0"
style="fill:#ffe6d5;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 302.13595,277.38427 a 11.965828,11.965828 0 0 1 -11.96583,11.96582 11.965828,11.965828 0 0 1 -11.96582,-11.96582 11.965828,11.965828 0 0 1 11.96582,-11.96583 11.965828,11.965828 0 0 1 11.96583,11.96583 z"
id="circle3383-4" />
<g
id="text2753-1"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
transform="matrix(0.49725508,0,0,0.4758127,264.97714,236.20647)"
aria-label="3">
<path
id="path130733"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
d="m 54.223178,84.701208 q 2.104489,0.543543 3.191575,1.895433 1.101024,1.337953 1.101024,3.414568 0,3.094016 -2.369292,4.71071 -2.369292,1.602756 -6.912757,1.602756 -1.602757,0 -3.21945,-0.264803 -1.602756,-0.250866 -3.177638,-0.766536 v -4.139292 q 1.505197,0.752598 2.98252,1.142835 1.49126,0.376299 2.926772,0.376299 2.132363,0 3.261261,-0.738662 1.142835,-0.738661 1.142835,-2.118425 0,-1.421575 -1.170709,-2.1463 -1.156772,-0.738662 -3.428505,-0.738662 h -2.1463 v -3.456378 h 2.257796 q 2.020867,0 3.010395,-0.627166 0.989528,-0.641102 0.989528,-1.937245 0,-1.198583 -0.961654,-1.853622 -0.961654,-0.65504 -2.717717,-0.65504 -1.296143,0 -2.620159,0.292678 -1.324016,0.292677 -2.634095,0.864094 v -3.930237 q 1.58882,-0.445984 3.149765,-0.668976 1.560945,-0.222993 3.066142,-0.222993 4.055671,0 6.0626,1.337954 2.020867,1.324016 2.020867,3.999922 0,1.825748 -0.961654,2.996457 -0.961654,1.156772 -2.84315,1.630631 z"
inkscape:connector-curvature="0" />
</g>
<path
inkscape:connector-curvature="0"
style="opacity:0.12999998;fill:#cccccc;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 344.99031,282.7284 a 11.965828,11.965828 0 0 1 -11.96584,11.96584 11.965828,11.965828 0 0 1 -11.96582,-11.96584 11.965828,11.965828 0 0 1 11.96582,-11.96582 11.965828,11.965828 0 0 1 11.96584,11.96582 z"
id="circle3369-74" />
<path
inkscape:connector-curvature="0"
style="fill:#ffe6d5;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 343.07713,277.70578 a 11.965828,11.965828 0 0 1 -11.96583,11.96583 11.965828,11.965828 0 0 1 -11.96582,-11.96583 11.965828,11.965828 0 0 1 11.96582,-11.96583 11.965828,11.965828 0 0 1 11.96583,11.96583 z"
id="circle3383-9" />
<g
id="text2753-3"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
transform="matrix(0.49725508,0,0,0.4758127,305.91832,236.52798)"
aria-label="4">
<path
id="path130738"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
d="m 51.435776,79.530576 -5.881419,8.710632 h 5.881419 z m -0.891969,-4.418032 h 5.965041 v 13.128664 h 2.968583 v 3.888427 h -2.968583 v 3.790867 h -5.073072 v -3.790867 h -9.226302 v -4.599214 z"
inkscape:connector-curvature="0" />
</g>
<g
id="g2760-5"
transform="matrix(0.48641575,0,0,0.48641575,141.35015,239.94054)">
<g
id="g2749-5"
style="fill:#ececec;stroke:#666666"
transform="translate(-3.3630029,-9.4412283)">
<path
style="opacity:0.12999998;fill:#ececec;stroke:#666666;stroke-width:6;stroke-miterlimit:10"
d="m 80.040796,90.58149 a 24.6,24.6 0 0 1 -24.6,24.6 24.6,24.6 0 0 1 -24.6,-24.6 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
id="circle3369-4"
inkscape:connector-curvature="0" />
<path
style="fill:#ececec;stroke:#666666;stroke-width:6;stroke-miterlimit:10"
d="m 76.107595,84.367409 a 24.6,24.6 0 0 1 -24.6,24.600001 24.6,24.6 0 0 1 -24.6,-24.600001 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
id="circle3383-98"
inkscape:connector-curvature="0" />
</g>
<text
id="text73945"
y="86.54644"
x="36.733299"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:54.46308517px;line-height:1.25;font-family:'HVD Comic Serif Pro';-inkscape-font-specification:'HVD Comic Serif Pro';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.36157715"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:32.67784882px;line-height:0;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:1.36157715"
y="86.54644"
x="36.733299"
id="tspan73943"
sodipodi:role="line">0</tspan></text>
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-5-5-8"
transform="matrix(-0.13755289,-0.01891123,-0.03611826,0.19070053,234.33304,-6.0646238)">
<path
style="stroke-width:33.2503624"
inkscape:connector-curvature="0"
id="path1478-7-9-6-1-9"
d="m 259.38952,227.69252 c 10.74597,-3.57306 21.8601,-6.66839 33.22317,-9.52335 -7.9007,-7.33149 -16.34907,-14.42988 -25.34588,-21.29783 -2.7143,10.7678 -4.31736,19.2532 -7.87729,30.82118 z" />
<path
style="fill:none;stroke-width:10.64900017;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-1-6-7"
d="M -643.39436,-14.240052 C -362.0604,-44.58361 107.62665,18.648591 317.498,86.173"
sodipodi:nodetypes="cc"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)" />
</g>
<path
inkscape:connector-curvature="0"
style="opacity:0.12999998;fill:#cccccc;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 382.03749,279.8626 a 11.965828,11.965828 0 0 1 -11.96582,11.96582 11.965828,11.965828 0 0 1 -11.96583,-11.96582 11.965828,11.965828 0 0 1 11.96583,-11.96583 11.965828,11.965828 0 0 1 11.96582,11.96583 z"
id="circle3369-74-2" />
<path
inkscape:connector-curvature="0"
style="fill:#ffe6d5;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 380.29795,277.95816 a 11.965828,11.965828 0 0 1 -11.96583,11.96582 11.965828,11.965828 0 0 1 -11.96583,-11.96582 11.965828,11.965828 0 0 1 11.96583,-11.96583 11.965828,11.965828 0 0 1 11.96583,11.96583 z"
id="circle3383-9-9" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.50483704px;line-height:1.25;font-family:'HVD Comic Serif Pro';-inkscape-font-specification:'HVD Comic Serif Pro';letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.33762088"
x="363.3938"
y="282.7457"
id="text1164"><tspan
sodipodi:role="line"
id="tspan1162"
x="363.3938"
y="282.7457"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.33762088">5</tspan></text>
<path
inkscape:connector-curvature="0"
style="opacity:0.12999998;fill:#cccccc;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 417.2562,279.56781 a 11.965828,11.965828 0 0 1 -11.96584,11.96584 11.965828,11.965828 0 0 1 -11.96582,-11.96584 11.965828,11.965828 0 0 1 11.96582,-11.96582 11.965828,11.965828 0 0 1 11.96584,11.96582 z"
id="circle3369-74-2-3" />
<path
inkscape:connector-curvature="0"
style="fill:#ffe6d5;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 415.51665,277.66338 a 11.965828,11.965828 0 0 1 -11.96583,11.96582 11.965828,11.965828 0 0 1 -11.96582,-11.96582 11.965828,11.965828 0 0 1 11.96582,-11.96583 11.965828,11.965828 0 0 1 11.96583,11.96583 z"
id="circle3383-9-9-1" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.50483704px;line-height:1.25;font-family:'HVD Comic Serif Pro';-inkscape-font-specification:'HVD Comic Serif Pro';letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.33762088"
x="398.61249"
y="282.45093"
id="text1164-7"><tspan
sodipodi:role="line"
id="tspan1162-5"
x="398.61249"
y="282.45093"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.33762088">6</tspan></text>
<path
inkscape:connector-curvature="0"
style="opacity:0.12999998;fill:#cccccc;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 454.75297,279.76111 a 11.965828,11.965828 0 0 1 -11.96583,11.96582 11.965828,11.965828 0 0 1 -11.96583,-11.96582 11.965828,11.965828 0 0 1 11.96583,-11.96583 11.965828,11.965828 0 0 1 11.96583,11.96583 z"
id="circle3369-74-2-3-9" />
<path
inkscape:connector-curvature="0"
style="fill:#ffe6d5;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 453.01342,277.85667 a 11.965828,11.965828 0 0 1 -11.96582,11.96582 11.965828,11.965828 0 0 1 -11.96583,-11.96582 11.965828,11.965828 0 0 1 11.96583,-11.96583 11.965828,11.965828 0 0 1 11.96582,11.96583 z"
id="circle3383-9-9-1-6" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.50483704px;line-height:1.25;font-family:'HVD Comic Serif Pro';-inkscape-font-specification:'HVD Comic Serif Pro';letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.33762088"
x="436.10931"
y="282.6442"
id="text1164-7-2"><tspan
sodipodi:role="line"
id="tspan1162-5-1"
x="436.10931"
y="282.6442"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.33762088">7</tspan></text>
<path
inkscape:connector-curvature="0"
style="opacity:0.12999998;fill:#cccccc;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="M 181.75863,72.709742 A 11.965828,11.965828 0 0 1 169.7928,84.675571 11.965828,11.965828 0 0 1 157.82697,72.709742 11.965828,11.965828 0 0 1 169.7928,60.743918 11.965828,11.965828 0 0 1 181.75863,72.709742 Z"
id="circle3369-74-2-9" />
<path
inkscape:connector-curvature="0"
style="fill:#c6e9af;fill-opacity:1;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 180.01909,70.805306 a 11.965828,11.965828 0 0 1 -11.96584,11.965823 11.965828,11.965828 0 0 1 -11.96582,-11.965823 11.965828,11.965828 0 0 1 11.96582,-11.96583 11.965828,11.965828 0 0 1 11.96584,11.96583 z"
id="circle3383-9-9-7" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.50483704px;line-height:1.25;font-family:'HVD Comic Serif Pro';-inkscape-font-specification:'HVD Comic Serif Pro';letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.33762088"
x="163.11491"
y="75.592842"
id="text1164-5"><tspan
sodipodi:role="line"
id="tspan1162-3"
x="163.11491"
y="75.592842"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.33762088">5</tspan></text>
<path
inkscape:connector-curvature="0"
style="opacity:0.12999998;fill:#cccccc;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 181.93428,35.691303 a 11.965828,11.965828 0 0 1 -11.96583,11.96583 11.965828,11.965828 0 0 1 -11.96582,-11.96583 11.965828,11.965828 0 0 1 11.96582,-11.965826 11.965828,11.965828 0 0 1 11.96583,11.965826 z"
id="circle3369-74-2-3-8" />
<path
inkscape:connector-curvature="0"
style="fill:#c6e9af;fill-opacity:1;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="M 180.19474,33.786868 A 11.965828,11.965828 0 0 1 168.22891,45.752691 11.965828,11.965828 0 0 1 156.26308,33.786868 11.965828,11.965828 0 0 1 168.22891,21.821035 11.965828,11.965828 0 0 1 180.19474,33.786868 Z"
id="circle3383-9-9-1-8" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.50483704px;line-height:1.25;font-family:'HVD Comic Serif Pro';-inkscape-font-specification:'HVD Comic Serif Pro';letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.33762088"
x="163.29057"
y="38.574398"
id="text1164-7-3"><tspan
sodipodi:role="line"
id="tspan1162-5-18"
x="163.29057"
y="38.574398"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.33762088">6</tspan></text>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-5-5-8-6"
transform="matrix(-0.01156786,0.13836407,0.19235173,0.02592354,291.83794,213.12219)">
<path
style="stroke-width:33.2503624"
inkscape:connector-curvature="0"
id="path1478-7-9-6-1-9-4"
d="m 259.38952,227.69252 c 10.74597,-3.57306 21.8601,-6.66839 33.22317,-9.52335 -7.9007,-7.33149 -16.34907,-14.42988 -25.34588,-21.29783 -2.7143,10.7678 -4.31736,19.2532 -7.87729,30.82118 z" />
<path
style="fill:none;stroke-width:10.64900017;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-1-6-7-3"
d="M -1290.985,-56.842867 C -1009.651,-87.186425 -166.94013,-26.843946 317.498,86.173"
sodipodi:nodetypes="cc"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)" />
</g>
<g
id="g986-9-7"
transform="matrix(0.66229252,0,0,0.66229252,101.51073,-84.077752)">
<path
inkscape:connector-curvature="0"
id="circle3383-98-2-3-9"
d="m 373.05928,177.47175 a 37.217743,37.217743 0 0 1 -37.21774,37.21773 37.217743,37.217743 0 0 1 -37.21773,-37.21773 37.217743,37.217743 0 0 1 37.21773,-37.21774 37.217743,37.217743 0 0 1 37.21774,37.21774 z"
style="fill:#ececec;stroke:#666666;stroke-width:6;stroke-miterlimit:10;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="circle3383-81-7-6-2"
d="m 336.07253,177.56778 a 18.387552,18.387552 0 0 1 -18.38756,18.38755 18.387552,18.387552 0 0 1 -18.38755,-18.38755 18.387552,18.387552 0 0 1 18.38755,-18.38756 18.387552,18.387552 0 0 1 18.38756,18.38756 z"
style="fill:#c6e9af;stroke:#666666;stroke-width:4.48476887;stroke-miterlimit:10" />
<path
inkscape:connector-curvature="0"
id="circle3383-5-2-3"
d="M 373.05928,177.47175 A 18.067285,18.067285 0 0 1 354.992,195.53903 18.067285,18.067285 0 0 1 336.92471,177.47175 18.067285,18.067285 0 0 1 354.992,159.40446 18.067285,18.067285 0 0 1 373.05928,177.47175 Z"
style="fill:#ffe6d5;stroke:#666666;stroke-width:4.40665483;stroke-miterlimit:10" />
<g
id="text2753-3-4"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
transform="matrix(0.75080885,0,0,0.71843284,318.45019,114.86566)"
aria-label="4">
<path
id="path130738-8"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
d="m 51.435776,79.530576 -5.881419,8.710632 h 5.881419 z m -0.891969,-4.418032 h 5.965041 v 13.128664 h 2.968583 v 3.888427 h -2.968583 v 3.790867 h -5.073072 v -3.790867 h -9.226302 v -4.599214 z"
inkscape:connector-curvature="0" />
</g>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20.39104462px;line-height:1.25;font-family:'HVD Comic Serif Pro';-inkscape-font-specification:'HVD Comic Serif Pro';letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.50977612"
x="310.09558"
y="183.97423"
id="text1164-7-3-8"><tspan
sodipodi:role="line"
id="tspan1162-5-18-8"
x="310.09558"
y="183.97423"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.50977612">6</tspan></text>
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-5-5-8-6-3"
transform="matrix(-0.13777788,-0.01719548,-0.03373881,0.19113585,269.65539,198.72753)">
<path
style="stroke-width:33.2503624"
inkscape:connector-curvature="0"
id="path1478-7-9-6-1-9-4-3"
d="m 259.38952,227.69252 c 10.74597,-3.57306 21.8601,-6.66839 33.22317,-9.52335 -7.9007,-7.33149 -16.34907,-14.42988 -25.34588,-21.29783 -2.7143,10.7678 -4.31736,19.2532 -7.87729,30.82118 z" />
<path
style="fill:none;stroke-width:10.64900017;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-1-6-7-3-8"
d="M -1290.985,-56.842867 C -1009.651,-87.186425 -166.94013,-26.843946 317.498,86.173"
sodipodi:nodetypes="cc"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)" />
</g>
<g
id="g986"
transform="matrix(0.66229252,0,0,0.66229252,-17.443518,120.86305)">
<path
inkscape:connector-curvature="0"
id="circle3383-98-2"
d="m 373.05928,177.47175 a 37.217743,37.217743 0 0 1 -37.21774,37.21773 37.217743,37.217743 0 0 1 -37.21773,-37.21773 37.217743,37.217743 0 0 1 37.21773,-37.21774 37.217743,37.217743 0 0 1 37.21774,37.21774 z"
style="fill:#ececec;stroke:#666666;stroke-width:6;stroke-miterlimit:10;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="circle3383-81-7"
d="m 336.07253,177.56778 a 18.387552,18.387552 0 0 1 -18.38756,18.38755 18.387552,18.387552 0 0 1 -18.38755,-18.38755 18.387552,18.387552 0 0 1 18.38755,-18.38756 18.387552,18.387552 0 0 1 18.38756,18.38756 z"
style="fill:#c6e9af;stroke:#666666;stroke-width:4.48476887;stroke-miterlimit:10" />
<g
aria-label="1"
transform="matrix(0.76411799,0,0,0.73116807,278.97162,114.29101)"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
id="text2753-0-5">
<path
d="m 44.272152,92.213257 h 4.738584 V 78.764041 l -4.864017,1.003465 v -3.651497 l 4.836143,-1.003465 h 5.100946 v 17.100713 h 4.738584 v 3.707245 h -14.55024 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
id="path130720-2-3"
inkscape:connector-curvature="0" />
</g>
<path
inkscape:connector-curvature="0"
id="circle3383-5"
d="M 373.05928,177.47175 A 18.067285,18.067285 0 0 1 354.992,195.53903 18.067285,18.067285 0 0 1 336.92471,177.47175 18.067285,18.067285 0 0 1 354.992,159.40446 18.067285,18.067285 0 0 1 373.05928,177.47175 Z"
style="fill:#ffe6d5;stroke:#666666;stroke-width:4.40665483;stroke-miterlimit:10" />
<path
inkscape:connector-curvature="0"
id="path130720-6"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.52408123"
d="m 350.19286,181.54614 h 3.55777 v -9.66236 l -3.65194,0.72093 v -2.62336 l 3.63102,-0.72092 h 3.82983 v 12.28571 h 3.55777 v 2.66341 h -10.92445 z" />
</g>
<g
id="g986-9"
transform="matrix(0.66229252,0,0,0.66229252,219.16803,119.89513)">
<path
inkscape:connector-curvature="0"
id="circle3383-98-2-3"
d="m 373.05928,177.47175 a 37.217743,37.217743 0 0 1 -37.21774,37.21773 37.217743,37.217743 0 0 1 -37.21773,-37.21773 37.217743,37.217743 0 0 1 37.21773,-37.21774 37.217743,37.217743 0 0 1 37.21774,37.21774 z"
style="fill:#ececec;stroke:#666666;stroke-width:6;stroke-miterlimit:10;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="circle3383-81-7-6"
d="m 336.07253,177.56778 a 18.387552,18.387552 0 0 1 -18.38756,18.38755 18.387552,18.387552 0 0 1 -18.38755,-18.38755 18.387552,18.387552 0 0 1 18.38755,-18.38756 18.387552,18.387552 0 0 1 18.38756,18.38756 z"
style="fill:#c6e9af;stroke:#666666;stroke-width:4.48476887;stroke-miterlimit:10" />
<g
aria-label="1"
transform="matrix(0.76411799,0,0,0.73116807,278.97162,114.29101)"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
id="text2753-0-5-0">
<path
d="m 44.272152,92.213257 h 4.738584 V 78.764041 l -4.864017,1.003465 v -3.651497 l 4.836143,-1.003465 h 5.100946 v 17.100713 h 4.738584 v 3.707245 h -14.55024 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
id="path130720-2-3-6"
inkscape:connector-curvature="0" />
</g>
<path
inkscape:connector-curvature="0"
id="circle3383-5-2"
d="M 373.05928,177.47175 A 18.067285,18.067285 0 0 1 354.992,195.53903 18.067285,18.067285 0 0 1 336.92471,177.47175 18.067285,18.067285 0 0 1 354.992,159.40446 18.067285,18.067285 0 0 1 373.05928,177.47175 Z"
style="fill:#ffe6d5;stroke:#666666;stroke-width:4.40665483;stroke-miterlimit:10" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20.39104462px;line-height:1.25;font-family:'HVD Comic Serif Pro';-inkscape-font-specification:'HVD Comic Serif Pro';letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.50977612"
x="348.91147"
y="184.66605"
id="text1164-7-2-6"><tspan
sodipodi:role="line"
id="tspan1162-5-1-0"
x="348.91147"
y="184.66605"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.50977612">7</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 35 KiB

View File

@ -0,0 +1,265 @@
<?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="coordinates_isomorphism.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="2560"
inkscape:window-height="1376"
id="namedview3399"
showgrid="false"
inkscape:zoom="2.8284271"
inkscape:cx="365.64564"
inkscape:cy="200.0821"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg3397"
inkscape:document-rotation="0" />
<g
id="g8191"
transform="translate(2.1213203,-3.8890873)">
<path
style="fill:#ececec;stroke:#666666;stroke-width:4.8948164;stroke-miterlimit:10;stroke-dasharray:none"
d="m 220.70084,101.35862 a 60.187608,60.187608 0 0 1 -60.1876,60.18758 60.187608,60.187608 0 0 1 -60.18759,-60.18758 60.187608,60.187608 0 0 1 60.18759,-60.187611 60.187608,60.187608 0 0 1 60.1876,60.187611 z"
id="circle3383-98-2-3-9-6"
inkscape:connector-curvature="0" />
<g
transform="matrix(0.71201444,0,0,0.71201444,-79.4456,-55.487687)"
id="g986-9-7">
<path
style="fill:#ececec;stroke:#666666;stroke-width:6;stroke-miterlimit:10;stroke-dasharray:none"
d="m 373.05928,177.47175 a 37.217743,37.217743 0 0 1 -37.21774,37.21773 37.217743,37.217743 0 0 1 -37.21773,-37.21773 37.217743,37.217743 0 0 1 37.21773,-37.21774 37.217743,37.217743 0 0 1 37.21774,37.21774 z"
id="circle3383-98-2-3-9"
inkscape:connector-curvature="0" />
<path
style="fill:#c6e9af;stroke:#666666;stroke-width:4.48476887;stroke-miterlimit:10"
d="m 336.07253,177.56778 a 18.387552,18.387552 0 0 1 -18.38756,18.38755 18.387552,18.387552 0 0 1 -18.38755,-18.38755 18.387552,18.387552 0 0 1 18.38755,-18.38756 18.387552,18.387552 0 0 1 18.38756,18.38756 z"
id="circle3383-81-7-6-2"
inkscape:connector-curvature="0" />
<path
style="fill:#ffe6d5;stroke:#666666;stroke-width:4.40665483;stroke-miterlimit:10"
d="M 373.05928,177.47175 A 18.067285,18.067285 0 0 1 354.992,195.53903 18.067285,18.067285 0 0 1 336.92471,177.47175 18.067285,18.067285 0 0 1 354.992,159.40446 18.067285,18.067285 0 0 1 373.05928,177.47175 Z"
id="circle3383-5-2-3"
inkscape:connector-curvature="0" />
<g
aria-label="4"
transform="matrix(0.75080885,0,0,0.71843284,318.45019,114.86566)"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
id="text2753-3-4">
<path
inkscape:connector-curvature="0"
d="m 51.435776,79.530576 -5.881419,8.710632 h 5.881419 z m -0.891969,-4.418032 h 5.965041 v 13.128664 h 2.968583 v 3.888427 h -2.968583 v 3.790867 h -5.073072 v -3.790867 h -9.226302 v -4.599214 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
id="path130738-8" />
</g>
<text
id="text1164-7-3-8"
y="183.97423"
x="310.09558"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20.39104462px;line-height:1.25;font-family:'HVD Comic Serif Pro';-inkscape-font-specification:'HVD Comic Serif Pro';letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.50977612"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.50977612"
y="183.97423"
x="310.09558"
id="tspan1162-5-18-8"
sodipodi:role="line">6</tspan></text>
</g>
<g
transform="matrix(0.71201444,0,0,0.71201444,-105.92076,-7.896427)"
id="g986">
<path
style="fill:#ececec;stroke:#666666;stroke-width:6;stroke-miterlimit:10;stroke-dasharray:none"
d="m 373.05928,177.47175 a 37.217743,37.217743 0 0 1 -37.21774,37.21773 37.217743,37.217743 0 0 1 -37.21773,-37.21773 37.217743,37.217743 0 0 1 37.21773,-37.21774 37.217743,37.217743 0 0 1 37.21774,37.21774 z"
id="circle3383-98-2"
inkscape:connector-curvature="0" />
<path
style="fill:#c6e9af;stroke:#666666;stroke-width:4.48476887;stroke-miterlimit:10"
d="m 336.07253,177.56778 a 18.387552,18.387552 0 0 1 -18.38756,18.38755 18.387552,18.387552 0 0 1 -18.38755,-18.38755 18.387552,18.387552 0 0 1 18.38755,-18.38756 18.387552,18.387552 0 0 1 18.38756,18.38756 z"
id="circle3383-81-7"
inkscape:connector-curvature="0" />
<g
id="text2753-0-5"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
transform="matrix(0.76411799,0,0,0.73116807,278.97162,114.29101)"
aria-label="1">
<path
inkscape:connector-curvature="0"
id="path130720-2-3"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
d="m 44.272152,92.213257 h 4.738584 V 78.764041 l -4.864017,1.003465 v -3.651497 l 4.836143,-1.003465 h 5.100946 v 17.100713 h 4.738584 v 3.707245 h -14.55024 z" />
</g>
<path
style="fill:#ffe6d5;stroke:#666666;stroke-width:4.40665483;stroke-miterlimit:10"
d="M 373.05928,177.47175 A 18.067285,18.067285 0 0 1 354.992,195.53903 18.067285,18.067285 0 0 1 336.92471,177.47175 18.067285,18.067285 0 0 1 354.992,159.40446 18.067285,18.067285 0 0 1 373.05928,177.47175 Z"
id="circle3383-5"
inkscape:connector-curvature="0" />
<path
d="m 350.19286,181.54614 h 3.55777 v -9.66236 l -3.65194,0.72093 v -2.62336 l 3.63102,-0.72092 h 3.82983 v 12.28571 h 3.55777 v 2.66341 h -10.92445 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.52408123"
id="path130720-6"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0.71201444,0,0,0.71201444,-50.199722,-8.8047628)"
id="g986-9">
<path
style="fill:#ececec;stroke:#666666;stroke-width:6;stroke-miterlimit:10;stroke-dasharray:none"
d="m 373.05928,177.47175 a 37.217743,37.217743 0 0 1 -37.21774,37.21773 37.217743,37.217743 0 0 1 -37.21773,-37.21773 37.217743,37.217743 0 0 1 37.21773,-37.21774 37.217743,37.217743 0 0 1 37.21774,37.21774 z"
id="circle3383-98-2-3"
inkscape:connector-curvature="0" />
<path
style="fill:#c6e9af;stroke:#666666;stroke-width:4.48476887;stroke-miterlimit:10"
d="m 336.07253,177.56778 a 18.387552,18.387552 0 0 1 -18.38756,18.38755 18.387552,18.387552 0 0 1 -18.38755,-18.38755 18.387552,18.387552 0 0 1 18.38755,-18.38756 18.387552,18.387552 0 0 1 18.38756,18.38756 z"
id="circle3383-81-7-6"
inkscape:connector-curvature="0" />
<g
id="text2753-0-5-0"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
transform="matrix(0.76411799,0,0,0.73116807,278.97162,114.29101)"
aria-label="1">
<path
inkscape:connector-curvature="0"
id="path130720-2-3-6"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
d="m 44.272152,92.213257 h 4.738584 V 78.764041 l -4.864017,1.003465 v -3.651497 l 4.836143,-1.003465 h 5.100946 v 17.100713 h 4.738584 v 3.707245 h -14.55024 z" />
</g>
<path
style="fill:#ffe6d5;stroke:#666666;stroke-width:4.40665483;stroke-miterlimit:10"
d="M 373.05928,177.47175 A 18.067285,18.067285 0 0 1 354.992,195.53903 18.067285,18.067285 0 0 1 336.92471,177.47175 18.067285,18.067285 0 0 1 354.992,159.40446 18.067285,18.067285 0 0 1 373.05928,177.47175 Z"
id="circle3383-5-2"
inkscape:connector-curvature="0" />
<text
id="text1164-7-2-6"
y="184.66605"
x="348.91147"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20.39104462px;line-height:1.25;font-family:'HVD Comic Serif Pro';-inkscape-font-specification:'HVD Comic Serif Pro';letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.50977612"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.50977612"
y="184.66605"
x="348.91147"
id="tspan1162-5-1-0"
sodipodi:role="line">7</tspan></text>
</g>
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-7-1"
transform="matrix(0.1510568,0.00300635,0.00647321,0.21110143,508.11225,-80.198948)"
inkscape:transform-center-x="49.303271"
inkscape:transform-center-y="6.2867829">
<path
inkscape:connector-curvature="0"
style="fill:#838383;fill-opacity:1;stroke:none;stroke-width:2.34985375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m -654.90706,546.96141 36.03876,-88.55106 91.59374,67.24643 z"
id="path3233"
inkscape:transform-center-x="2.4748738"
inkscape:transform-center-y="5.303301" />
<path
style="fill:none;stroke-width:9.11184883;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-3-3"
d="m -2074.9404,653.0807 c 482.139,-162.56321 978.9051,-220.58906 1535.36784,-132.27319"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
style="display:inline;fill:#838383;fill-opacity:1;stroke:none;stroke-width:2.34985375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
d="m -2078.3436,601.58462 53.1848,80.72946 -133.9499,-5.25536 z"
id="path3233-7"
inkscape:transform-center-x="-8.7052541"
inkscape:transform-center-y="-9.3758046" />
</g>
<g
id="g986-9-7-7"
transform="matrix(0.71201444,0,0,0.71201444,-184.32325,-130.36276)" />
<path
style="fill:#f1edaf;fill-opacity:1;stroke:#414141;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.53753752"
d="M 352.44768,170.88765 432.3841,32.433744 511.19215,168.93327 Z"
id="path8193"
inkscape:connector-curvature="0" />
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-7-1-2"
transform="matrix(-0.14734657,-0.03340933,0.0362342,-0.20806922,7.6672965,242.69071)"
inkscape:transform-center-x="-50.465326"
inkscape:transform-center-y="3.3889453">
<path
inkscape:connector-curvature="0"
style="fill:#838383;fill-opacity:1;stroke:none;stroke-width:2.34985375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m -939.66363,636.48231 53.18897,-84.57345 76.47491,76.45295 z"
id="path3233-5"
inkscape:transform-center-x="-2.4748738"
inkscape:transform-center-y="-6.7175146" />
<path
style="fill:none;stroke-width:9.11184883;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-3-3-4"
d="m -2074.9404,653.0807 c 482.139,-162.56321 949.9492,-172.74281 1222.87629,-34.4106"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
style="display:inline;fill:#838383;fill-opacity:1;stroke:none;stroke-width:2.34985375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
d="m -2078.3436,601.58462 53.1848,80.72946 -133.9499,-5.25536 z"
id="path3233-7-0"
inkscape:transform-center-x="-8.7052541"
inkscape:transform-center-y="-9.3758046" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-7-1-5"
transform="matrix(-0.15049028,-0.01341153,0.00809339,-0.21104553,185.86628,285.07225)"
inkscape:transform-center-x="-49.92942"
inkscape:transform-center-y="-2.972329">
<path
inkscape:connector-curvature="0"
style="fill:#838383;fill-opacity:1;stroke:none;stroke-width:2.34985375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m -269.60772,722.08851 83.16967,-71.88584 42.74579,89.71278 z"
id="path3233-9" />
<path
style="fill:none;stroke-width:9.11184883;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-3-3-46"
d="m -2074.9404,653.0807 c 482.139,-162.56321 1306.12513,-286.04733 1931.24814,86.83475"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
style="display:inline;fill:#838383;fill-opacity:1;stroke:none;stroke-width:2.34985375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
d="m -2078.3436,601.58462 53.1848,80.72946 -133.9499,-5.25536 z"
id="path3233-7-9"
inkscape:transform-center-x="-8.7052541"
inkscape:transform-center-y="-9.3758046" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1,537 @@
<?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 300"
version="1.1"
id="svg3397"
sodipodi:docname="coordinates_triangle.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
width="595.29999"
height="300">
<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="2560"
inkscape:window-height="1376"
id="namedview3399"
showgrid="false"
inkscape:zoom="1.4142136"
inkscape:cx="324.58047"
inkscape:cy="112.36951"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg3397"
inkscape:document-rotation="0" />
<g
transform="matrix(0.49503815,0,0,0.49503815,140.7937,194.61064)"
style="fill:#c6e9af;stroke:#666666"
id="g2749-48">
<path
inkscape:connector-curvature="0"
id="circle3369-0"
d="m 80.040796,90.58149 a 24.6,24.6 0 0 1 -24.6,24.6 24.6,24.6 0 0 1 -24.6,-24.6 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
style="opacity:0.12999998;fill:#c6e9af;stroke:#666666;stroke-width:6;stroke-miterlimit:10" />
<path
inkscape:connector-curvature="0"
id="circle3383-81"
d="m 76.107595,84.367409 a 24.6,24.6 0 0 1 -24.6,24.600001 24.6,24.6 0 0 1 -24.6,-24.600001 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
style="fill:#c6e9af;stroke:#666666;stroke-width:6;stroke-miterlimit:10" />
</g>
<g
id="text2753-0"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
transform="matrix(0.50606963,0,0,0.48424714,140.65236,194.468)"
aria-label="1">
<path
inkscape:connector-curvature="0"
id="path130720-2"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
d="m 44.272152,92.213257 h 4.738584 V 78.764041 l -4.864017,1.003465 v -3.651497 l 4.836143,-1.003465 h 5.100946 v 17.100713 h 4.738584 v 3.707245 h -14.55024 z" />
</g>
<g
transform="matrix(0.49503815,0,0,0.49503815,141.7567,153.30399)"
style="fill:#c6e9af;stroke:#666666"
id="g2749-4-9">
<path
inkscape:connector-curvature="0"
id="circle3369-5-7"
d="m 80.040796,90.58149 a 24.6,24.6 0 0 1 -24.6,24.6 24.6,24.6 0 0 1 -24.6,-24.6 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
style="opacity:0.12999998;fill:#c6e9af;stroke:#666666;stroke-width:6;stroke-miterlimit:10" />
<path
inkscape:connector-curvature="0"
id="circle3383-6-5"
d="m 76.107595,84.367409 a 24.6,24.6 0 0 1 -24.6,24.600001 24.6,24.6 0 0 1 -24.6,-24.600001 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
style="fill:#c6e9af;stroke:#666666;stroke-width:6;stroke-miterlimit:10" />
</g>
<g
id="text2753-2-6"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
transform="matrix(0.50606963,0,0,0.48424714,141.61537,153.16135)"
aria-label="2">
<path
inkscape:connector-curvature="0"
id="path130728-4"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
d="m 49.150106,91.976327 h 9.156616 v 3.944175 H 43.185065 v -3.944175 l 7.595671,-6.703702 q 1.017402,-0.919843 1.505197,-1.797874 0.487796,-0.878032 0.487796,-1.825749 0,-1.463386 -0.989528,-2.355355 -0.975591,-0.891969 -2.606221,-0.891969 -1.254331,0 -2.745592,0.543544 -1.49126,0.529606 -3.191575,1.588819 v -4.57134 q 1.811811,-0.599291 3.581812,-0.905905 1.77,-0.320552 3.470316,-0.320552 3.735119,0 5.797796,1.644568 2.076615,1.644567 2.076615,4.585277 0,1.700315 -0.878032,3.177638 -0.878031,1.463386 -3.693308,3.930237 z" />
</g>
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#f1edaf;fill-opacity:1;fill-rule:nonzero;stroke:#818181;stroke-width:5.8554306;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 323.88014,11.200429 c -9.56228,-0.45039 -18.57641,4.47363 -23.36455,12.76301 l -73.12425,126.658001 -42.76448,74.06777 c -9.85593,17.07682 2.48875,38.41563 22.20566,38.38433 l 231.54873,-0.39837 c 19.67709,-0.0377 31.95211,-21.34198 22.11607,-38.38433 L 344.83922,23.963439 c -4.35814,-7.54486 -12.25557,-12.35399 -20.95908,-12.76301 z"
id="path1402-9"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccc" />
<g
transform="matrix(0.49503815,0,0,0.49503815,141.87605,111.10537)"
style="fill:#c6e9af;stroke:#666666"
id="g2749-7-7">
<path
id="circle3369-7-9"
d="m 80.040796,90.58149 a 24.6,24.6 0 0 1 -24.6,24.6 24.6,24.6 0 0 1 -24.6,-24.6 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
style="opacity:0.12999998;fill:#c6e9af;stroke:#666666;stroke-width:6;stroke-miterlimit:10"
inkscape:connector-curvature="0" />
<path
id="circle3383-4-7"
d="m 76.107595,84.367409 a 24.6,24.6 0 0 1 -24.6,24.600001 24.6,24.6 0 0 1 -24.6,-24.600001 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
style="fill:#c6e9af;stroke:#666666;stroke-width:6;stroke-miterlimit:10"
inkscape:connector-curvature="0" />
</g>
<g
id="text2753-1-4"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
transform="matrix(0.50606963,0,0,0.48424714,141.73471,110.96272)"
aria-label="3">
<path
id="path130733-9"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
d="m 54.223178,84.701208 q 2.104489,0.543543 3.191575,1.895433 1.101024,1.337953 1.101024,3.414568 0,3.094016 -2.369292,4.71071 -2.369292,1.602756 -6.912757,1.602756 -1.602757,0 -3.21945,-0.264803 -1.602756,-0.250866 -3.177638,-0.766536 v -4.139292 q 1.505197,0.752598 2.98252,1.142835 1.49126,0.376299 2.926772,0.376299 2.132363,0 3.261261,-0.738662 1.142835,-0.738661 1.142835,-2.118425 0,-1.421575 -1.170709,-2.1463 -1.156772,-0.738662 -3.428505,-0.738662 h -2.1463 v -3.456378 h 2.257796 q 2.020867,0 3.010395,-0.627166 0.989528,-0.641102 0.989528,-1.937245 0,-1.198583 -0.961654,-1.853622 -0.961654,-0.65504 -2.717717,-0.65504 -1.296143,0 -2.620159,0.292678 -1.324016,0.292677 -2.634095,0.864094 v -3.930237 q 1.58882,-0.445984 3.149765,-0.668976 1.560945,-0.222993 3.066142,-0.222993 4.055671,0 6.0626,1.337954 2.020867,1.324016 2.020867,3.999922 0,1.825748 -0.961654,2.996457 -0.961654,1.156772 -2.84315,1.630631 z"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0.49503815,0,0,0.49503815,142.98113,67.337755)"
style="fill:#c6e9af;stroke:#666666"
id="g2749-8-0">
<path
id="circle3369-74-6"
d="m 80.040796,90.58149 a 24.6,24.6 0 0 1 -24.6,24.6 24.6,24.6 0 0 1 -24.6,-24.6 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
style="opacity:0.12999998;fill:#c6e9af;stroke:#666666;stroke-width:6;stroke-miterlimit:10"
inkscape:connector-curvature="0" />
<path
id="circle3383-9-0"
d="m 76.107595,84.367409 a 24.6,24.6 0 0 1 -24.6,24.600001 24.6,24.6 0 0 1 -24.6,-24.600001 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
style="fill:#c6e9af;stroke:#666666;stroke-width:6;stroke-miterlimit:10"
inkscape:connector-curvature="0" />
</g>
<g
id="text2753-3-8"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
transform="matrix(0.50606963,0,0,0.48424714,142.83979,67.195111)"
aria-label="4">
<path
id="path130738-5"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
d="m 51.435776,79.530576 -5.881419,8.710632 h 5.881419 z m -0.891969,-4.418032 h 5.965041 v 13.128664 h 2.968583 v 3.888427 h -2.968583 v 3.790867 h -5.073072 v -3.790867 h -9.226302 v -4.599214 z"
inkscape:connector-curvature="0" />
</g>
<path
style="opacity:0.12999998;fill:#cccccc;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 218.2084,279.68293 a 11.965828,11.965828 0 0 1 -11.96582,11.96583 11.965828,11.965828 0 0 1 -11.96584,-11.96583 11.965828,11.965828 0 0 1 11.96584,-11.96583 11.965828,11.965828 0 0 1 11.96582,11.96583 z"
id="circle3369"
inkscape:connector-curvature="0" />
<path
style="fill:#ffe6d5;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 216.29523,276.66031 a 11.965828,11.965828 0 0 1 -11.96583,11.96581 11.965828,11.965828 0 0 1 -11.96582,-11.96581 11.965828,11.965828 0 0 1 11.96582,-11.96584 11.965828,11.965828 0 0 1 11.96583,11.96584 z"
id="circle3383"
inkscape:connector-curvature="0" />
<path
d="m 201.15098,279.35875 h 2.35628 v -6.39932 l -2.41866,0.47747 v -1.73743 l 2.4048,-0.47746 h 2.53647 v 8.13674 h 2.35629 v 1.76395 h -7.23518 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.34709507"
id="path130720"
inkscape:connector-curvature="0" />
<path
style="opacity:0.12999998;fill:#cccccc;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 261.2035,280.37046 a 11.965828,11.965828 0 0 1 -11.96584,11.96583 11.965828,11.965828 0 0 1 -11.96581,-11.96583 11.965828,11.965828 0 0 1 11.96581,-11.96582 11.965828,11.965828 0 0 1 11.96584,11.96582 z"
id="circle3369-5"
inkscape:connector-curvature="0" />
<path
style="fill:#ffe6d5;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 259.29032,277.34784 a 11.965828,11.965828 0 0 1 -11.96582,11.96582 11.965828,11.965828 0 0 1 -11.96583,-11.96582 11.965828,11.965828 0 0 1 11.96583,-11.96583 11.965828,11.965828 0 0 1 11.96582,11.96583 z"
id="circle3383-6"
inkscape:connector-curvature="0" />
<path
d="m 246.57166,279.93354 h 4.55317 v 1.87669 h -7.51931 v -1.87669 l 3.77698,-3.18971 q 0.5059,-0.43766 0.74847,-0.85544 0.24255,-0.41778 0.24255,-0.86872 0,-0.6963 -0.49204,-1.12071 -0.48512,-0.42441 -1.29596,-0.42441 -0.62372,0 -1.36526,0.25863 -0.74154,0.25199 -1.58703,0.75597 v -2.1751 q 0.90093,-0.28514 1.78107,-0.43103 0.88014,-0.15253 1.72564,-0.15253 1.85731,0 2.88298,0.78251 1.03261,0.7825 1.03261,2.18174 0,0.80902 -0.43661,1.51195 -0.4366,0.6963 -1.83651,1.87006 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.34709507"
id="path130728"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="opacity:0.12999998;fill:#cccccc;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 304.04912,280.4069 a 11.965828,11.965828 0 0 1 -11.96583,11.96582 11.965828,11.965828 0 0 1 -11.96583,-11.96582 11.965828,11.965828 0 0 1 11.96583,-11.96583 11.965828,11.965828 0 0 1 11.96583,11.96583 z"
id="circle3369-7" />
<path
inkscape:connector-curvature="0"
style="fill:#ffe6d5;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 302.13595,277.38427 a 11.965828,11.965828 0 0 1 -11.96583,11.96582 11.965828,11.965828 0 0 1 -11.96582,-11.96582 11.965828,11.965828 0 0 1 11.96582,-11.96583 11.965828,11.965828 0 0 1 11.96583,11.96583 z"
id="circle3383-4" />
<g
id="text2753-1"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
transform="matrix(0.49725508,0,0,0.4758127,264.97714,236.20647)"
aria-label="3">
<path
id="path130733"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
d="m 54.223178,84.701208 q 2.104489,0.543543 3.191575,1.895433 1.101024,1.337953 1.101024,3.414568 0,3.094016 -2.369292,4.71071 -2.369292,1.602756 -6.912757,1.602756 -1.602757,0 -3.21945,-0.264803 -1.602756,-0.250866 -3.177638,-0.766536 v -4.139292 q 1.505197,0.752598 2.98252,1.142835 1.49126,0.376299 2.926772,0.376299 2.132363,0 3.261261,-0.738662 1.142835,-0.738661 1.142835,-2.118425 0,-1.421575 -1.170709,-2.1463 -1.156772,-0.738662 -3.428505,-0.738662 h -2.1463 v -3.456378 h 2.257796 q 2.020867,0 3.010395,-0.627166 0.989528,-0.641102 0.989528,-1.937245 0,-1.198583 -0.961654,-1.853622 -0.961654,-0.65504 -2.717717,-0.65504 -1.296143,0 -2.620159,0.292678 -1.324016,0.292677 -2.634095,0.864094 v -3.930237 q 1.58882,-0.445984 3.149765,-0.668976 1.560945,-0.222993 3.066142,-0.222993 4.055671,0 6.0626,1.337954 2.020867,1.324016 2.020867,3.999922 0,1.825748 -0.961654,2.996457 -0.961654,1.156772 -2.84315,1.630631 z"
inkscape:connector-curvature="0" />
</g>
<path
inkscape:connector-curvature="0"
style="opacity:0.12999998;fill:#cccccc;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 344.99031,282.7284 a 11.965828,11.965828 0 0 1 -11.96584,11.96584 11.965828,11.965828 0 0 1 -11.96582,-11.96584 11.965828,11.965828 0 0 1 11.96582,-11.96582 11.965828,11.965828 0 0 1 11.96584,11.96582 z"
id="circle3369-74" />
<path
inkscape:connector-curvature="0"
style="fill:#ffe6d5;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 343.07713,277.70578 a 11.965828,11.965828 0 0 1 -11.96583,11.96583 11.965828,11.965828 0 0 1 -11.96582,-11.96583 11.965828,11.965828 0 0 1 11.96582,-11.96583 11.965828,11.965828 0 0 1 11.96583,11.96583 z"
id="circle3383-9" />
<g
id="text2753-3"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
transform="matrix(0.49725508,0,0,0.4758127,305.91832,236.52798)"
aria-label="4">
<path
id="path130738"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
d="m 51.435776,79.530576 -5.881419,8.710632 h 5.881419 z m -0.891969,-4.418032 h 5.965041 v 13.128664 h 2.968583 v 3.888427 h -2.968583 v 3.790867 h -5.073072 v -3.790867 h -9.226302 v -4.599214 z"
inkscape:connector-curvature="0" />
</g>
<g
id="g2760-5"
transform="matrix(0.48641575,0,0,0.48641575,141.35015,239.94054)">
<g
id="g2749-5"
style="fill:#ececec;stroke:#666666"
transform="translate(-3.3630029,-9.4412283)">
<path
style="opacity:0.12999998;fill:#ececec;stroke:#666666;stroke-width:6;stroke-miterlimit:10"
d="m 80.040796,90.58149 a 24.6,24.6 0 0 1 -24.6,24.6 24.6,24.6 0 0 1 -24.6,-24.6 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
id="circle3369-4"
inkscape:connector-curvature="0" />
<path
style="fill:#ececec;stroke:#666666;stroke-width:6;stroke-miterlimit:10"
d="m 76.107595,84.367409 a 24.6,24.6 0 0 1 -24.6,24.600001 24.6,24.6 0 0 1 -24.6,-24.600001 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
id="circle3383-98"
inkscape:connector-curvature="0" />
</g>
<text
id="text73945"
y="86.54644"
x="36.733299"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:54.46308517px;line-height:1.25;font-family:'HVD Comic Serif Pro';-inkscape-font-specification:'HVD Comic Serif Pro';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.36157715"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:32.67784882px;line-height:0;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:1.36157715"
y="86.54644"
x="36.733299"
id="tspan73943"
sodipodi:role="line">0</tspan></text>
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-5-5-8"
transform="matrix(-0.13755289,-0.01891123,-0.03611826,0.19070053,234.33304,-6.0646238)">
<path
style="stroke-width:33.2503624"
inkscape:connector-curvature="0"
id="path1478-7-9-6-1-9"
d="m 259.38952,227.69252 c 10.74597,-3.57306 21.8601,-6.66839 33.22317,-9.52335 -7.9007,-7.33149 -16.34907,-14.42988 -25.34588,-21.29783 -2.7143,10.7678 -4.31736,19.2532 -7.87729,30.82118 z" />
<path
style="fill:none;stroke-width:10.64900017;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-1-6-7"
d="M -643.39436,-14.240052 C -362.0604,-44.58361 107.62665,18.648591 317.498,86.173"
sodipodi:nodetypes="cc"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)" />
</g>
<path
inkscape:connector-curvature="0"
style="opacity:0.12999998;fill:#cccccc;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 382.03749,279.8626 a 11.965828,11.965828 0 0 1 -11.96582,11.96582 11.965828,11.965828 0 0 1 -11.96583,-11.96582 11.965828,11.965828 0 0 1 11.96583,-11.96583 11.965828,11.965828 0 0 1 11.96582,11.96583 z"
id="circle3369-74-2" />
<path
inkscape:connector-curvature="0"
style="fill:#ffe6d5;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 380.29795,277.95816 a 11.965828,11.965828 0 0 1 -11.96583,11.96582 11.965828,11.965828 0 0 1 -11.96583,-11.96582 11.965828,11.965828 0 0 1 11.96583,-11.96583 11.965828,11.965828 0 0 1 11.96583,11.96583 z"
id="circle3383-9-9" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.50483704px;line-height:1.25;font-family:'HVD Comic Serif Pro';-inkscape-font-specification:'HVD Comic Serif Pro';letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.33762088"
x="363.3938"
y="282.7457"
id="text1164"><tspan
sodipodi:role="line"
id="tspan1162"
x="363.3938"
y="282.7457"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.33762088">5</tspan></text>
<path
inkscape:connector-curvature="0"
style="opacity:0.12999998;fill:#cccccc;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 417.2562,279.56781 a 11.965828,11.965828 0 0 1 -11.96584,11.96584 11.965828,11.965828 0 0 1 -11.96582,-11.96584 11.965828,11.965828 0 0 1 11.96582,-11.96582 11.965828,11.965828 0 0 1 11.96584,11.96582 z"
id="circle3369-74-2-3" />
<path
inkscape:connector-curvature="0"
style="fill:#ffe6d5;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 415.51665,277.66338 a 11.965828,11.965828 0 0 1 -11.96583,11.96582 11.965828,11.965828 0 0 1 -11.96582,-11.96582 11.965828,11.965828 0 0 1 11.96582,-11.96583 11.965828,11.965828 0 0 1 11.96583,11.96583 z"
id="circle3383-9-9-1" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.50483704px;line-height:1.25;font-family:'HVD Comic Serif Pro';-inkscape-font-specification:'HVD Comic Serif Pro';letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.33762088"
x="398.61249"
y="282.45093"
id="text1164-7"><tspan
sodipodi:role="line"
id="tspan1162-5"
x="398.61249"
y="282.45093"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.33762088">6</tspan></text>
<path
inkscape:connector-curvature="0"
style="opacity:0.12999998;fill:#cccccc;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 454.75297,279.76111 a 11.965828,11.965828 0 0 1 -11.96583,11.96582 11.965828,11.965828 0 0 1 -11.96583,-11.96582 11.965828,11.965828 0 0 1 11.96583,-11.96583 11.965828,11.965828 0 0 1 11.96583,11.96583 z"
id="circle3369-74-2-3-9" />
<path
inkscape:connector-curvature="0"
style="fill:#ffe6d5;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 453.01342,277.85667 a 11.965828,11.965828 0 0 1 -11.96582,11.96582 11.965828,11.965828 0 0 1 -11.96583,-11.96582 11.965828,11.965828 0 0 1 11.96583,-11.96583 11.965828,11.965828 0 0 1 11.96582,11.96583 z"
id="circle3383-9-9-1-6" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.50483704px;line-height:1.25;font-family:'HVD Comic Serif Pro';-inkscape-font-specification:'HVD Comic Serif Pro';letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.33762088"
x="436.10931"
y="282.6442"
id="text1164-7-2"><tspan
sodipodi:role="line"
id="tspan1162-5-1"
x="436.10931"
y="282.6442"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.33762088">7</tspan></text>
<path
inkscape:connector-curvature="0"
style="opacity:0.12999998;fill:#cccccc;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="M 181.75863,72.709742 A 11.965828,11.965828 0 0 1 169.7928,84.675571 11.965828,11.965828 0 0 1 157.82697,72.709742 11.965828,11.965828 0 0 1 169.7928,60.743918 11.965828,11.965828 0 0 1 181.75863,72.709742 Z"
id="circle3369-74-2-9" />
<path
inkscape:connector-curvature="0"
style="fill:#c6e9af;fill-opacity:1;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 180.01909,70.805306 a 11.965828,11.965828 0 0 1 -11.96584,11.965823 11.965828,11.965828 0 0 1 -11.96582,-11.965823 11.965828,11.965828 0 0 1 11.96582,-11.96583 11.965828,11.965828 0 0 1 11.96584,11.96583 z"
id="circle3383-9-9-7" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.50483704px;line-height:1.25;font-family:'HVD Comic Serif Pro';-inkscape-font-specification:'HVD Comic Serif Pro';letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.33762088"
x="163.11491"
y="75.592842"
id="text1164-5"><tspan
sodipodi:role="line"
id="tspan1162-3"
x="163.11491"
y="75.592842"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.33762088">5</tspan></text>
<path
inkscape:connector-curvature="0"
style="opacity:0.12999998;fill:#cccccc;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 181.93428,35.691303 a 11.965828,11.965828 0 0 1 -11.96583,11.96583 11.965828,11.965828 0 0 1 -11.96582,-11.96583 11.965828,11.965828 0 0 1 11.96582,-11.965826 11.965828,11.965828 0 0 1 11.96583,11.965826 z"
id="circle3369-74-2-3-8" />
<path
inkscape:connector-curvature="0"
style="fill:#c6e9af;fill-opacity:1;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="M 180.19474,33.786868 A 11.965828,11.965828 0 0 1 168.22891,45.752691 11.965828,11.965828 0 0 1 156.26308,33.786868 11.965828,11.965828 0 0 1 168.22891,21.821035 11.965828,11.965828 0 0 1 180.19474,33.786868 Z"
id="circle3383-9-9-1-8" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.50483704px;line-height:1.25;font-family:'HVD Comic Serif Pro';-inkscape-font-specification:'HVD Comic Serif Pro';letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.33762088"
x="163.29057"
y="38.574398"
id="text1164-7-3"><tspan
sodipodi:role="line"
id="tspan1162-5-18"
x="163.29057"
y="38.574398"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.33762088">6</tspan></text>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-5-5-8-6"
transform="matrix(-0.01156786,0.13836407,0.19235173,0.02592354,291.83794,213.12219)">
<path
style="stroke-width:33.2503624"
inkscape:connector-curvature="0"
id="path1478-7-9-6-1-9-4"
d="m 259.38952,227.69252 c 10.74597,-3.57306 21.8601,-6.66839 33.22317,-9.52335 -7.9007,-7.33149 -16.34907,-14.42988 -25.34588,-21.29783 -2.7143,10.7678 -4.31736,19.2532 -7.87729,30.82118 z" />
<path
style="fill:none;stroke-width:10.64900017;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-1-6-7-3"
d="M -1290.985,-56.842867 C -1009.651,-87.186425 -166.94013,-26.843946 317.498,86.173"
sodipodi:nodetypes="cc"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)" />
</g>
<g
id="g986-9-7"
transform="matrix(0.66229252,0,0,0.66229252,101.51073,-84.077752)">
<path
inkscape:connector-curvature="0"
id="circle3383-98-2-3-9"
d="m 373.05928,177.47175 a 37.217743,37.217743 0 0 1 -37.21774,37.21773 37.217743,37.217743 0 0 1 -37.21773,-37.21773 37.217743,37.217743 0 0 1 37.21773,-37.21774 37.217743,37.217743 0 0 1 37.21774,37.21774 z"
style="fill:#ececec;stroke:#666666;stroke-width:6;stroke-miterlimit:10;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="circle3383-81-7-6-2"
d="m 336.07253,177.56778 a 18.387552,18.387552 0 0 1 -18.38756,18.38755 18.387552,18.387552 0 0 1 -18.38755,-18.38755 18.387552,18.387552 0 0 1 18.38755,-18.38756 18.387552,18.387552 0 0 1 18.38756,18.38756 z"
style="fill:#c6e9af;stroke:#666666;stroke-width:4.48476887;stroke-miterlimit:10" />
<path
inkscape:connector-curvature="0"
id="circle3383-5-2-3"
d="M 373.05928,177.47175 A 18.067285,18.067285 0 0 1 354.992,195.53903 18.067285,18.067285 0 0 1 336.92471,177.47175 18.067285,18.067285 0 0 1 354.992,159.40446 18.067285,18.067285 0 0 1 373.05928,177.47175 Z"
style="fill:#ffe6d5;stroke:#666666;stroke-width:4.40665483;stroke-miterlimit:10" />
<g
id="text2753-3-4"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
transform="matrix(0.75080885,0,0,0.71843284,318.45019,114.86566)"
aria-label="4">
<path
id="path130738-8"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
d="m 51.435776,79.530576 -5.881419,8.710632 h 5.881419 z m -0.891969,-4.418032 h 5.965041 v 13.128664 h 2.968583 v 3.888427 h -2.968583 v 3.790867 h -5.073072 v -3.790867 h -9.226302 v -4.599214 z"
inkscape:connector-curvature="0" />
</g>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20.39104462px;line-height:1.25;font-family:'HVD Comic Serif Pro';-inkscape-font-specification:'HVD Comic Serif Pro';letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.50977612"
x="310.09558"
y="183.97423"
id="text1164-7-3-8"><tspan
sodipodi:role="line"
id="tspan1162-5-18-8"
x="310.09558"
y="183.97423"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.50977612">6</tspan></text>
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-5-5-8-6-3"
transform="matrix(-0.13777788,-0.01719548,-0.03373881,0.19113585,269.65539,198.72753)">
<path
style="stroke-width:33.2503624"
inkscape:connector-curvature="0"
id="path1478-7-9-6-1-9-4-3"
d="m 259.38952,227.69252 c 10.74597,-3.57306 21.8601,-6.66839 33.22317,-9.52335 -7.9007,-7.33149 -16.34907,-14.42988 -25.34588,-21.29783 -2.7143,10.7678 -4.31736,19.2532 -7.87729,30.82118 z" />
<path
style="fill:none;stroke-width:10.64900017;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-1-6-7-3-8"
d="M -1290.985,-56.842867 C -1009.651,-87.186425 -166.94013,-26.843946 317.498,86.173"
sodipodi:nodetypes="cc"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)" />
</g>
<g
id="g986"
transform="matrix(0.66229252,0,0,0.66229252,-17.443518,120.86305)">
<path
inkscape:connector-curvature="0"
id="circle3383-98-2"
d="m 373.05928,177.47175 a 37.217743,37.217743 0 0 1 -37.21774,37.21773 37.217743,37.217743 0 0 1 -37.21773,-37.21773 37.217743,37.217743 0 0 1 37.21773,-37.21774 37.217743,37.217743 0 0 1 37.21774,37.21774 z"
style="fill:#ececec;stroke:#666666;stroke-width:6;stroke-miterlimit:10;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="circle3383-81-7"
d="m 336.07253,177.56778 a 18.387552,18.387552 0 0 1 -18.38756,18.38755 18.387552,18.387552 0 0 1 -18.38755,-18.38755 18.387552,18.387552 0 0 1 18.38755,-18.38756 18.387552,18.387552 0 0 1 18.38756,18.38756 z"
style="fill:#c6e9af;stroke:#666666;stroke-width:4.48476887;stroke-miterlimit:10" />
<g
aria-label="1"
transform="matrix(0.76411799,0,0,0.73116807,278.97162,114.29101)"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
id="text2753-0-5">
<path
d="m 44.272152,92.213257 h 4.738584 V 78.764041 l -4.864017,1.003465 v -3.651497 l 4.836143,-1.003465 h 5.100946 v 17.100713 h 4.738584 v 3.707245 h -14.55024 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
id="path130720-2-3"
inkscape:connector-curvature="0" />
</g>
<path
inkscape:connector-curvature="0"
id="circle3383-5"
d="M 373.05928,177.47175 A 18.067285,18.067285 0 0 1 354.992,195.53903 18.067285,18.067285 0 0 1 336.92471,177.47175 18.067285,18.067285 0 0 1 354.992,159.40446 18.067285,18.067285 0 0 1 373.05928,177.47175 Z"
style="fill:#ffe6d5;stroke:#666666;stroke-width:4.40665483;stroke-miterlimit:10" />
<path
inkscape:connector-curvature="0"
id="path130720-6"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.52408123"
d="m 350.19286,181.54614 h 3.55777 v -9.66236 l -3.65194,0.72093 v -2.62336 l 3.63102,-0.72092 h 3.82983 v 12.28571 h 3.55777 v 2.66341 h -10.92445 z" />
</g>
<g
id="g986-9"
transform="matrix(0.66229252,0,0,0.66229252,219.16803,119.89513)">
<path
inkscape:connector-curvature="0"
id="circle3383-98-2-3"
d="m 373.05928,177.47175 a 37.217743,37.217743 0 0 1 -37.21774,37.21773 37.217743,37.217743 0 0 1 -37.21773,-37.21773 37.217743,37.217743 0 0 1 37.21773,-37.21774 37.217743,37.217743 0 0 1 37.21774,37.21774 z"
style="fill:#ececec;stroke:#666666;stroke-width:6;stroke-miterlimit:10;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="circle3383-81-7-6"
d="m 336.07253,177.56778 a 18.387552,18.387552 0 0 1 -18.38756,18.38755 18.387552,18.387552 0 0 1 -18.38755,-18.38755 18.387552,18.387552 0 0 1 18.38755,-18.38756 18.387552,18.387552 0 0 1 18.38756,18.38756 z"
style="fill:#c6e9af;stroke:#666666;stroke-width:4.48476887;stroke-miterlimit:10" />
<g
aria-label="1"
transform="matrix(0.76411799,0,0,0.73116807,278.97162,114.29101)"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
id="text2753-0-5-0">
<path
d="m 44.272152,92.213257 h 4.738584 V 78.764041 l -4.864017,1.003465 v -3.651497 l 4.836143,-1.003465 h 5.100946 v 17.100713 h 4.738584 v 3.707245 h -14.55024 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
id="path130720-2-3-6"
inkscape:connector-curvature="0" />
</g>
<path
inkscape:connector-curvature="0"
id="circle3383-5-2"
d="M 373.05928,177.47175 A 18.067285,18.067285 0 0 1 354.992,195.53903 18.067285,18.067285 0 0 1 336.92471,177.47175 18.067285,18.067285 0 0 1 354.992,159.40446 18.067285,18.067285 0 0 1 373.05928,177.47175 Z"
style="fill:#ffe6d5;stroke:#666666;stroke-width:4.40665483;stroke-miterlimit:10" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20.39104462px;line-height:1.25;font-family:'HVD Comic Serif Pro';-inkscape-font-specification:'HVD Comic Serif Pro';letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.50977612"
x="348.91147"
y="184.66605"
id="text1164-7-2-6"><tspan
sodipodi:role="line"
id="tspan1162-5-1-0"
x="348.91147"
y="184.66605"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.50977612">7</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 36 KiB

View File

@ -0,0 +1,448 @@
<?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 300"
version="1.1"
id="svg3397"
sodipodi:docname="coordinates_x_y.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
width="595.29999"
height="300">
<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="2560"
inkscape:window-height="1376"
id="namedview3399"
showgrid="false"
inkscape:zoom="3.2841796"
inkscape:cx="286.29085"
inkscape:cy="204.12671"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg3397"
inkscape:document-rotation="0" />
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-7-1-2-7-8"
transform="matrix(0.08005549,-0.02783256,0.04451175,0.10979871,375.74588,107.08278)"
inkscape:transform-center-x="24.861215"
inkscape:transform-center-y="12.510135">
<path
style="fill:none;stroke-width:9.11184883;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-3-3-4-5-1"
d="m -2074.9404,653.0807 c 224.4354,-102.32634 229.9029,-99.35984 398.9801,-110.9471"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
style="display:inline;fill:#838383;fill-opacity:1;stroke:none;stroke-width:2.34985375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
d="m -2078.3436,601.58462 53.1848,80.72946 -133.9499,-5.25536 z"
id="path3233-7-7-4-2"
inkscape:transform-center-x="-8.7052541"
inkscape:transform-center-y="-9.3758046" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-7-1-2-7-8-6"
transform="matrix(0.08005549,-0.02783256,0.04451175,0.10979871,418.26729,107.16931)"
inkscape:transform-center-x="24.861215"
inkscape:transform-center-y="12.510135">
<path
style="fill:none;stroke-width:9.11184883;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-3-3-4-5-1-8"
d="m -2074.9404,653.0807 c 224.4354,-102.32634 229.9029,-99.35984 398.9801,-110.9471"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
style="display:inline;fill:#838383;fill-opacity:1;stroke:none;stroke-width:2.34985375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
d="m -2078.3436,601.58462 53.1848,80.72946 -133.9499,-5.25536 z"
id="path3233-7-7-4-2-0"
inkscape:transform-center-x="-8.7052541"
inkscape:transform-center-y="-9.3758046" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-7-1-2-7-8-1"
transform="matrix(0.08005549,-0.02783256,0.04451175,0.10979871,458.75964,106.46145)"
inkscape:transform-center-x="24.861215"
inkscape:transform-center-y="12.510135">
<path
style="fill:none;stroke-width:9.11184883;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-3-3-4-5-1-1"
d="m -2074.9404,653.0807 c 224.4354,-102.32634 229.9029,-99.35984 398.9801,-110.9471"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
style="display:inline;fill:#838383;fill-opacity:1;stroke:none;stroke-width:2.34985375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
d="m -2078.3436,601.58462 53.1848,80.72946 -133.9499,-5.25536 z"
id="path3233-7-7-4-2-08"
inkscape:transform-center-x="-8.7052541"
inkscape:transform-center-y="-9.3758046" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-7-1-2-7-8-6-5"
transform="matrix(0.08005549,-0.02783256,0.04451175,0.10979871,501.28105,106.54798)"
inkscape:transform-center-x="24.861215"
inkscape:transform-center-y="12.510135">
<path
style="fill:none;stroke-width:9.11184883;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-3-3-4-5-1-8-0"
d="m -2074.9404,653.0807 c 224.4354,-102.32634 229.9029,-99.35984 398.9801,-110.9471"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
style="display:inline;fill:#838383;fill-opacity:1;stroke:none;stroke-width:2.34985375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
d="m -2078.3436,601.58462 53.1848,80.72946 -133.9499,-5.25536 z"
id="path3233-7-7-4-2-0-6"
inkscape:transform-center-x="-8.7052541"
inkscape:transform-center-y="-9.3758046" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-7-1-2-7-8-1-4"
transform="matrix(0.08005549,-0.02783256,0.04451175,0.10979871,542.98875,107.12605)"
inkscape:transform-center-x="24.861215"
inkscape:transform-center-y="12.510135">
<path
style="fill:none;stroke-width:9.11184883;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-3-3-4-5-1-1-6"
d="m -2074.9404,653.0807 c 224.4354,-102.32634 229.9029,-99.35984 398.9801,-110.9471"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
style="display:inline;fill:#838383;fill-opacity:1;stroke:none;stroke-width:2.34985375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
d="m -2078.3436,601.58462 53.1848,80.72946 -133.9499,-5.25536 z"
id="path3233-7-7-4-2-08-2"
inkscape:transform-center-x="-8.7052541"
inkscape:transform-center-y="-9.3758046" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-7-1-2-7-8-6-5-5"
transform="matrix(0.08005549,-0.02783256,0.04451175,0.10979871,375.35285,63.977929)"
inkscape:transform-center-x="24.861215"
inkscape:transform-center-y="12.510135">
<path
style="fill:none;stroke-width:9.11184883;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-3-3-4-5-1-8-0-8"
d="m -2074.9404,653.0807 c 224.4354,-102.32634 229.9029,-99.35984 398.9801,-110.9471"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
style="display:inline;fill:#838383;fill-opacity:1;stroke:none;stroke-width:2.34985375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
d="m -2078.3436,601.58462 53.1848,80.72946 -133.9499,-5.25536 z"
id="path3233-7-7-4-2-0-6-6"
inkscape:transform-center-x="-8.7052541"
inkscape:transform-center-y="-9.3758046" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-7-1-2-7-8-6-5-5-2"
transform="matrix(0.08005549,-0.02783256,0.04451175,0.10979871,375.02971,25.434548)"
inkscape:transform-center-x="24.861215"
inkscape:transform-center-y="12.510135">
<path
style="fill:none;stroke-width:9.11184883;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-3-3-4-5-1-8-0-8-8"
d="m -2074.9404,653.0807 c 224.4354,-102.32634 229.9029,-99.35984 398.9801,-110.9471"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
style="display:inline;fill:#838383;fill-opacity:1;stroke:none;stroke-width:2.34985375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
d="m -2078.3436,601.58462 53.1848,80.72946 -133.9499,-5.25536 z"
id="path3233-7-7-4-2-0-6-6-4"
inkscape:transform-center-x="-8.7052541"
inkscape:transform-center-y="-9.3758046" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-7-1-2-7-8-6-5-5-7"
transform="matrix(0.08005549,-0.02783256,0.04451175,0.10979871,374.82782,-15.003042)"
inkscape:transform-center-x="24.861215"
inkscape:transform-center-y="12.510135">
<path
style="fill:none;stroke-width:9.11184883;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-3-3-4-5-1-8-0-8-2"
d="m -2074.9404,653.0807 c 224.4354,-102.32634 229.9029,-99.35984 398.9801,-110.9471"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
style="display:inline;fill:#838383;fill-opacity:1;stroke:none;stroke-width:2.34985375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
d="m -2078.3436,601.58462 53.1848,80.72946 -133.9499,-5.25536 z"
id="path3233-7-7-4-2-0-6-6-40"
inkscape:transform-center-x="-8.7052541"
inkscape:transform-center-y="-9.3758046" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-7-1-2-7-8-6-5-5-2-6"
transform="matrix(0.08005549,-0.02783256,0.04451175,0.10979871,374.50468,-55.546422)"
inkscape:transform-center-x="24.861215"
inkscape:transform-center-y="12.510135">
<path
style="fill:none;stroke-width:9.11184883;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-3-3-4-5-1-8-0-8-8-2"
d="m -2074.9404,653.0807 c 224.4354,-102.32634 229.9029,-99.35984 398.9801,-110.9471"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
style="display:inline;fill:#838383;fill-opacity:1;stroke:none;stroke-width:2.34985375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
d="m -2078.3436,601.58462 53.1848,80.72946 -133.9499,-5.25536 z"
id="path3233-7-7-4-2-0-6-6-4-9"
inkscape:transform-center-x="-8.7052541"
inkscape:transform-center-y="-9.3758046" />
</g>
<g
transform="matrix(0.49503815,0,0,0.49503815,236.39,131.31039)"
style="fill:#c6e9af;stroke:#666666"
id="g2749-48">
<path
inkscape:connector-curvature="0"
id="circle3369-0"
d="m 80.040796,90.58149 a 24.6,24.6 0 0 1 -24.6,24.6 24.6,24.6 0 0 1 -24.6,-24.6 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
style="opacity:0.12999998;fill:#c6e9af;stroke:#666666;stroke-width:6;stroke-miterlimit:10" />
<path
inkscape:connector-curvature="0"
id="circle3383-81"
d="m 76.107595,84.367409 a 24.6,24.6 0 0 1 -24.6,24.600001 24.6,24.6 0 0 1 -24.6,-24.600001 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
style="fill:#c6e9af;stroke:#666666;stroke-width:6;stroke-miterlimit:10" />
</g>
<g
id="text2753-0"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
transform="matrix(0.50606963,0,0,0.48424714,236.24866,131.16775)"
aria-label="1">
<path
inkscape:connector-curvature="0"
id="path130720-2"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
d="m 44.272152,92.213257 h 4.738584 V 78.764041 l -4.864017,1.003465 v -3.651497 l 4.836143,-1.003465 h 5.100946 v 17.100713 h 4.738584 v 3.707245 h -14.55024 z" />
</g>
<g
transform="matrix(0.49503815,0,0,0.49503815,237.353,90.00374)"
style="fill:#c6e9af;stroke:#666666"
id="g2749-4-9">
<path
inkscape:connector-curvature="0"
id="circle3369-5-7"
d="m 80.040796,90.58149 a 24.6,24.6 0 0 1 -24.6,24.6 24.6,24.6 0 0 1 -24.6,-24.6 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
style="opacity:0.12999998;fill:#c6e9af;stroke:#666666;stroke-width:6;stroke-miterlimit:10" />
<path
inkscape:connector-curvature="0"
id="circle3383-6-5"
d="m 76.107595,84.367409 a 24.6,24.6 0 0 1 -24.6,24.600001 24.6,24.6 0 0 1 -24.6,-24.600001 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
style="fill:#c6e9af;stroke:#666666;stroke-width:6;stroke-miterlimit:10" />
</g>
<g
id="text2753-2-6"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
transform="matrix(0.50606963,0,0,0.48424714,237.21167,89.8611)"
aria-label="2">
<path
inkscape:connector-curvature="0"
id="path130728-4"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
d="m 49.150106,91.976327 h 9.156616 v 3.944175 H 43.185065 v -3.944175 l 7.595671,-6.703702 q 1.017402,-0.919843 1.505197,-1.797874 0.487796,-0.878032 0.487796,-1.825749 0,-1.463386 -0.989528,-2.355355 -0.975591,-0.891969 -2.606221,-0.891969 -1.254331,0 -2.745592,0.543544 -1.49126,0.529606 -3.191575,1.588819 v -4.57134 q 1.811811,-0.599291 3.581812,-0.905905 1.77,-0.320552 3.470316,-0.320552 3.735119,0 5.797796,1.644568 2.076615,1.644567 2.076615,4.585277 0,1.700315 -0.878032,3.177638 -0.878031,1.463386 -3.693308,3.930237 z" />
</g>
<g
transform="matrix(0.49503815,0,0,0.49503815,237.47235,49.80512)"
style="fill:#c6e9af;stroke:#666666"
id="g2749-7-7">
<path
id="circle3369-7-9"
d="m 80.040796,90.58149 a 24.6,24.6 0 0 1 -24.6,24.6 24.6,24.6 0 0 1 -24.6,-24.6 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
style="opacity:0.12999998;fill:#c6e9af;stroke:#666666;stroke-width:6;stroke-miterlimit:10"
inkscape:connector-curvature="0" />
<path
id="circle3383-4-7"
d="m 76.107595,84.367409 a 24.6,24.6 0 0 1 -24.6,24.600001 24.6,24.6 0 0 1 -24.6,-24.600001 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
style="fill:#c6e9af;stroke:#666666;stroke-width:6;stroke-miterlimit:10"
inkscape:connector-curvature="0" />
</g>
<g
id="text2753-1-4"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
transform="matrix(0.50606963,0,0,0.48424714,237.33101,49.66247)"
aria-label="3">
<path
id="path130733-9"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
d="m 54.223178,84.701208 q 2.104489,0.543543 3.191575,1.895433 1.101024,1.337953 1.101024,3.414568 0,3.094016 -2.369292,4.71071 -2.369292,1.602756 -6.912757,1.602756 -1.602757,0 -3.21945,-0.264803 -1.602756,-0.250866 -3.177638,-0.766536 v -4.139292 q 1.505197,0.752598 2.98252,1.142835 1.49126,0.376299 2.926772,0.376299 2.132363,0 3.261261,-0.738662 1.142835,-0.738661 1.142835,-2.118425 0,-1.421575 -1.170709,-2.1463 -1.156772,-0.738662 -3.428505,-0.738662 h -2.1463 v -3.456378 h 2.257796 q 2.020867,0 3.010395,-0.627166 0.989528,-0.641102 0.989528,-1.937245 0,-1.198583 -0.961654,-1.853622 -0.961654,-0.65504 -2.717717,-0.65504 -1.296143,0 -2.620159,0.292678 -1.324016,0.292677 -2.634095,0.864094 v -3.930237 q 1.58882,-0.445984 3.149765,-0.668976 1.560945,-0.222993 3.066142,-0.222993 4.055671,0 6.0626,1.337954 2.020867,1.324016 2.020867,3.999922 0,1.825748 -0.961654,2.996457 -0.961654,1.156772 -2.84315,1.630631 z"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0.49503815,0,0,0.49503815,238.57743,10.037505)"
style="fill:#c6e9af;stroke:#666666"
id="g2749-8-0">
<path
id="circle3369-74-6"
d="m 80.040796,90.58149 a 24.6,24.6 0 0 1 -24.6,24.6 24.6,24.6 0 0 1 -24.6,-24.6 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
style="opacity:0.12999998;fill:#c6e9af;stroke:#666666;stroke-width:6;stroke-miterlimit:10"
inkscape:connector-curvature="0" />
<path
id="circle3383-9-0"
d="m 76.107595,84.367409 a 24.6,24.6 0 0 1 -24.6,24.600001 24.6,24.6 0 0 1 -24.6,-24.600001 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
style="fill:#c6e9af;stroke:#666666;stroke-width:6;stroke-miterlimit:10"
inkscape:connector-curvature="0" />
</g>
<g
id="text2753-3-8"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
transform="matrix(0.50606963,0,0,0.48424714,238.43609,9.8948608)"
aria-label="4">
<path
id="path130738-5"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
d="m 51.435776,79.530576 -5.881419,8.710632 h 5.881419 z m -0.891969,-4.418032 h 5.965041 v 13.128664 h 2.968583 v 3.888427 h -2.968583 v 3.790867 h -5.073072 v -3.790867 h -9.226302 v -4.599214 z"
inkscape:connector-curvature="0" />
</g>
<path
style="opacity:0.12999998;fill:#cccccc;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 313.8047,216.38268 a 11.965828,11.965828 0 0 1 -11.96582,11.96583 11.965828,11.965828 0 0 1 -11.96584,-11.96583 11.965828,11.965828 0 0 1 11.96584,-11.96583 11.965828,11.965828 0 0 1 11.96582,11.96583 z"
id="circle3369"
inkscape:connector-curvature="0" />
<path
style="fill:#ffe6d5;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 311.89153,213.36006 a 11.965828,11.965828 0 0 1 -11.96583,11.96581 11.965828,11.965828 0 0 1 -11.96582,-11.96581 11.965828,11.965828 0 0 1 11.96582,-11.96584 11.965828,11.965828 0 0 1 11.96583,11.96584 z"
id="circle3383"
inkscape:connector-curvature="0" />
<path
d="m 296.74728,216.0585 h 2.35628 v -6.39932 l -2.41866,0.47747 v -1.73743 l 2.4048,-0.47746 h 2.53647 v 8.13674 h 2.35629 v 1.76395 h -7.23518 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.34709507"
id="path130720"
inkscape:connector-curvature="0" />
<path
style="opacity:0.12999998;fill:#cccccc;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 356.7998,217.07021 a 11.965828,11.965828 0 0 1 -11.96584,11.96583 11.965828,11.965828 0 0 1 -11.96581,-11.96583 11.965828,11.965828 0 0 1 11.96581,-11.96582 11.965828,11.965828 0 0 1 11.96584,11.96582 z"
id="circle3369-5"
inkscape:connector-curvature="0" />
<path
style="fill:#ffe6d5;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 354.88662,214.04759 a 11.965828,11.965828 0 0 1 -11.96582,11.96582 11.965828,11.965828 0 0 1 -11.96583,-11.96582 11.965828,11.965828 0 0 1 11.96583,-11.96583 11.965828,11.965828 0 0 1 11.96582,11.96583 z"
id="circle3383-6"
inkscape:connector-curvature="0" />
<path
d="m 342.16796,216.63329 h 4.55317 v 1.87669 h -7.51931 v -1.87669 l 3.77698,-3.18971 q 0.5059,-0.43766 0.74847,-0.85544 0.24255,-0.41778 0.24255,-0.86872 0,-0.6963 -0.49204,-1.12071 -0.48512,-0.42441 -1.29596,-0.42441 -0.62372,0 -1.36526,0.25863 -0.74154,0.25199 -1.58703,0.75597 v -2.1751 q 0.90093,-0.28514 1.78107,-0.43103 0.88014,-0.15253 1.72564,-0.15253 1.85731,0 2.88298,0.78251 1.03261,0.7825 1.03261,2.18174 0,0.80902 -0.43661,1.51195 -0.4366,0.6963 -1.83651,1.87006 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.34709507"
id="path130728"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="opacity:0.12999998;fill:#cccccc;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 399.64542,217.10665 a 11.965828,11.965828 0 0 1 -11.96583,11.96582 11.965828,11.965828 0 0 1 -11.96583,-11.96582 11.965828,11.965828 0 0 1 11.96583,-11.96583 11.965828,11.965828 0 0 1 11.96583,11.96583 z"
id="circle3369-7" />
<path
inkscape:connector-curvature="0"
style="fill:#ffe6d5;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 397.73225,214.08402 a 11.965828,11.965828 0 0 1 -11.96583,11.96582 11.965828,11.965828 0 0 1 -11.96582,-11.96582 11.965828,11.965828 0 0 1 11.96582,-11.96583 11.965828,11.965828 0 0 1 11.96583,11.96583 z"
id="circle3383-4" />
<g
id="text2753-1"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
transform="matrix(0.49725508,0,0,0.4758127,360.57344,172.90622)"
aria-label="3">
<path
id="path130733"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
d="m 54.223178,84.701208 q 2.104489,0.543543 3.191575,1.895433 1.101024,1.337953 1.101024,3.414568 0,3.094016 -2.369292,4.71071 -2.369292,1.602756 -6.912757,1.602756 -1.602757,0 -3.21945,-0.264803 -1.602756,-0.250866 -3.177638,-0.766536 v -4.139292 q 1.505197,0.752598 2.98252,1.142835 1.49126,0.376299 2.926772,0.376299 2.132363,0 3.261261,-0.738662 1.142835,-0.738661 1.142835,-2.118425 0,-1.421575 -1.170709,-2.1463 -1.156772,-0.738662 -3.428505,-0.738662 h -2.1463 v -3.456378 h 2.257796 q 2.020867,0 3.010395,-0.627166 0.989528,-0.641102 0.989528,-1.937245 0,-1.198583 -0.961654,-1.853622 -0.961654,-0.65504 -2.717717,-0.65504 -1.296143,0 -2.620159,0.292678 -1.324016,0.292677 -2.634095,0.864094 v -3.930237 q 1.58882,-0.445984 3.149765,-0.668976 1.560945,-0.222993 3.066142,-0.222993 4.055671,0 6.0626,1.337954 2.020867,1.324016 2.020867,3.999922 0,1.825748 -0.961654,2.996457 -0.961654,1.156772 -2.84315,1.630631 z"
inkscape:connector-curvature="0" />
</g>
<path
inkscape:connector-curvature="0"
style="opacity:0.12999998;fill:#cccccc;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 440.58661,219.42815 a 11.965828,11.965828 0 0 1 -11.96584,11.96584 11.965828,11.965828 0 0 1 -11.96582,-11.96584 11.965828,11.965828 0 0 1 11.96582,-11.96582 11.965828,11.965828 0 0 1 11.96584,11.96582 z"
id="circle3369-74" />
<path
inkscape:connector-curvature="0"
style="fill:#ffe6d5;stroke:#666666;stroke-width:2.9184947;stroke-miterlimit:10"
d="m 438.67343,214.40553 a 11.965828,11.965828 0 0 1 -11.96583,11.96583 11.965828,11.965828 0 0 1 -11.96582,-11.96583 11.965828,11.965828 0 0 1 11.96582,-11.96583 11.965828,11.965828 0 0 1 11.96583,11.96583 z"
id="circle3383-9" />
<g
id="text2753-3"
style="font-style:normal;font-weight:normal;font-size:28.54299927px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.71357697"
transform="matrix(0.49725508,0,0,0.4758127,401.51462,173.22773)"
aria-label="4">
<path
id="path130738"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#4d4d4d;stroke-width:0.71357697"
d="m 51.435776,79.530576 -5.881419,8.710632 h 5.881419 z m -0.891969,-4.418032 h 5.965041 v 13.128664 h 2.968583 v 3.888427 h -2.968583 v 3.790867 h -5.073072 v -3.790867 h -9.226302 v -4.599214 z"
inkscape:connector-curvature="0" />
</g>
<g
id="g2760-5"
transform="matrix(0.48641575,0,0,0.48641575,236.94645,176.64029)">
<g
id="g2749-5"
style="fill:#ececec;stroke:#666666"
transform="translate(-3.3630029,-9.4412283)">
<path
style="opacity:0.12999998;fill:#ececec;stroke:#666666;stroke-width:6;stroke-miterlimit:10"
d="m 80.040796,90.58149 a 24.6,24.6 0 0 1 -24.6,24.6 24.6,24.6 0 0 1 -24.6,-24.6 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
id="circle3369-4"
inkscape:connector-curvature="0" />
<path
style="fill:#ececec;stroke:#666666;stroke-width:6;stroke-miterlimit:10"
d="m 76.107595,84.367409 a 24.6,24.6 0 0 1 -24.6,24.600001 24.6,24.6 0 0 1 -24.6,-24.600001 24.6,24.6 0 0 1 24.6,-24.600001 24.6,24.6 0 0 1 24.6,24.600001 z"
id="circle3383-98"
inkscape:connector-curvature="0" />
</g>
<text
id="text73945"
y="86.54644"
x="36.733299"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:54.46308517px;line-height:1.25;font-family:'HVD Comic Serif Pro';-inkscape-font-specification:'HVD Comic Serif Pro';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.36157715"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:32.67784882px;line-height:0;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:1.36157715"
y="86.54644"
x="36.733299"
id="tspan73943"
sodipodi:role="line">0</tspan></text>
</g>
<path
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 230.37847,6.3212864 V 284.06729"
id="path14958"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 467.86206,243.58957 h -277.746"
id="path14958-2"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 27 KiB

View File

@ -38,8 +38,8 @@
inkscape:window-height="1376"
id="namedview8219"
showgrid="false"
inkscape:zoom="3.317655"
inkscape:cx="297.64999"
inkscape:zoom="1.926119"
inkscape:cx="281.32831"
inkscape:cy="156"
inkscape:window-x="0"
inkscape:window-y="27"
@ -50,67 +50,50 @@
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none">
<g
id="g8213"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none">
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none"
transform="matrix(1,0,0,-1,0,311.89999)">
<circle
opacity=".14"
stroke="#000"
stroke-width="6"
stroke-miterlimit="10"
cx="320"
cy="145.2"
r="120.4"
id="circle8169"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
style="opacity:0.13999999;stroke:#000000;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<circle
fill="#CEE7CC"
stroke="#808285"
stroke-width="6"
stroke-miterlimit="10"
cx="311.1"
cx="311.10001"
cy="141.7"
r="120.4"
id="circle8171"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
style="fill:#cee7cc;stroke:#808285;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<circle
opacity=".14"
stroke="#000"
stroke-width="6"
stroke-miterlimit="10"
cx="118.3"
cy="218.2"
r="72.4"
r="72.400002"
id="circle8173"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
style="opacity:0.13999999;stroke:#000000;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<circle
fill="#CAEBFC"
stroke="#808285"
stroke-width="6"
stroke-miterlimit="10"
cx="111.1"
cy="213.6"
r="72.4"
cy="213.60001"
r="72.400002"
id="circle8175"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
style="fill:#caebfc;stroke:#808285;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<circle
opacity=".14"
stroke="#000"
stroke-width="6"
stroke-miterlimit="10"
cx="482.6"
cx="482.60001"
cy="239.2"
r="47.3"
r="47.299999"
id="circle8177"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
style="opacity:0.13999999;stroke:#000000;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<circle
fill="#F8F7CB"
stroke="#808285"
stroke-width="6"
stroke-miterlimit="10"
cx="478"
cy="236.2"
r="47.3"
r="47.299999"
id="circle8179"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
style="fill:#f8f7cb;stroke:#808285;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<circle
stroke-miterlimit="10"
cx="479.90143"
@ -126,140 +109,101 @@
id="circle8183"
style="fill:#39bced;stroke:#008dd2;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<circle
fill="#54B948"
stroke="#00873A"
stroke-width="6"
stroke-miterlimit="10"
cx="120.2"
cy="208.9"
cy="208.89999"
r="11.6"
id="circle8185"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
style="fill:#54b948;stroke:#00873a;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<circle
fill="#CAEBFC"
stroke="#808285"
stroke-width="6"
stroke-miterlimit="10"
cx="241.3"
cy="100.6"
r="27"
id="circle8187"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
style="fill:#caebfc;stroke:#808285;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<circle
fill="#39BCED"
stroke="#008DD2"
stroke-width="6"
stroke-miterlimit="10"
cx="241.5"
cy="100.5"
r="11.6"
id="circle8189"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
style="fill:#39bced;stroke:#008dd2;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<circle
fill="#CAEBFC"
stroke="#808285"
stroke-width="6"
stroke-miterlimit="10"
cx="294.7"
cy="144.6"
cx="294.70001"
cy="144.60001"
r="27"
id="circle8191"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
style="fill:#caebfc;stroke:#808285;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<circle
fill="#54B948"
stroke="#00873A"
stroke-width="6"
stroke-miterlimit="10"
cx="294.7"
cx="294.70001"
cy="144.8"
r="11.6"
id="circle8193"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
style="fill:#54b948;stroke:#00873a;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<circle
fill="#CAEBFC"
stroke="#808285"
stroke-width="6"
stroke-miterlimit="10"
cx="284"
cy="218.2"
r="27"
id="circle8195"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
style="fill:#caebfc;stroke:#808285;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<circle
fill="#F8F7CB"
stroke="#808285"
stroke-width="6"
stroke-miterlimit="10"
cx="372.5"
cy="134.7"
r="27.8"
r="27.799999"
id="circle8197"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
style="fill:#f8f7cb;stroke:#808285;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<circle
fill="#8967AC"
stroke="#651C5F"
stroke-width="6"
stroke-miterlimit="10"
cx="373.5"
cy="134.2"
r="11.6"
id="circle8199"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
style="fill:#8967ac;stroke:#651c5f;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<circle
fill="#F8F7CB"
stroke="#808285"
stroke-width="6"
stroke-miterlimit="10"
cx="355.5"
cy="202.7"
r="27.8"
r="27.799999"
id="circle8201"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
style="fill:#f8f7cb;stroke:#808285;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<circle
fill="#F58235"
stroke="#E76524"
stroke-width="6"
stroke-miterlimit="10"
cx="355.5"
cy="202.7"
r="11.6"
id="circle8203"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
style="fill:#f58235;stroke:#e76524;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<path
fill="#808285"
d="M84.5 184.4s1.2-1.8 3.4-4.8c2.1-3.1 5.4-7.4 9.3-12.5 2.1-2.5 4.3-5.2 6.7-7.9 1.3-1.4 2.5-2.7 3.8-4.2.7-.7 1.3-1.4 2-2.2l2.1-2.1c1.4-1.4 2.9-2.8 4.4-4.3 1.5-1.4 3.1-2.7 4.7-4.1l2.4-2.1c.8-.7 1.7-1.3 2.5-2l5.1-3.9c1.8-1.2 3.5-2.4 5.3-3.6.9-.6 1.8-1.2 2.6-1.8.9-.5 1.8-1.1 2.7-1.6 1.8-1.1 3.6-2.2 5.4-3.1 1.8-.9 3.7-1.8 5.5-2.7.9-.4 1.8-.9 2.7-1.3.9-.4 1.8-.8 2.7-1.1 1.8-.8 3.5-1.5 5.2-2.2l5.1-1.8c1.6-.5 3.2-1.2 4.7-1.6 3.1-.9 5.9-1.7 8.4-2.4 2.6-.5 4.8-1 6.6-1.4.8-.2 1.3-.3 1.3-.3l2.2 11.4c1.5-1.5 3.1-2.8 4.7-4.1 1.6-1.4 3.2-2.7 4.9-4.1 3.4-2.6 6.9-5.1 10.5-7.7-3.9-1.8-8-3.7-12.2-5.4-2.1-.8-4.2-1.6-6.4-2.3-2.2-.8-4.3-1.6-6.6-2.2l2.2 11.4s-.5.1-1.3.3c-1.9.4-4.1.9-6.7 1.5-2.6.7-5.5 1.5-8.6 2.4-1.6.4-3.2 1.1-4.8 1.6-1.7.6-3.4 1.2-5.2 1.8-1.7.7-3.5 1.5-5.3 2.3-.9.4-1.8.8-2.8 1.2-.9.4-1.8.9-2.7 1.3-1.8.9-3.7 1.9-5.6 2.8-1.9 1-3.7 2.1-5.5 3.2-.9.5-1.9 1.1-2.8 1.6l-2.7 1.8c-1.8 1.2-3.6 2.5-5.4 3.7-1.7 1.3-3.5 2.7-5.2 4-.9.7-1.7 1.3-2.6 2l-2.4 2.1c-1.6 1.4-3.3 2.8-4.8 4.2-1.5 1.5-3 2.9-4.5 4.3-.7.7-1.5 1.4-2.2 2.1-.7.7-1.4 1.5-2 2.2-1.3 1.4-2.6 2.9-3.9 4.2-2.5 2.8-4.7 5.6-6.8 8.1-4 5.1-7.3 9.5-9.4 12.6-2.2 3.1-3.4 4.9-3.4 4.9l2.7 1.8zM132.3 203.5s1.6-1.3 4.3-3.4c2.7-2.2 6.7-5.2 11.4-8.8 9.6-7.1 23-15.8 37.3-22.7 14.3-6.9 29.6-11.6 41.3-14.1 2.9-.6 5.6-1.1 8-1.6 2.4-.5 4.5-.7 6.2-1 .8-.1 1.3-.2 1.3-.2l1.6 11.5 2.4-2c.8-.7 1.7-1.3 2.5-1.9l5.1-3.9c3.5-2.5 7.1-4.9 10.7-7.4-3.9-1.9-7.9-3.9-12-5.7l-6.2-2.6c-1-.4-2.1-.9-3.2-1.3l-3-1.4 1.6 11.4s-.5.1-1.3.2c-1.7.3-3.9.5-6.3 1s-5.1 1-8.1 1.6c-11.8 2.5-27.4 7.4-41.9 14.4-14.6 7-28.1 15.9-37.8 23.1-4.8 3.6-8.8 6.7-11.5 8.9-2.7 2.2-4.3 3.5-4.3 3.5l1.9 2.4zM136.2 244s1.4-1 3.9-2.6c1.2-.8 2.7-1.9 4.5-3 1.8-1.1 3.7-2.3 5.9-3.7 8.7-5.3 20.9-11.6 33.8-16 12.8-4.5 26.4-6.7 36.5-7.3 1.3-.1 2.5-.2 3.6-.2 1.2 0 2.3 0 3.3-.1 2.1 0 3.9-.1 5.4 0h1.2l-.3 11.6c1.8-1 3.6-2.1 5.4-3.1 1.9-.9 3.7-1.9 5.7-2.8 1-.5 1.9-1 2.9-1.4l3-1.3 6-2.5-5.3-4-2.7-2c-.9-.6-1.8-1.3-2.8-1.9-1.9-1.3-3.8-2.5-5.7-3.8-1.9-1.2-3.9-2.3-6-3.5l-.3 11.6H233c-1.5-.1-3.4 0-5.5 0-1.1 0-2.2 0-3.4.1-1.2 0-2.4.2-3.7.2-10.4.7-24.2 2.8-37.3 7.5-13.1 4.5-25.5 10.9-34.4 16.3-2.2 1.4-4.2 2.6-6 3.8-1.8 1.1-3.3 2.2-4.5 3-2.5 1.7-3.9 2.7-3.9 2.7l1.9 2.4zM476.4 199.6s-.6-1-1.6-2.8c-.5-.9-1.1-2-1.8-3.2-.8-1.2-1.7-2.5-2.7-4-.2-.4-.5-.7-.8-1.1-.3-.4-.6-.7-.9-1.1-.6-.7-1.2-1.5-1.8-2.3-1.2-1.6-2.7-3.1-4.2-4.7-3-3.2-6.6-6.3-10.3-9.2-7.4-5.8-15.7-10.2-22-13.2-3.2-1.4-5.9-2.6-7.8-3.3-.7-.3-1.1-.4-1.1-.4l4.2-10.8c-9.3 1.1-18.1 3-26.5 5.5 6.4 6 12.1 12.4 17 19l4.2-10.8s.4.1 1 .4c1.9.7 4.5 1.9 7.6 3.3 6.2 2.9 14.2 7.3 21.4 12.8 3.6 2.8 7 5.8 9.9 8.9 1.4 1.6 2.9 3 4.1 4.6.6.8 1.2 1.5 1.8 2.2.3.4.6.7.8 1 .2.4.5.7.7 1.1.9 1.4 1.8 2.7 2.6 3.8.7 1.2 1.3 2.2 1.7 3.1 1 1.7 1.5 2.7 1.5 2.7l3-1.5zM476 248.3s-1-.8-2.7-2.2c-1.7-1.4-4.2-3.3-7.3-5.5-6.1-4.3-14.8-9.3-23.8-13.6-9-4.3-18.2-8-25.2-10.5-3.5-1.3-6.5-2.2-8.5-2.9-.4-.1-.7-.2-.8-.3-.2 0-.2-.1-.2-.1l3.5-11c-8.9 1.8-17.6 4-26 6.7 6.5 5.9 12.5 12.1 18 18.4l3.5-11s.1 0 .2.1c.2.1.5.2.8.3 2 .7 5 1.6 8.4 2.9 6.9 2.5 16.1 6.1 24.9 10.4 8.8 4.2 17.4 9.2 23.4 13.3 3 2.1 5.4 3.9 7.1 5.3 1.6 1.4 2.6 2.1 2.6 2.1l2.1-2.4z"
d="m 84.5,184.4 c 0,0 1.2,-1.8 3.4,-4.8 2.1,-3.1 5.4,-7.4 9.3,-12.5 2.1,-2.5 4.3,-5.2 6.7,-7.9 1.3,-1.4 2.5,-2.7 3.8,-4.2 0.7,-0.7 1.3,-1.4 2,-2.2 l 2.1,-2.1 c 1.4,-1.4 2.9,-2.8 4.4,-4.3 1.5,-1.4 3.1,-2.7 4.7,-4.1 l 2.4,-2.1 c 0.8,-0.7 1.7,-1.3 2.5,-2 l 5.1,-3.9 c 1.8,-1.2 3.5,-2.4 5.3,-3.6 0.9,-0.6 1.8,-1.2 2.6,-1.8 0.9,-0.5 1.8,-1.1 2.7,-1.6 1.8,-1.1 3.6,-2.2 5.4,-3.1 1.8,-0.9 3.7,-1.8 5.5,-2.7 0.9,-0.4 1.8,-0.9 2.7,-1.3 0.9,-0.4 1.8,-0.8 2.7,-1.1 1.8,-0.8 3.5,-1.5 5.2,-2.2 l 5.1,-1.8 c 1.6,-0.5 3.2,-1.2 4.7,-1.6 3.1,-0.9 5.9,-1.7 8.4,-2.4 2.6,-0.5 4.8,-1 6.6,-1.4 0.8,-0.2 1.3,-0.3 1.3,-0.3 l 2.2,11.4 c 1.5,-1.5 3.1,-2.8 4.7,-4.1 1.6,-1.4 3.2,-2.7 4.9,-4.1 3.4,-2.6 6.9,-5.1 10.5,-7.7 -3.9,-1.8 -8,-3.7 -12.2,-5.4 -2.1,-0.8 -4.2,-1.6 -6.4,-2.3 -2.2,-0.8 -4.3,-1.6 -6.6,-2.2 l 2.2,11.4 c 0,0 -0.5,0.1 -1.3,0.3 -1.9,0.4 -4.1,0.9 -6.7,1.5 -2.6,0.7 -5.5,1.5 -8.6,2.4 -1.6,0.4 -3.2,1.1 -4.8,1.6 -1.7,0.6 -3.4,1.2 -5.2,1.8 -1.7,0.7 -3.5,1.5 -5.3,2.3 -0.9,0.4 -1.8,0.8 -2.8,1.2 -0.9,0.4 -1.8,0.9 -2.7,1.3 -1.8,0.9 -3.7,1.9 -5.6,2.8 -1.9,1 -3.7,2.1 -5.5,3.2 -0.9,0.5 -1.9,1.1 -2.8,1.6 l -2.7,1.8 c -1.8,1.2 -3.6,2.5 -5.4,3.7 -1.7,1.3 -3.5,2.7 -5.2,4 -0.9,0.7 -1.7,1.3 -2.6,2 l -2.4,2.1 c -1.6,1.4 -3.3,2.8 -4.8,4.2 -1.5,1.5 -3,2.9 -4.5,4.3 -0.7,0.7 -1.5,1.4 -2.2,2.1 -0.7,0.7 -1.4,1.5 -2,2.2 -1.3,1.4 -2.6,2.9 -3.9,4.2 -2.5,2.8 -4.7,5.6 -6.8,8.1 -4,5.1 -7.3,9.5 -9.4,12.6 -2.2,3.1 -3.4,4.9 -3.4,4.9 z m 47.8,19.1 c 0,0 1.6,-1.3 4.3,-3.4 2.7,-2.2 6.7,-5.2 11.4,-8.8 9.6,-7.1 23,-15.8 37.3,-22.7 14.3,-6.9 29.6,-11.6 41.3,-14.1 2.9,-0.6 5.6,-1.1 8,-1.6 2.4,-0.5 4.5,-0.7 6.2,-1 0.8,-0.1 1.3,-0.2 1.3,-0.2 l 1.6,11.5 2.4,-2 c 0.8,-0.7 1.7,-1.3 2.5,-1.9 l 5.1,-3.9 c 3.5,-2.5 7.1,-4.9 10.7,-7.4 -3.9,-1.9 -7.9,-3.9 -12,-5.7 l -6.2,-2.6 c -1,-0.4 -2.1,-0.9 -3.2,-1.3 l -3,-1.4 1.6,11.4 c 0,0 -0.5,0.1 -1.3,0.2 -1.7,0.3 -3.9,0.5 -6.3,1 -2.4,0.5 -5.1,1 -8.1,1.6 -11.8,2.5 -27.4,7.4 -41.9,14.4 -14.6,7 -28.1,15.9 -37.8,23.1 -4.8,3.6 -8.8,6.7 -11.5,8.9 -2.7,2.2 -4.3,3.5 -4.3,3.5 z m 3.9,40.5 c 0,0 1.4,-1 3.9,-2.6 1.2,-0.8 2.7,-1.9 4.5,-3 1.8,-1.1 3.7,-2.3 5.9,-3.7 8.7,-5.3 20.9,-11.6 33.8,-16 12.8,-4.5 26.4,-6.7 36.5,-7.3 1.3,-0.1 2.5,-0.2 3.6,-0.2 1.2,0 2.3,0 3.3,-0.1 2.1,0 3.9,-0.1 5.4,0 h 1.2 l -0.3,11.6 c 1.8,-1 3.6,-2.1 5.4,-3.1 1.9,-0.9 3.7,-1.9 5.7,-2.8 1,-0.5 1.9,-1 2.9,-1.4 l 3,-1.3 6,-2.5 -5.3,-4 -2.7,-2 c -0.9,-0.6 -1.8,-1.3 -2.8,-1.9 -1.9,-1.3 -3.8,-2.5 -5.7,-3.8 -1.9,-1.2 -3.9,-2.3 -6,-3.5 L 234.2,208 H 233 c -1.5,-0.1 -3.4,0 -5.5,0 -1.1,0 -2.2,0 -3.4,0.1 -1.2,0 -2.4,0.2 -3.7,0.2 -10.4,0.7 -24.2,2.8 -37.3,7.5 -13.1,4.5 -25.5,10.9 -34.4,16.3 -2.2,1.4 -4.2,2.6 -6,3.8 -1.8,1.1 -3.3,2.2 -4.5,3 -2.5,1.7 -3.9,2.7 -3.9,2.7 z m 340.2,-44.4 c 0,0 -0.6,-1 -1.6,-2.8 -0.5,-0.9 -1.1,-2 -1.8,-3.2 -0.8,-1.2 -1.7,-2.5 -2.7,-4 -0.2,-0.4 -0.5,-0.7 -0.8,-1.1 -0.3,-0.4 -0.6,-0.7 -0.9,-1.1 -0.6,-0.7 -1.2,-1.5 -1.8,-2.3 -1.2,-1.6 -2.7,-3.1 -4.2,-4.7 -3,-3.2 -6.6,-6.3 -10.3,-9.2 -7.4,-5.8 -15.7,-10.2 -22,-13.2 -3.2,-1.4 -5.9,-2.6 -7.8,-3.3 -0.7,-0.3 -1.1,-0.4 -1.1,-0.4 l 4.2,-10.8 c -9.3,1.1 -18.1,3 -26.5,5.5 6.4,6 12.1,12.4 17,19 l 4.2,-10.8 c 0,0 0.4,0.1 1,0.4 1.9,0.7 4.5,1.9 7.6,3.3 6.2,2.9 14.2,7.3 21.4,12.8 3.6,2.8 7,5.8 9.9,8.9 1.4,1.6 2.9,3 4.1,4.6 0.6,0.8 1.2,1.5 1.8,2.2 0.3,0.4 0.6,0.7 0.8,1 0.2,0.4 0.5,0.7 0.7,1.1 0.9,1.4 1.8,2.7 2.6,3.8 0.7,1.2 1.3,2.2 1.7,3.1 1,1.7 1.5,2.7 1.5,2.7 z m -0.4,48.7 c 0,0 -1,-0.8 -2.7,-2.2 -1.7,-1.4 -4.2,-3.3 -7.3,-5.5 -6.1,-4.3 -14.8,-9.3 -23.8,-13.6 -9,-4.3 -18.2,-8 -25.2,-10.5 -3.5,-1.3 -6.5,-2.2 -8.5,-2.9 -0.4,-0.1 -0.7,-0.2 -0.8,-0.3 -0.2,0 -0.2,-0.1 -0.2,-0.1 l 3.5,-11 c -8.9,1.8 -17.6,4 -26,6.7 6.5,5.9 12.5,12.1 18,18.4 l 3.5,-11 c 0,0 0.1,0 0.2,0.1 0.2,0.1 0.5,0.2 0.8,0.3 2,0.7 5,1.6 8.4,2.9 6.9,2.5 16.1,6.1 24.9,10.4 8.8,4.2 17.4,9.2 23.4,13.3 3,2.1 5.4,3.9 7.1,5.3 1.6,1.4 2.6,2.1 2.6,2.1 z"
id="path8205"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
style="fill:#808285;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<circle
fill="#F58235"
stroke="#E76524"
stroke-width="6"
stroke-miterlimit="10"
cx="486.5"
cy="256.8"
cy="256.79999"
r="11.6"
id="circle8207"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
style="fill:#f58235;stroke:#e76524;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<circle
fill="#F58235"
stroke="#E76524"
stroke-width="6"
stroke-miterlimit="10"
cx="284"
cy="218.2"
r="11.6"
id="circle8209"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
style="fill:#f58235;stroke:#e76524;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<circle
fill="#F58235"
stroke="#E76524"
stroke-width="6"
stroke-miterlimit="10"
cx="123.7"
cy="249.5"
r="11.6"
id="circle8211"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
style="fill:#f58235;stroke:#e76524;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
</g>
</switch>
</svg>

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -1 +1,115 @@
<svg xmlns:i="&amp;ns_ai;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 595.3 312"><g i:extraneous="self"><circle r="57.8" cy="86.1" cx="299.8" stroke-miterlimit="10" opacity=".14" stroke="#000" stroke-width="6"/><circle r="57.8" cy="84.5" cx="295.5" stroke-miterlimit="10" fill="#cee7cc" stroke="#808285" stroke-width="6"/><circle r="58.7" cy="221.2" cx="160.5" stroke-miterlimit="10" opacity=".14" stroke="#000" stroke-width="6"/><circle r="58.7" cy="217.5" cx="154.7" stroke-miterlimit="10" fill="#caebfc" stroke="#808285" stroke-width="6"/><circle r="60.2" cy="223.2" cx="439.1" stroke-miterlimit="10" opacity=".14" stroke="#000" stroke-width="6"/><circle r="60.2" cy="219.3" cx="433.2" stroke-miterlimit="10" fill="#f8f7cb" stroke="#808285" stroke-width="6"/><circle r="28.2" cy="82.6" cx="266.3" stroke-miterlimit="10" fill="#caebfc" stroke="#808285" stroke-width="6"/><circle r="28.9" cy="84.4" cx="323.4" stroke-miterlimit="10" fill="#f8f7cb" stroke="#808285" stroke-width="6"/><path d="M417.4 163.44s-.49-.853-1.451-2.362a177.438 177.438 0 00-4.163-6.204c-1.771-2.53-3.97-5.318-6.39-8.284-2.519-2.956-5.247-5.99-8.163-8.905a141.988 141.988 0 00-8.887-8.125c-2.964-2.407-5.809-4.625-8.303-6.377-2.494-1.752-4.649-3.137-6.254-4.076-.21-.079-.32-.168-.43-.257-.109-.089-.208-.079-.318-.168l-.22-.178 5.793-10.052c-4.956-.29-9.981-.27-14.834.434-2.377.348-4.733.894-6.98 1.53-2.236.734-4.362 1.558-6.259 2.66a31.592 31.592 0 015.02 3.802c1.458 1.457 2.817 2.925 3.977 4.413 2.34 3.175 4.194 6.501 5.859 9.948l5.793-10.052s.11.089.209.079c.1-.01.11.089.22.178s.318.168.428.257c1.496.85 3.551 2.245 6.045 3.997 2.395 1.762 5.23 3.88 8.094 6.298 2.865 2.417 5.86 5.122 8.667 7.947 2.807 2.826 5.525 5.76 7.933 8.627 2.41 2.867 4.51 5.665 6.27 8.096 1.76 2.431 3.082 4.506 4.043 6.015.96 1.508 1.452 2.362 1.452 2.362zM184.283 164.203s.423-.843.999-2.203c.333-.734.756-1.577 1.17-2.52.513-.952 1.117-2.013 1.711-3.174 2.576-4.66 6.444-10.547 11.055-16.001 4.611-5.454 9.785-10.258 13.995-13.566 1.02-.899 2.07-1.5 2.91-2.18.84-.682 1.59-1.254 2.258-1.618.57-.355.85-.582.85-.582l6.518 9.533a86.193 86.193 0 0112.76-21.384c-8.669-1.397-17.922-1.534-27.551-.33l6.518 9.533-.95.591c-.659.464-1.409 1.036-2.348 1.727-.84.681-1.88 1.381-3 2.29-4.3 3.416-9.763 8.347-14.465 13.91-4.8 5.573-8.848 11.677-11.506 16.547-.693 1.17-1.288 2.33-1.801 3.282-.513.952-.927 1.895-1.26 2.63-.666 1.468-1.09 2.31-1.09 2.31z" fill="#808285"/></g></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:ns1="&amp;#38;ns_ai;"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 595.3 312"
version="1.1"
id="svg2847"
sodipodi:docname="coproduct_external.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata2853">
<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="defs2851" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1738"
inkscape:window-height="901"
id="namedview2849"
showgrid="false"
inkscape:zoom="2.1096755"
inkscape:cx="297.64999"
inkscape:cy="156"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="0"
inkscape:current-layer="svg2847" />
<g
ns1:extraneous="self"
id="g2845"
transform="matrix(1,0,0,-1,0,310.1)">
<circle
r="57.799999"
cy="86.099998"
cx="299.79999"
stroke-miterlimit="10"
id="circle2827"
style="opacity:0.13999999;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
r="57.799999"
cy="84.5"
cx="295.5"
stroke-miterlimit="10"
id="circle2829"
style="fill:#cee7cc;stroke:#808285;stroke-width:6;stroke-miterlimit:10" />
<circle
r="58.700001"
cy="221.2"
cx="160.5"
stroke-miterlimit="10"
id="circle2831"
style="opacity:0.13999999;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
r="58.700001"
cy="217.5"
cx="154.7"
stroke-miterlimit="10"
id="circle2833"
style="fill:#caebfc;stroke:#808285;stroke-width:6;stroke-miterlimit:10" />
<circle
r="60.200001"
cy="223.2"
cx="439.10001"
stroke-miterlimit="10"
id="circle2835"
style="opacity:0.13999999;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
r="60.200001"
cy="219.3"
cx="433.20001"
stroke-miterlimit="10"
id="circle2837"
style="fill:#f8f7cb;stroke:#808285;stroke-width:6;stroke-miterlimit:10" />
<circle
r="28.200001"
cy="82.599998"
cx="266.29999"
stroke-miterlimit="10"
id="circle2839"
style="fill:#caebfc;stroke:#808285;stroke-width:6;stroke-miterlimit:10" />
<circle
r="28.9"
cy="84.400002"
cx="323.39999"
stroke-miterlimit="10"
id="circle2841"
style="fill:#f8f7cb;stroke:#808285;stroke-width:6;stroke-miterlimit:10" />
<path
d="m 417.4,163.44 c 0,0 -0.49,-0.853 -1.451,-2.362 a 177.438,177.438 0 0 0 -4.163,-6.204 c -1.771,-2.53 -3.97,-5.318 -6.39,-8.284 -2.519,-2.956 -5.247,-5.99 -8.163,-8.905 a 141.988,141.988 0 0 0 -8.887,-8.125 c -2.964,-2.407 -5.809,-4.625 -8.303,-6.377 -2.494,-1.752 -4.649,-3.137 -6.254,-4.076 -0.21,-0.079 -0.32,-0.168 -0.43,-0.257 -0.109,-0.089 -0.208,-0.079 -0.318,-0.168 l -0.22,-0.178 5.793,-10.052 c -4.956,-0.29 -9.981,-0.27 -14.834,0.434 -2.377,0.348 -4.733,0.894 -6.98,1.53 -2.236,0.734 -4.362,1.558 -6.259,2.66 a 31.592,31.592 0 0 1 5.02,3.802 c 1.458,1.457 2.817,2.925 3.977,4.413 2.34,3.175 4.194,6.501 5.859,9.948 l 5.793,-10.052 c 0,0 0.11,0.089 0.209,0.079 0.1,-0.01 0.11,0.089 0.22,0.178 0.11,0.089 0.318,0.168 0.428,0.257 1.496,0.85 3.551,2.245 6.045,3.997 2.395,1.762 5.23,3.88 8.094,6.298 2.865,2.417 5.86,5.122 8.667,7.947 2.807,2.826 5.525,5.76 7.933,8.627 2.41,2.867 4.51,5.665 6.27,8.096 1.76,2.431 3.082,4.506 4.043,6.015 0.96,1.508 1.452,2.362 1.452,2.362 z m -233.117,0.763 c 0,0 0.423,-0.843 0.999,-2.203 0.333,-0.734 0.756,-1.577 1.17,-2.52 0.513,-0.952 1.117,-2.013 1.711,-3.174 2.576,-4.66 6.444,-10.547 11.055,-16.001 4.611,-5.454 9.785,-10.258 13.995,-13.566 1.02,-0.899 2.07,-1.5 2.91,-2.18 0.84,-0.682 1.59,-1.254 2.258,-1.618 0.57,-0.355 0.85,-0.582 0.85,-0.582 l 6.518,9.533 a 86.193,86.193 0 0 1 12.76,-21.384 c -8.669,-1.397 -17.922,-1.534 -27.551,-0.33 l 6.518,9.533 -0.95,0.591 c -0.659,0.464 -1.409,1.036 -2.348,1.727 -0.84,0.681 -1.88,1.381 -3,2.29 -4.3,3.416 -9.763,8.347 -14.465,13.91 -4.8,5.573 -8.848,11.677 -11.506,16.547 -0.693,1.17 -1.288,2.33 -1.801,3.282 -0.513,0.952 -0.927,1.895 -1.26,2.63 -0.666,1.468 -1.09,2.31 -1.09,2.31 z"
id="path2843"
inkscape:connector-curvature="0"
style="fill:#808285" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 9.3 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -40,211 +40,249 @@
inkscape:window-height="1376"
id="namedview8682"
showgrid="false"
inkscape:zoom="1.71"
inkscape:cx="297.64999"
inkscape:cy="183.04094"
inkscape:zoom="2.8079735"
inkscape:cx="304.35338"
inkscape:cy="147.786"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg8680" />
inkscape:current-layer="text8678-3" />
<ellipse
cy="49.774296"
cx="183.96703"
cy="-113.72879"
cx="416.51904"
stroke-miterlimit="10"
rx="29.048471"
ry="28.48292"
opacity="0.14"
stroke="#000000"
stroke-width="2.98567"
id="ellipse8632" />
id="ellipse8632"
transform="scale(1,-1)"
style="opacity:0.13999999;stroke:#000000;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="48.985752"
cx="181.80623"
cy="-114.51733"
cx="414.35828"
stroke-miterlimit="10"
rx="29.048471"
ry="28.48292"
fill="#cee7cc"
stroke="#808285"
stroke-width="2.98567"
id="ellipse8634" />
id="ellipse8634"
transform="scale(1,-1)"
style="fill:#cee7cc;stroke:#808285;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="116.34947"
cx="113.95921"
cy="-47.15361"
cx="346.51123"
stroke-miterlimit="10"
rx="29.501013"
ry="28.92638"
opacity="0.14"
stroke="#000000"
stroke-width="2.98567"
id="ellipse8636" />
id="ellipse8636"
transform="scale(1,-1)"
style="opacity:0.13999999;stroke:#000000;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="114.52618"
cx="111.04417"
cy="-48.976906"
cx="343.59619"
stroke-miterlimit="10"
rx="29.501013"
ry="28.92638"
fill="#caebfc"
stroke="#808285"
stroke-width="2.98567"
id="ellipse8638" />
id="ellipse8638"
transform="scale(1,-1)"
style="fill:#caebfc;stroke:#808285;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="117.33477"
cx="253.97536"
cy="-46.168312"
cx="486.5274"
stroke-miterlimit="10"
rx="30.254747"
ry="29.665482"
opacity="0.14"
stroke="#000000"
stroke-width="2.98567"
id="ellipse8640" />
id="ellipse8640"
transform="scale(1,-1)"
style="opacity:0.13999999;stroke:#000000;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="115.4131"
cx="251.01039"
cy="-48.089981"
cx="483.56244"
stroke-miterlimit="10"
rx="30.254747"
ry="29.665482"
fill="#f8f7cb"
stroke="#808285"
stroke-width="2.98567"
id="ellipse8642" />
id="ellipse8642"
transform="scale(1,-1)"
style="fill:#f8f7cb;stroke:#808285;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="48.049389"
cx="167.13115"
cy="-115.4537"
cx="399.68317"
stroke-miterlimit="10"
rx="14.172594"
ry="13.896629"
fill="#caebfc"
stroke="#808285"
stroke-width="2.98567"
id="ellipse8644" />
id="ellipse8644"
transform="scale(1,-1)"
style="fill:#caebfc;stroke:#808285;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="48.93631"
cx="195.82797"
cy="-114.56677"
cx="428.38"
stroke-miterlimit="10"
rx="14.524236"
ry="14.241208"
fill="#f8f7cb"
stroke="#808285"
stroke-width="2.98567"
id="ellipse8646" />
id="ellipse8646"
transform="scale(1,-1)"
style="fill:#f8f7cb;stroke:#808285;stroke-width:2.98567009;stroke-miterlimit:10" />
<path
d="m 243.06997,87.886225 c 0,0 -0.24721,-0.420758 -0.73002,-1.164401 a 87.338135,87.338135 0 0 0 -2.09219,-3.056804 c -0.88995,-1.24714 -1.99533,-2.620911 -3.21119,-4.082466 -1.2658,-1.45651 -2.63655,-2.951363 -4.10264,-4.387693 a 70.868018,70.868018 0 0 0 -4.46589,-4.004267 c -1.48981,-1.186095 -2.91958,-2.27936 -4.17278,-3.142571 -1.25369,-0.862706 -2.33637,-1.545303 -3.14307,-2.007935 -0.10595,-0.03935 -0.16094,-0.08324 -0.21593,-0.127136 -0.0555,-0.04389 -0.10494,-0.03885 -0.16043,-0.08274 l -0.11049,-0.08778 2.91151,-4.953244 c -2.49075,-0.142776 -5.01631,-0.133694 -7.4556,0.21391 -1.19417,0.171028 -2.37824,0.440435 -3.50733,0.753229 -1.12404,0.362235 -2.19258,0.768363 -3.1456,1.311212 a 15.851592,15.851592 0 0 1 2.52254,1.873737 c 0.73304,0.717912 1.41615,1.44087 1.99885,2.174422 1.17651,1.564475 2.10783,3.203616 2.9443,4.902289 l 2.91151,-4.953748 c 0,0 0.0555,0.04389 0.10493,0.03885 0.0505,-0.005 0.0555,0.04389 0.111,0.08829 0.055,0.04389 0.15992,0.08274 0.21492,0.126127 0.75171,0.419245 1.78494,1.106887 3.03813,1.970098 1.20376,0.868255 2.62798,1.912079 4.06784,3.103219 1.43986,1.191139 2.94531,2.524045 4.35591,3.916483 1.4106,1.392438 2.7763,2.838353 3.98711,4.250971 1.21082,1.412618 2.26624,2.791434 3.15064,3.989637 0.88491,1.198203 1.54884,2.220333 2.03216,2.963975 a 33.428596,33.428596 0 0 1 0.72951,1.164401 z m -117.158,0.375857 c 0,0 0.2124,-0.415713 0.50148,-1.085697 0.1675,-0.361732 0.3804,-0.77694 0.58825,-1.241591 0.25781,-0.469191 0.56152,-0.992364 0.86019,-1.56397 1.29456,-2.297017 3.23842,-5.197425 5.55562,-7.885435 2.3172,-2.687506 4.91793,-5.055155 7.03333,-6.68471 0.51308,-0.442957 1.04029,-0.739102 1.46206,-1.074599 0.42227,-0.336001 0.79913,-0.61802 1.13514,-0.79712 0.28655,-0.175064 0.42731,-0.287064 0.42731,-0.287064 l 3.27576,4.697963 a 42.308414,42.308414 0 0 1 6.41228,-10.537625 c -4.35591,-0.688652 -9.00645,-0.756255 -13.84568,-0.162956 l 3.27576,4.697964 -0.47726,0.2911 c -0.33146,0.228542 -0.70833,0.510561 -1.18054,0.851103 -0.42228,0.335496 -0.94444,0.681083 -1.50747,1.12858 -2.1608,1.683034 -4.90683,4.113241 -7.26943,6.854729 -2.41255,2.746029 -4.44723,5.754401 -5.78265,8.153833 -0.34862,0.576147 -0.64729,1.148257 -0.90509,1.617448 -0.25831,0.469191 -0.46616,0.933337 -0.63366,1.295572 -0.33449,0.723463 -0.54739,1.139176 -0.54739,1.139176 z"
fill="#808285"
d="m 475.62202,75.616859 c 0,0 -0.24721,0.420758 -0.73002,1.164401 a 87.338135,87.338135 0 0 1 -2.09219,3.056804 c -0.88995,1.24714 -1.99533,2.620911 -3.21119,4.082466 -1.2658,1.45651 -2.63655,2.951363 -4.10264,4.387693 a 70.868018,70.868018 0 0 1 -4.46589,4.004267 c -1.48981,1.186095 -2.91958,2.27936 -4.17278,3.142571 -1.25369,0.862709 -2.33637,1.545299 -3.14307,2.007939 -0.10595,0.0394 -0.16094,0.0832 -0.21593,0.12713 -0.0555,0.0439 -0.10494,0.0388 -0.16043,0.0827 l -0.11049,0.0878 2.91151,4.95325 c -2.49075,0.14277 -5.01631,0.13369 -7.4556,-0.21391 -1.19417,-0.17103 -2.37824,-0.44044 -3.50733,-0.75323 -1.12404,-0.36224 -2.19258,-0.76837 -3.1456,-1.31121 a 15.851592,15.851592 0 0 0 2.52254,-1.87374 c 0.73304,-0.71791 1.41615,-1.44087 1.99885,-2.17442 1.17651,-1.564479 2.10783,-3.20362 2.9443,-4.902293 l 2.91151,4.953753 c 0,0 0.0555,-0.0439 0.10493,-0.0388 0.0505,0.005 0.0555,-0.0439 0.111,-0.0883 0.055,-0.0439 0.15992,-0.0827 0.21492,-0.12613 0.75171,-0.419247 1.78494,-1.106889 3.03813,-1.9701 1.20376,-0.868255 2.62798,-1.912079 4.06784,-3.103219 1.43986,-1.191139 2.94531,-2.524045 4.35591,-3.916483 1.4106,-1.392438 2.7763,-2.838353 3.98711,-4.250971 1.21082,-1.412618 2.26624,-2.791434 3.15064,-3.989637 0.88491,-1.198203 1.54884,-2.220333 2.03216,-2.963975 a 33.428596,33.428596 0 0 0 0.72951,-1.164401 z m -117.158,-0.375857 c 0,0 0.2124,0.415713 0.50148,1.085697 0.1675,0.361732 0.3804,0.77694 0.58825,1.241591 0.25781,0.469191 0.56152,0.992364 0.86019,1.56397 1.29456,2.297017 3.23842,5.197425 5.55562,7.885435 2.3172,2.687506 4.91793,5.055155 7.03333,6.68471 0.51308,0.442957 1.04029,0.739102 1.46206,1.074599 0.42227,0.336001 0.79913,0.61802 1.13514,0.79712 0.28655,0.175064 0.42731,0.287064 0.42731,0.287064 l 3.27576,-4.697963 a 42.308414,42.308414 0 0 0 6.41228,10.537625 c -4.35591,0.68865 -9.00645,0.75626 -13.84568,0.16296 l 3.27576,-4.69797 -0.47726,-0.2911 c -0.33146,-0.22854 -0.70833,-0.51056 -1.18054,-0.8511 -0.42228,-0.335497 -0.94444,-0.681084 -1.50747,-1.128581 -2.1608,-1.683034 -4.90683,-4.113241 -7.26943,-6.854729 -2.41255,-2.746029 -4.44723,-5.754401 -5.78265,-8.153833 -0.34862,-0.576147 -0.64729,-1.148257 -0.90509,-1.617448 -0.25831,-0.469191 -0.46616,-0.933337 -0.63366,-1.295572 -0.33449,-0.723463 -0.54739,-1.139176 -0.54739,-1.139176 z"
id="path8648"
style="stroke-width:0.504506" />
style="fill:#808285;stroke-width:0.50450599"
inkscape:connector-curvature="0" />
<ellipse
cy="48.283623"
cx="408.12823"
cx="181.27425"
stroke-miterlimit="10"
rx="29.048471"
ry="28.48292"
opacity="0.14"
stroke="#000000"
stroke-width="2.98567"
id="ellipse8650" />
id="ellipse8650"
style="opacity:0.13999999;stroke:#000000;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="47.495064"
cx="405.96741"
cx="179.11342"
stroke-miterlimit="10"
rx="29.048471"
ry="28.48292"
fill="#cee7cc"
stroke="#808285"
stroke-width="2.98567"
id="ellipse8652" />
id="ellipse8652"
style="fill:#cee7cc;stroke:#808285;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="114.85828"
cx="338.1199"
cx="111.26591"
stroke-miterlimit="10"
rx="29.501013"
ry="28.92638"
opacity="0.14"
stroke="#000000"
stroke-width="2.98567"
id="ellipse8654" />
id="ellipse8654"
style="opacity:0.13999999;stroke:#000000;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="113.03498"
cx="335.20535"
cx="108.35136"
stroke-miterlimit="10"
rx="29.501013"
ry="28.92638"
fill="#caebfc"
stroke="#808285"
stroke-width="2.98567"
id="ellipse8656" />
id="ellipse8656"
style="fill:#caebfc;stroke:#808285;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="115.84409"
cx="478.13657"
cx="251.28258"
stroke-miterlimit="10"
rx="30.254747"
ry="29.665482"
opacity="0.14"
stroke="#000000"
stroke-width="2.98567"
id="ellipse8658" />
id="ellipse8658"
style="opacity:0.13999999;stroke:#000000;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="113.92243"
cx="475.1716"
cx="248.31761"
stroke-miterlimit="10"
rx="30.254747"
ry="29.665482"
fill="#f8f7cb"
stroke="#808285"
stroke-width="2.98567"
id="ellipse8660" />
id="ellipse8660"
style="fill:#f8f7cb;stroke:#808285;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="46.558708"
cx="391.29236"
cx="164.43837"
stroke-miterlimit="10"
rx="14.172594"
ry="13.896629"
fill="#caebfc"
stroke="#808285"
stroke-width="2.98567"
id="ellipse8662" />
id="ellipse8662"
style="fill:#caebfc;stroke:#808285;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="47.445625"
cx="419.98917"
cx="193.13518"
stroke-miterlimit="10"
rx="14.524236"
ry="14.241208"
fill="#f8f7cb"
stroke="#808285"
stroke-width="2.98567"
id="ellipse8664" />
id="ellipse8664"
style="fill:#f8f7cb;stroke:#808285;stroke-width:2.98567009;stroke-miterlimit:10" />
<path
d="m 376.7676,55.92184 c 0,0 -0.45204,0.19676 -1.25622,0.59129 a 89.797604,89.797604 0 0 0 -3.31713,1.7244 c -1.35712,0.73961 -2.86459,1.67546 -4.47245,2.71071 -1.60837,1.08419 -3.26718,2.26675 -4.87504,3.54769 a 70.925027,70.925027 0 0 0 -4.52341,3.94221 c -1.35712,1.33089 -2.61334,2.61183 -3.61832,3.74546 -1.00498,1.13312 -1.80916,2.11893 -2.3621,2.85803 -0.0505,0.0984 -0.1009,0.14782 -0.15085,0.19676 -0.0505,0.0494 -0.0505,0.0989 -0.1009,0.14832 l -0.0999,0.0984 -4.7242,-3.35093 c -0.40209,2.41457 -0.65333,4.87858 -0.55294,7.29314 0.0505,1.18257 0.2008,2.36563 0.40209,3.49876 0.25125,1.13362 0.55294,2.21781 1.00498,3.20361 a 15.6957,15.6957 0 0 1 2.16131,-2.26725 c 0.80368,-0.64072 1.60786,-1.23201 2.41204,-1.72491 1.70877,-0.9853 3.46798,-1.7244 5.27714,-2.36512 l -4.7242,-3.35094 c 0,0 0.0504,-0.0494 0.0504,-0.0984 0,-0.0494 0.0505,-0.0494 0.1004,-0.0989 0.0505,-0.0489 0.1009,-0.14782 0.15085,-0.19676 0.50248,-0.69016 1.30667,-1.62652 2.31164,-2.75965 1.00498,-1.08468 2.21126,-2.36563 3.56838,-3.64657 1.35712,-1.28144 2.86459,-2.61183 4.4225,-3.84434 1.55792,-1.2315 3.16628,-2.41406 4.7242,-3.4488 1.55792,-1.03525 3.06589,-1.92217 4.37256,-2.66127 1.30667,-0.73911 2.41204,-1.28145 3.21623,-1.67497 0.80418,-0.39452 1.25622,-0.59178 1.25622,-0.59178 z m 57.29326,2.95692 c 0,0 0.4021,0.2462 1.05543,0.59077 0.35215,0.19727 0.75373,0.44397 1.20628,0.69017 0.45254,0.29564 0.95503,0.64072 1.50797,0.9853 2.21125,1.4782 4.97544,3.64657 7.48788,6.16002 2.51295,2.51295 4.67425,5.2726 6.13177,7.49041 0.40209,0.54184 0.65334,1.08418 0.95453,1.52765 0.30169,0.44346 0.55294,0.83748 0.70379,1.18256 0.15084,0.29564 0.25124,0.44346 0.25124,0.44346 l -5.07584,2.75965 a 43.290688,43.290688 0 0 1 10.10173,7.2437 c 1.10538,-4.18841 1.60786,-8.7219 1.45752,-13.5021 l -5.07634,2.75965 -0.25125,-0.49291 c -0.20079,-0.34508 -0.45203,-0.7391 -0.75373,-1.232 -0.30169,-0.44346 -0.60288,-0.9853 -1.00498,-1.57709 -1.50797,-2.26674 -3.71922,-5.17421 -6.28211,-7.7366 -2.56289,-2.61183 -5.42798,-4.87858 -7.73963,-6.40623 -0.55294,-0.39402 -1.10588,-0.7391 -1.55792,-1.03423 -0.45254,-0.29615 -0.90508,-0.54235 -1.25622,-0.73961 a 36.323454,36.323454 0 0 1 -1.10588,-0.64072 z"
fill="#808285"
d="m 149.91361,55.92184 c 0,0 -0.45204,0.19676 -1.25622,0.59129 a 89.797604,89.797604 0 0 0 -3.31713,1.7244 c -1.35712,0.73961 -2.86459,1.67546 -4.47245,2.71071 -1.60837,1.08419 -3.26718,2.26675 -4.87504,3.54769 a 70.925027,70.925027 0 0 0 -4.52341,3.94221 c -1.35712,1.33089 -2.61334,2.61183 -3.61832,3.74546 -1.00498,1.13312 -1.80916,2.11893 -2.3621,2.85803 -0.0505,0.0984 -0.1009,0.14782 -0.15085,0.19676 -0.0505,0.0494 -0.0505,0.0989 -0.1009,0.14832 l -0.0999,0.0984 -4.7242,-3.35093 c -0.40209,2.41457 -0.65333,4.87858 -0.55294,7.29314 0.0505,1.18257 0.2008,2.36563 0.40209,3.49876 0.25125,1.13362 0.55294,2.21781 1.00498,3.20361 a 15.6957,15.6957 0 0 1 2.16131,-2.26725 c 0.80368,-0.64072 1.60786,-1.23201 2.41204,-1.72491 1.70877,-0.9853 3.46798,-1.7244 5.27714,-2.36512 l -4.7242,-3.35094 c 0,0 0.0504,-0.0494 0.0504,-0.0984 0,-0.0494 0.0505,-0.0494 0.1004,-0.0989 0.0505,-0.0489 0.1009,-0.14782 0.15085,-0.19676 0.50248,-0.69016 1.30667,-1.62652 2.31164,-2.75965 1.00498,-1.08468 2.21126,-2.36563 3.56838,-3.64657 1.35712,-1.28144 2.86459,-2.61183 4.4225,-3.84434 1.55792,-1.2315 3.16628,-2.41406 4.7242,-3.4488 1.55792,-1.03525 3.06589,-1.92217 4.37256,-2.66127 1.30667,-0.73911 2.41204,-1.28145 3.21623,-1.67497 0.80418,-0.39452 1.25622,-0.59178 1.25622,-0.59178 z m 57.29326,2.95692 c 0,0 0.4021,0.2462 1.05543,0.59077 0.35215,0.19727 0.75373,0.44397 1.20628,0.69017 0.45254,0.29564 0.95503,0.64072 1.50797,0.9853 2.21125,1.4782 4.97544,3.64657 7.48788,6.16002 2.51295,2.51295 4.67425,5.2726 6.13177,7.49041 0.40209,0.54184 0.65334,1.08418 0.95453,1.52765 0.30169,0.44346 0.55294,0.83748 0.70379,1.18256 0.15084,0.29564 0.25124,0.44346 0.25124,0.44346 l -5.07584,2.75965 a 43.290688,43.290688 0 0 1 10.10173,7.2437 c 1.10538,-4.18841 1.60786,-8.7219 1.45752,-13.5021 l -5.07634,2.75965 -0.25125,-0.49291 c -0.20079,-0.34508 -0.45203,-0.7391 -0.75373,-1.232 -0.30169,-0.44346 -0.60288,-0.9853 -1.00498,-1.57709 -1.50797,-2.26674 -3.71922,-5.17421 -6.28211,-7.7366 -2.56289,-2.61183 -5.42798,-4.87858 -7.73963,-6.40623 -0.55294,-0.39402 -1.10588,-0.7391 -1.55792,-1.03423 -0.45254,-0.29615 -0.90508,-0.54235 -1.25622,-0.73961 a 36.323454,36.323454 0 0 1 -1.10588,-0.64072 z"
id="path8666"
style="stroke-width:0.504506" />
<g
aria-label="AND"
style="font-weight:400;font-size:20.67840004px;line-height:1.25;font-family:sans-serif;letter-spacing:0;word-spacing:0;fill:#7e7e7e;stroke-width:0.51689899"
id="text8674">
<path
d="m 394.33544,161.12455 h -6.07832 l -0.9592,2.74635 h -3.90749 l 5.58357,-15.07464 h 4.63447 l 5.58357,15.07464 h -3.90749 z m -5.10902,-2.79684 h 4.12962 l -2.05976,-5.99754 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:0.51689899"
id="path83904" />
<path
d="m 401.19122,148.79626 h 4.34166 l 5.4826,10.3392 v -10.3392 h 3.68536 v 15.07464 h -4.34166 l -5.4826,-10.3392 v 10.3392 h -3.68536 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:0.51689899"
id="path83906" />
<path
d="m 422.38456,151.73445 v 9.19825 h 1.39337 q 2.38286,0 3.63488,-1.18133 1.2621,-1.18133 1.2621,-3.43294 0,-2.2415 -1.25201,-3.41274 -1.25201,-1.17124 -3.64497,-1.17124 z m -3.8873,-2.93819 h 4.09934 q 3.43293,0 5.10901,0.49475 1.68618,0.48465 2.88771,1.65589 1.06017,1.01978 1.57511,2.35257 0.51494,1.33278 0.51494,3.01896 0,1.70637 -0.51494,3.04926 -0.51494,1.33279 -1.57511,2.35257 -1.21162,1.17124 -2.9079,1.66599 -1.69627,0.48465 -5.08882,0.48465 h -4.09934 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:0.51689899"
id="path83908" />
</g>
style="fill:#808285;stroke-width:0.50450599"
inkscape:connector-curvature="0" />
<g
aria-label="OR"
style="font-weight:400;font-size:21.88019943px;line-height:1.25;font-family:sans-serif;letter-spacing:0;word-spacing:0;fill:#7e7e7e;stroke-width:0.54709399"
id="text8678">
<path
d="m 171.88125,151.35075 q -1.88033,0 -2.91665,1.38888 -1.03631,1.38888 -1.03631,3.91023 0,2.51066 1.03631,3.89954 1.03632,1.38888 2.91665,1.38888 1.89102,0 2.92733,-1.38888 1.03632,-1.38888 1.03632,-3.89954 0,-2.52135 -1.03632,-3.91023 -1.03631,-1.38888 -2.92733,-1.38888 z m 0,-2.98075 q 3.84613,0 6.0256,2.20084 2.17948,2.20084 2.17948,6.07902 0,3.86749 -2.17948,6.06833 -2.17947,2.20084 -6.0256,2.20084 -3.83544,0 -6.0256,-2.20084 -2.17947,-2.20084 -2.17947,-6.06833 0,-3.87818 2.17947,-6.07902 2.19016,-2.20084 6.0256,-2.20084 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:0.54709399"
id="path83911" />
<path
d="m 189.03926,155.73106 q 1.29273,0 1.84828,-0.48077 0.56623,-0.48076 0.56623,-1.58118 0,-1.08974 -0.56623,-1.55982 -0.55555,-0.47008 -1.84828,-0.47008 h -1.73076 v 4.09185 z m -1.73076,2.84186 v 6.03629 h -4.11322 v -15.95075 h 6.28201 q 3.15169,0 4.61536,1.05768 1.47434,1.05769 1.47434,3.344 0,1.58118 -0.76922,2.59613 -0.75854,1.01495 -2.29699,1.49572 0.84401,0.19231 1.5064,0.87606 0.67307,0.67308 1.35682,2.05127 l 2.2329,4.52989 h -4.38032 l -1.94443,-3.96365 q -0.5876,-1.19658 -1.19657,-1.63461 -0.59829,-0.43803 -1.60256,-0.43803 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:0.54709399"
id="path83913" />
id="text8678"
transform="matrix(0.54720232,0,0,0.54720232,319.34192,73.623613)">
<g
aria-label="COPRODUCT"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:28.69952393px;line-height:1.25;font-family:'HVD Comic Serif Pro';-inkscape-font-specification:'HVD Comic Serif Pro';letter-spacing:0px;word-spacing:0px;fill:#666666;fill-opacity:1;stroke:none;stroke-width:0.39253342"
id="text10008">
<path
d="m 97.819617,171.73737 q -1.485425,0.77074 -3.09697,1.16312 -1.611546,0.39237 -3.363226,0.39237 -5.227013,0 -8.281943,-2.91479 -3.054929,-2.92881 -3.054929,-7.93161 0,-5.01681 3.054929,-7.9316 3.05493,-2.92881 8.281943,-2.92881 1.75168,0 3.363226,0.39237 1.611545,0.39238 3.09697,1.16312 v 4.33015 q -1.499438,-1.02298 -2.956836,-1.49944 -1.457398,-0.47645 -3.068943,-0.47645 -2.886769,0 -4.540355,1.84977 -1.653585,1.84977 -1.653585,5.10089 0,3.23711 1.653585,5.08688 1.653586,1.84977 4.540355,1.84977 1.611545,0 3.068943,-0.47645 1.457398,-0.47646 2.956836,-1.49944 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#666666;stroke-width:0.39253342"
id="path10067" />
<path
d="m 111.84707,155.4958 q -2.46637,0 -3.82567,1.82174 -1.3593,1.82175 -1.3593,5.12892 0,3.29316 1.3593,5.11491 1.3593,1.82174 3.82567,1.82174 2.48038,0 3.83968,-1.82174 1.3593,-1.82175 1.3593,-5.11491 0,-3.30717 -1.3593,-5.12892 -1.3593,-1.82174 -3.83968,-1.82174 z m 0,-3.90975 q 5.04484,0 7.90358,2.88677 2.85874,2.88676 2.85874,7.97364 0,5.07287 -2.85874,7.95964 -2.85874,2.88676 -7.90358,2.88676 -5.03083,0 -7.90358,-2.88676 -2.85874,-2.88677 -2.85874,-7.95964 0,-5.08688 2.85874,-7.97364 2.87275,-2.88677 7.90358,-2.88677 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#666666;stroke-width:0.39253342"
id="path10069" />
<path
d="m 126.6873,151.96441 h 8.95459 q 3.99383,0 6.12387,1.77971 2.14406,1.76569 2.14406,5.04483 0,3.29316 -2.14406,5.07287 -2.13004,1.76569 -6.12387,1.76569 h -3.55942 v 7.25896 h -5.39517 z m 5.39517,3.90975 v 5.8436 h 2.98487 q 1.5695,0 2.42432,-0.75672 0.85482,-0.77074 0.85482,-2.17209 0,-1.40134 -0.85482,-2.15807 -0.85482,-0.75672 -2.42432,-0.75672 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#666666;stroke-width:0.39253342"
id="path10071" />
<path
d="m 155.38682,161.24131 q 1.69563,0 2.42433,-0.63061 0.74271,-0.6306 0.74271,-2.07399 0,-1.42937 -0.74271,-2.04596 -0.7287,-0.61659 -2.42433,-0.61659 h -2.27017 v 5.36715 z m -2.27017,3.72757 v 7.91759 h -5.39518 v -20.92206 h 8.2399 q 4.13397,0 6.05381,1.38733 1.93385,1.38733 1.93385,4.38621 0,2.07399 -1.00896,3.40526 -0.99496,1.33128 -3.01289,1.96188 1.10706,0.25225 1.97589,1.14911 0.88285,0.88284 1.77971,2.69058 l 2.92881,5.94169 h -5.74551 l -2.55045,-5.19898 q -0.77074,-1.56951 -1.5695,-2.14406 -0.78476,-0.57455 -2.10202,-0.57455 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#666666;stroke-width:0.39253342"
id="path10073" />
<path
d="m 179.37783,155.4958 q -2.46636,0 -3.82566,1.82174 -1.35931,1.82175 -1.35931,5.12892 0,3.29316 1.35931,5.11491 1.3593,1.82174 3.82566,1.82174 2.48038,0 3.83969,-1.82174 1.3593,-1.82175 1.3593,-5.11491 0,-3.30717 -1.3593,-5.12892 -1.35931,-1.82174 -3.83969,-1.82174 z m 0,-3.90975 q 5.04484,0 7.90358,2.88677 2.85875,2.88676 2.85875,7.97364 0,5.07287 -2.85875,7.95964 -2.85874,2.88676 -7.90358,2.88676 -5.03082,0 -7.90358,-2.88676 -2.85874,-2.88677 -2.85874,-7.95964 0,-5.08688 2.85874,-7.97364 2.87276,-2.88677 7.90358,-2.88677 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#666666;stroke-width:0.39253342"
id="path10075" />
<path
d="m 199.61324,156.04232 v 12.76624 h 1.93385 q 3.30717,0 5.04484,-1.63957 1.75168,-1.63957 1.75168,-4.76457 0,-3.11098 -1.73767,-4.73654 -1.73767,-1.62556 -5.05885,-1.62556 z m -5.39518,-4.07791 h 5.68946 q 4.76457,0 7.0908,0.68666 2.34024,0.67264 4.00784,2.2982 1.47141,1.41536 2.1861,3.26513 0.71468,1.84978 0.71468,4.19002 0,2.36827 -0.71468,4.23206 -0.71469,1.84977 -2.1861,3.26513 -1.68161,1.62556 -4.03587,2.31222 -2.35426,0.67264 -7.06277,0.67264 h -5.68946 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#666666;stroke-width:0.39253342"
id="path10077" />
<path
d="m 218.04091,151.96441 h 5.39517 v 12.54203 q 0,2.59248 0.84081,3.71356 0.85482,1.10706 2.77466,1.10706 1.93385,0 2.77466,-1.10706 0.85482,-1.12108 0.85482,-3.71356 v -12.54203 h 5.39517 v 12.54203 q 0,4.44226 -2.22813,6.61434 -2.22814,2.17208 -6.79652,2.17208 -4.55437,0 -6.78251,-2.17208 -2.22813,-2.17208 -2.22813,-6.61434 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#666666;stroke-width:0.39253342"
id="path10079" />
<path
d="m 257.93717,171.73737 q -1.48542,0.77074 -3.09697,1.16312 -1.61155,0.39237 -3.36323,0.39237 -5.22701,0 -8.28194,-2.91479 -3.05493,-2.92881 -3.05493,-7.93161 0,-5.01681 3.05493,-7.9316 3.05493,-2.92881 8.28194,-2.92881 1.75168,0 3.36323,0.39237 1.61155,0.39238 3.09697,1.16312 v 4.33015 q -1.49944,-1.02298 -2.95684,-1.49944 -1.45739,-0.47645 -3.06894,-0.47645 -2.88677,0 -4.54035,1.84977 -1.65359,1.84977 -1.65359,5.10089 0,3.23711 1.65359,5.08688 1.65358,1.84977 4.54035,1.84977 1.61155,0 3.06894,-0.47645 1.4574,-0.47646 2.95684,-1.49944 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#666666;stroke-width:0.39253342"
id="path10081" />
<path
d="m 259.91306,151.96441 h 19.28249 v 4.07791 h -6.93665 v 16.84415 h -5.39517 v -16.84415 h -6.95067 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#666666;stroke-width:0.39253342"
id="path10083" />
</g>
<g
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:'HVD Comic Serif Pro';-inkscape-font-specification:'HVD Comic Serif Pro';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
id="flowRoot10010" />
</g>
<g
transform="matrix(0.54720232,0,0,0.54720232,73.721163,74.185947)"
aria-label="OR"
style="font-weight:400;font-size:21.88019943px;line-height:1.25;font-family:sans-serif;letter-spacing:0;word-spacing:0;fill:#7e7e7e;stroke-width:0.54709399"
id="text8678-3">
<g
aria-label="PRODUCT"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:28.69952393px;line-height:1.25;font-family:'HVD Comic Serif Pro';-inkscape-font-specification:'HVD Comic Serif Pro';letter-spacing:0px;word-spacing:0px;fill:#666666;fill-opacity:1;stroke:none;stroke-width:0.39253342"
id="text10008-8">
<path
d="m 105.44446,151.25214 h 8.95458 q 3.99383,0 6.12388,1.77971 2.14405,1.76569 2.14405,5.04484 0,3.29316 -2.14405,5.07286 -2.13005,1.7657 -6.12388,1.7657 h -3.55941 v 7.25896 h -5.39517 z m 5.39517,3.90975 v 5.84361 h 2.98486 q 1.56951,0 2.42433,-0.75673 0.85482,-0.77074 0.85482,-2.17208 0,-1.40134 -0.85482,-2.15807 -0.85482,-0.75673 -2.42433,-0.75673 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#666666;stroke-width:0.39253342"
id="path10051" />
<path
d="m 134.14398,160.52904 q 1.69563,0 2.42432,-0.6306 0.74272,-0.63061 0.74272,-2.07399 0,-1.42937 -0.74272,-2.04596 -0.72869,-0.6166 -2.42432,-0.6166 h -2.27018 v 5.36715 z m -2.27018,3.72758 v 7.91759 h -5.39517 v -20.92207 h 8.2399 q 4.13396,0 6.05381,1.38734 1.93385,1.38733 1.93385,4.3862 0,2.07399 -1.00897,3.40527 -0.99495,1.33127 -3.01289,1.96188 1.10707,0.25224 1.9759,1.1491 0.88284,0.88285 1.77971,2.69058 l 2.9288,5.9417 h -5.74551 l -2.55044,-5.19899 q -0.77074,-1.5695 -1.56951,-2.14405 -0.78475,-0.57455 -2.10201,-0.57455 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#666666;stroke-width:0.39253342"
id="path10053" />
<path
d="m 158.13499,154.78353 q -2.46637,0 -3.82567,1.82175 -1.35931,1.82175 -1.35931,5.12892 0,3.29316 1.35931,5.1149 1.3593,1.82175 3.82567,1.82175 2.48038,0 3.83968,-1.82175 1.3593,-1.82174 1.3593,-5.1149 0,-3.30717 -1.3593,-5.12892 -1.3593,-1.82175 -3.83968,-1.82175 z m 0,-3.90975 q 5.04484,0 7.90358,2.88677 2.85874,2.88677 2.85874,7.97365 0,5.07286 -2.85874,7.95963 -2.85874,2.88677 -7.90358,2.88677 -5.03083,0 -7.90358,-2.88677 -2.85874,-2.88677 -2.85874,-7.95963 0,-5.08688 2.85874,-7.97365 2.87275,-2.88677 7.90358,-2.88677 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#666666;stroke-width:0.39253342"
id="path10055" />
<path
d="m 178.37039,155.33006 v 12.76624 h 1.93386 q 3.30717,0 5.04483,-1.63957 1.75168,-1.63958 1.75168,-4.76457 0,-3.11099 -1.73766,-4.73655 -1.73767,-1.62555 -5.05885,-1.62555 z m -5.39517,-4.07792 h 5.68945 q 4.76457,0 7.0908,0.68666 2.34025,0.67265 4.00785,2.29821 1.47141,1.41535 2.18609,3.26513 0.71469,1.84977 0.71469,4.19002 0,2.36827 -0.71469,4.23206 -0.71468,1.84977 -2.18609,3.26513 -1.68162,1.62556 -4.03587,2.31221 -2.35426,0.67265 -7.06278,0.67265 h -5.68945 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#666666;stroke-width:0.39253342"
id="path10057" />
<path
d="m 196.79806,151.25214 h 5.39518 v 12.54203 q 0,2.59249 0.8408,3.71356 0.85482,1.10707 2.77466,1.10707 1.93386,0 2.77467,-1.10707 0.85482,-1.12107 0.85482,-3.71356 v -12.54203 h 5.39517 v 12.54203 q 0,4.44226 -2.22814,6.61435 -2.22813,2.17208 -6.79652,2.17208 -4.55436,0 -6.7825,-2.17208 -2.22814,-2.17209 -2.22814,-6.61435 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#666666;stroke-width:0.39253342"
id="path10059" />
<path
d="m 236.69433,171.02511 q -1.48543,0.77074 -3.09697,1.16311 -1.61155,0.39238 -3.36323,0.39238 -5.22701,0 -8.28194,-2.9148 -3.05493,-2.9288 -3.05493,-7.9316 0,-5.01681 3.05493,-7.93161 3.05493,-2.92881 8.28194,-2.92881 1.75168,0 3.36323,0.39238 1.61154,0.39237 3.09697,1.16311 v 4.33016 q -1.49944,-1.02298 -2.95684,-1.49944 -1.4574,-0.47646 -3.06894,-0.47646 -2.88677,0 -4.54036,1.84978 -1.65358,1.84977 -1.65358,5.10089 0,3.2371 1.65358,5.08688 1.65359,1.84977 4.54036,1.84977 1.61154,0 3.06894,-0.47646 1.4574,-0.47645 2.95684,-1.49944 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#666666;stroke-width:0.39253342"
id="path10061" />
<path
d="m 238.67022,151.25214 h 19.28249 v 4.07792 h -6.93665 v 16.84415 h -5.39518 v -16.84415 h -6.95066 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#666666;stroke-width:0.39253342"
id="path10063" />
</g>
<g
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:'HVD Comic Serif Pro';-inkscape-font-specification:'HVD Comic Serif Pro';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
id="flowRoot10010-6" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -0,0 +1,218 @@
<?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"
width="595.29999"
height="177"
version="1.1"
id="svg8680"
sodipodi:docname="demorgan_duality.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata8686">
<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="defs8684" />
<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="namedview8682"
showgrid="false"
inkscape:zoom="1.4039868"
inkscape:cx="255.29963"
inkscape:cy="183.04094"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg8680" />
<ellipse
cy="-116.98814"
cx="417.45068"
stroke-miterlimit="10"
rx="29.048471"
ry="28.48292"
id="ellipse8632"
transform="scale(1,-1)"
style="opacity:0.13999999;stroke:#000000;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="-117.77667"
cx="415.28989"
stroke-miterlimit="10"
rx="29.048471"
ry="28.48292"
id="ellipse8634"
transform="scale(1,-1)"
style="fill:#cee7cc;stroke:#808285;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="-50.412956"
cx="347.44287"
stroke-miterlimit="10"
rx="29.501013"
ry="28.92638"
id="ellipse8636"
transform="scale(1,-1)"
style="opacity:0.13999999;stroke:#000000;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="-52.236252"
cx="344.52783"
stroke-miterlimit="10"
rx="29.501013"
ry="28.92638"
id="ellipse8638"
transform="scale(1,-1)"
style="fill:#caebfc;stroke:#808285;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="-49.427658"
cx="487.45901"
stroke-miterlimit="10"
rx="30.254747"
ry="29.665482"
id="ellipse8640"
transform="scale(1,-1)"
style="opacity:0.13999999;stroke:#000000;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="-51.349327"
cx="484.49405"
stroke-miterlimit="10"
rx="30.254747"
ry="29.665482"
id="ellipse8642"
transform="scale(1,-1)"
style="fill:#f8f7cb;stroke:#808285;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="-118.71304"
cx="400.61481"
stroke-miterlimit="10"
rx="14.172594"
ry="13.896629"
id="ellipse8644"
transform="scale(1,-1)"
style="fill:#caebfc;stroke:#808285;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="-117.82612"
cx="429.31165"
stroke-miterlimit="10"
rx="14.524236"
ry="14.241208"
id="ellipse8646"
transform="scale(1,-1)"
style="fill:#f8f7cb;stroke:#808285;stroke-width:2.98567009;stroke-miterlimit:10" />
<path
d="m 476.55363,78.876205 c 0,0 -0.24721,0.420758 -0.73002,1.164401 a 87.338135,87.338135 0 0 1 -2.09219,3.056804 c -0.88995,1.24714 -1.99533,2.620911 -3.21119,4.082466 -1.2658,1.45651 -2.63655,2.951363 -4.10264,4.387693 a 70.868018,70.868018 0 0 1 -4.46589,4.004267 c -1.48981,1.186095 -2.91958,2.27936 -4.17278,3.142571 -1.25369,0.862709 -2.33637,1.545303 -3.14307,2.007943 -0.10595,0.0394 -0.16094,0.0832 -0.21593,0.12713 -0.0555,0.0439 -0.10494,0.0388 -0.16043,0.0827 l -0.11049,0.0878 2.91151,4.95325 c -2.49075,0.14277 -5.01631,0.13369 -7.4556,-0.21391 -1.19417,-0.17103 -2.37824,-0.44044 -3.50733,-0.75323 -1.12404,-0.36224 -2.19258,-0.76837 -3.1456,-1.31121 a 15.851592,15.851592 0 0 0 2.52254,-1.87374 c 0.73304,-0.71791 1.41615,-1.44087 1.99885,-2.174424 1.17651,-1.564479 2.10783,-3.20362 2.9443,-4.902293 l 2.91151,4.953753 c 0,0 0.0555,-0.0439 0.10493,-0.0388 0.0505,0.005 0.0555,-0.0439 0.111,-0.0883 0.055,-0.0439 0.15992,-0.0827 0.21492,-0.12613 0.75171,-0.419247 1.78494,-1.106889 3.03813,-1.9701 1.20376,-0.868255 2.62798,-1.912079 4.06784,-3.103219 1.43986,-1.191139 2.94531,-2.524045 4.35591,-3.916483 1.4106,-1.392438 2.7763,-2.838353 3.98711,-4.250971 1.21082,-1.412618 2.26624,-2.791434 3.15064,-3.989637 0.88491,-1.198203 1.54884,-2.220333 2.03216,-2.963975 a 33.428596,33.428596 0 0 0 0.72951,-1.164401 z m -117.158,-0.375857 c 0,0 0.2124,0.415713 0.50148,1.085697 0.1675,0.361732 0.3804,0.77694 0.58825,1.241591 0.25781,0.469191 0.56152,0.992364 0.86019,1.56397 1.29456,2.297017 3.23842,5.197425 5.55562,7.885435 2.3172,2.687506 4.91793,5.055155 7.03333,6.68471 0.51308,0.442957 1.04029,0.739102 1.46206,1.074599 0.42227,0.336001 0.79913,0.61802 1.13514,0.79712 0.28655,0.175064 0.42731,0.287064 0.42731,0.287064 l 3.27576,-4.697963 a 42.308414,42.308414 0 0 0 6.41228,10.537629 c -4.35591,0.68865 -9.00645,0.75626 -13.84568,0.16296 l 3.27576,-4.69797 -0.47726,-0.2911 c -0.33146,-0.228544 -0.70833,-0.510564 -1.18054,-0.851104 -0.42228,-0.335497 -0.94444,-0.681084 -1.50747,-1.128581 -2.1608,-1.683034 -4.90683,-4.113241 -7.26943,-6.854729 -2.41255,-2.746029 -4.44723,-5.754401 -5.78265,-8.153833 -0.34862,-0.576147 -0.64729,-1.148257 -0.90509,-1.617448 -0.25831,-0.469191 -0.46616,-0.933337 -0.63366,-1.295572 -0.33449,-0.723463 -0.54739,-1.139176 -0.54739,-1.139176 z"
id="path8648"
style="fill:#808285;stroke-width:0.50450599"
inkscape:connector-curvature="0" />
<ellipse
cy="51.542969"
cx="180.01228"
stroke-miterlimit="10"
rx="29.048471"
ry="28.48292"
id="ellipse8650"
style="opacity:0.13999999;stroke:#000000;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="50.75441"
cx="177.85146"
stroke-miterlimit="10"
rx="29.048471"
ry="28.48292"
id="ellipse8652"
style="fill:#cee7cc;stroke:#808285;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="118.11762"
cx="110.00394"
stroke-miterlimit="10"
rx="29.501013"
ry="28.92638"
id="ellipse8654"
style="opacity:0.13999999;stroke:#000000;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="116.29433"
cx="107.08941"
stroke-miterlimit="10"
rx="29.501013"
ry="28.92638"
id="ellipse8656"
style="fill:#caebfc;stroke:#808285;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="119.10344"
cx="250.02063"
stroke-miterlimit="10"
rx="30.254747"
ry="29.665482"
id="ellipse8658"
style="opacity:0.13999999;stroke:#000000;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="117.18178"
cx="247.05565"
stroke-miterlimit="10"
rx="30.254747"
ry="29.665482"
id="ellipse8660"
style="fill:#f8f7cb;stroke:#808285;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="49.818054"
cx="163.17641"
stroke-miterlimit="10"
rx="14.172594"
ry="13.896629"
id="ellipse8662"
style="fill:#caebfc;stroke:#808285;stroke-width:2.98567009;stroke-miterlimit:10" />
<ellipse
cy="50.704971"
cx="191.87321"
stroke-miterlimit="10"
rx="14.524236"
ry="14.241208"
id="ellipse8664"
style="fill:#f8f7cb;stroke:#808285;stroke-width:2.98567009;stroke-miterlimit:10" />
<path
d="m 148.65165,59.181186 c 0,0 -0.45204,0.19676 -1.25622,0.59129 a 89.797604,89.797604 0 0 0 -3.31713,1.7244 c -1.35712,0.73961 -2.86459,1.67546 -4.47245,2.71071 -1.60837,1.08419 -3.26718,2.26675 -4.87504,3.54769 a 70.925027,70.925027 0 0 0 -4.52341,3.94221 c -1.35712,1.33089 -2.61334,2.61183 -3.61832,3.74546 -1.00498,1.13312 -1.80916,2.11893 -2.3621,2.85803 -0.0505,0.0984 -0.1009,0.14782 -0.15085,0.19676 -0.0505,0.0494 -0.0505,0.0989 -0.1009,0.14832 l -0.0999,0.0984 -4.7242,-3.35093 c -0.40209,2.41457 -0.65333,4.87858 -0.55294,7.29314 0.0505,1.18257 0.2008,2.36563 0.40209,3.49876 0.25125,1.13362 0.55294,2.21781 1.00498,3.20361 a 15.6957,15.6957 0 0 1 2.16131,-2.26725 c 0.80368,-0.64072 1.60786,-1.23201 2.41204,-1.72491 1.70877,-0.9853 3.46798,-1.7244 5.27714,-2.36512 l -4.7242,-3.35094 c 0,0 0.0504,-0.0494 0.0504,-0.0984 0,-0.0494 0.0505,-0.0494 0.1004,-0.0989 0.0505,-0.0489 0.1009,-0.14782 0.15085,-0.19676 0.50248,-0.69016 1.30667,-1.62652 2.31164,-2.75965 1.00498,-1.08468 2.21126,-2.36563 3.56838,-3.64657 1.35712,-1.28144 2.86459,-2.61183 4.4225,-3.84434 1.55792,-1.2315 3.16628,-2.41406 4.7242,-3.4488 1.55792,-1.03525 3.06589,-1.92217 4.37256,-2.66127 1.30667,-0.73911 2.41204,-1.28145 3.21623,-1.67497 0.80418,-0.39452 1.25622,-0.59178 1.25622,-0.59178 z m 57.29326,2.95692 c 0,0 0.4021,0.2462 1.05543,0.59077 0.35215,0.19727 0.75373,0.44397 1.20628,0.69017 0.45254,0.29564 0.95503,0.64072 1.50797,0.9853 2.21125,1.4782 4.97544,3.64657 7.48788,6.16002 2.51295,2.51295 4.67425,5.2726 6.13177,7.49041 0.40209,0.54184 0.65334,1.08418 0.95453,1.52765 0.30169,0.44346 0.55294,0.83748 0.70379,1.18256 0.15084,0.29564 0.25124,0.44346 0.25124,0.44346 l -5.07584,2.75965 a 43.290688,43.290688 0 0 1 10.10173,7.2437 c 1.10538,-4.18841 1.60786,-8.7219 1.45752,-13.5021 l -5.07634,2.75965 -0.25125,-0.49291 c -0.20079,-0.34508 -0.45203,-0.7391 -0.75373,-1.232 -0.30169,-0.44346 -0.60288,-0.9853 -1.00498,-1.57709 -1.50797,-2.26674 -3.71922,-5.17421 -6.28211,-7.7366 -2.56289,-2.61183 -5.42798,-4.87858 -7.73963,-6.40623 -0.55294,-0.39402 -1.10588,-0.7391 -1.55792,-1.03423 -0.45254,-0.29615 -0.90508,-0.54235 -1.25622,-0.73961 a 36.323454,36.323454 0 0 1 -1.10588,-0.64072 z"
id="path8666"
style="fill:#808285;stroke-width:0.50450599"
inkscape:connector-curvature="0" />
<g
aria-label="V"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:'HVD Comic Serif Pro';-inkscape-font-specification:'HVD Comic Serif Pro';letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none"
id="text10830"
transform="translate(480.6086,238.60623)">
<path
d="m -67.615257,-167.73259 -11.132813,-29.16016 h 4.121094 l 9.238281,24.55079 9.257813,-24.55079 h 4.101562 l -11.113281,29.16016 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#4d4d4d"
id="path10832"
inkscape:connector-curvature="0" />
</g>
<g
aria-label="V"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:'HVD Comic Serif Pro';-inkscape-font-specification:'HVD Comic Serif Pro';letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none"
id="text10830-8"
transform="rotate(180,55.474599,-32.927274)">
<path
d="m -67.615257,-167.73259 -11.132813,-29.16016 h 4.121094 l 9.238281,24.55079 9.257813,-24.55079 h 4.101562 l -11.113281,29.16016 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#4d4d4d"
id="path10832-1"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -38,8 +38,8 @@
inkscape:window-height="1376"
id="namedview9507"
showgrid="false"
inkscape:zoom="2.59366"
inkscape:cx="290.3"
inkscape:zoom="1.5057919"
inkscape:cx="269.42228"
inkscape:cy="237.85"
inkscape:window-x="0"
inkscape:window-y="27"
@ -134,10 +134,11 @@
id="path9409"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
<path
fill="#808285"
d="M391.3 210.8s.7.2 1.9.4c.6.1 1.4.3 2.3.5.9.2 1.9.4 3.1.8 1.1.4 2.4.7 3.8 1.2 1.4.4 2.8 1 4.4 1.6l2.4.9c.8.4 1.6.7 2.5 1.1.8.4 1.7.8 2.6 1.2.9.4 1.8.9 2.7 1.4 7.2 3.9 15.2 9.3 22.7 16.4.9.9 1.8 1.8 2.8 2.7l1.4 1.4 1.3 1.5c.9 1 1.8 1.9 2.7 2.9.9 1 1.7 2.1 2.6 3.1l1.3 1.6 1.2 1.6c.8 1.1 1.7 2.2 2.5 3.2.8 1.1 1.6 2.2 2.4 3.4l1.2 1.7 1.1 1.7 2.2 3.5 2.1 3.6c1.4 2.3 2.6 4.8 3.9 7.2 2.4 4.9 4.6 9.7 6.4 14.5 3.7 9.6 6.3 19 7.8 27.1 1.5 8.1 2.1 15 2.3 19.8 0 .9.1 1.4.1 1.4l-11.6.3c4.6 6.7 8.6 14 11.5 22.3 5.7-6.7 10.7-14.5 14.8-23l-11.6.3s0-.5-.1-1.4c-.1-4.9-.8-11.9-2.3-20.2-1.5-8.3-4.1-17.8-7.9-27.6-1.8-4.9-4.1-9.9-6.6-14.8-1.3-2.4-2.5-4.9-4-7.3l-2.1-3.6-2.3-3.5-1.1-1.8-1.2-1.7c-.8-1.1-1.6-2.3-2.4-3.4-.9-1.1-1.7-2.2-2.6-3.3l-1.3-1.7-1.3-1.6c-.9-1.1-1.8-2.1-2.7-3.2-.9-1-1.9-2-2.8-3l-1.4-1.5c-.5-.5-1-.9-1.4-1.4-1-.9-1.9-1.9-2.9-2.8-7.7-7.2-15.9-12.9-23.4-16.8l-2.7-1.5-2.7-1.2c-.9-.4-1.7-.8-2.6-1.2-.8-.4-1.7-.7-2.5-1-1.6-.6-3.1-1.2-4.5-1.7-1.4-.4-2.7-.8-3.9-1.2-1.2-.4-2.3-.6-3.2-.8-.9-.2-1.7-.4-2.4-.6-1.3-.3-2-.5-2-.5l-.5 3zM255.2 200s-.9.1-2.5.3c-.8.1-1.8.2-3 .3-.6.1-1.2.1-1.9.2s-1.4.2-2.2.3c-1.5.2-3.2.5-5.1.8-1.8.3-3.8.8-5.9 1.3-2.1.4-4.3 1.1-6.6 1.7-1.2.3-2.4.6-3.6 1-1.2.4-2.4.8-3.7 1.2-10 3.4-21.4 8.4-32.7 15.2-11.3 6.8-22.7 15.1-33.2 24.5l-3.9 3.5c-1.3 1.2-2.5 2.4-3.8 3.6l-1.9 1.8-1.8 1.9c-1.2 1.2-2.4 2.5-3.6 3.7-4.7 5.1-9.3 10.1-13.4 15.2-8.4 10.2-15.4 20.3-20.8 29.3-5.5 9-9.5 16.9-12.1 22.4-.4.9-.6 1.4-.6 1.4l-10.5-4.8c.6 9.2 1.9 18.2 3.9 26.7 6.4-6 13.1-11.2 20-15.9l-10.5-4.8s.2-.5.6-1.4c2.6-5.5 6.5-13.2 11.9-22.1 5.4-8.9 12.3-18.9 20.6-29 4.1-5.1 8.6-10.1 13.3-15 1.2-1.2 2.4-2.4 3.6-3.7l1.8-1.8 1.9-1.8c1.2-1.2 2.5-2.4 3.8-3.6l3.9-3.5c10.3-9.3 21.6-17.4 32.7-24.1 11.1-6.7 22.3-11.6 32.1-14.9l3.6-1.2c1.2-.4 2.4-.7 3.5-1 2.3-.6 4.4-1.3 6.5-1.7 2.1-.4 4-.9 5.8-1.2 1.8-.3 3.4-.6 4.9-.8.7-.1 1.4-.3 2.1-.3.7-.1 1.3-.1 1.9-.2 1.2-.1 2.2-.2 3-.3 1.6-.2 2.5-.3 2.5-.3l-.6-2.9z"
d="m 391.3,210.8 c 0,0 0.7,0.2 1.9,0.4 0.6,0.1 1.4,0.3 2.3,0.5 0.9,0.2 1.9,0.4 3.1,0.8 1.1,0.4 2.4,0.7 3.8,1.2 1.4,0.4 2.8,1 4.4,1.6 l 2.4,0.9 c 0.8,0.4 1.6,0.7 2.5,1.1 0.8,0.4 1.7,0.8 2.6,1.2 0.9,0.4 1.8,0.9 2.7,1.4 7.2,3.9 15.2,9.3 22.7,16.4 0.9,0.9 1.8,1.8 2.8,2.7 l 1.4,1.4 1.3,1.5 c 0.9,1 1.8,1.9 2.7,2.9 0.9,1 1.7,2.1 2.6,3.1 l 1.3,1.6 1.2,1.6 c 0.8,1.1 1.7,2.2 2.5,3.2 0.8,1.1 1.6,2.2 2.4,3.4 l 1.2,1.7 1.1,1.7 2.2,3.5 2.1,3.6 c 1.4,2.3 2.6,4.8 3.9,7.2 2.4,4.9 4.6,9.7 6.4,14.5 3.7,9.6 6.3,19 7.8,27.1 1.5,8.1 2.1,15 2.3,19.8 0,0.9 0.1,1.4 0.1,1.4 l -11.6,0.3 c 4.6,6.7 8.6,14 11.5,22.3 5.7,-6.7 10.7,-14.5 14.8,-23 l -11.6,0.3 c 0,0 0,-0.5 -0.1,-1.4 -0.1,-4.9 -0.8,-11.9 -2.3,-20.2 -1.5,-8.3 -4.1,-17.8 -7.9,-27.6 -1.8,-4.9 -4.1,-9.9 -6.6,-14.8 -1.3,-2.4 -2.5,-4.9 -4,-7.3 l -2.1,-3.6 -2.3,-3.5 -1.1,-1.8 -1.2,-1.7 c -0.8,-1.1 -1.6,-2.3 -2.4,-3.4 -0.9,-1.1 -1.7,-2.2 -2.6,-3.3 l -1.3,-1.7 -1.3,-1.6 c -0.9,-1.1 -1.8,-2.1 -2.7,-3.2 -0.9,-1 -1.9,-2 -2.8,-3 l -1.4,-1.5 c -0.5,-0.5 -1,-0.9 -1.4,-1.4 -1,-0.9 -1.9,-1.9 -2.9,-2.8 -7.7,-7.2 -15.9,-12.9 -23.4,-16.8 l -2.7,-1.5 -2.7,-1.2 c -0.9,-0.4 -1.7,-0.8 -2.6,-1.2 -0.8,-0.4 -1.7,-0.7 -2.5,-1 -1.6,-0.6 -3.1,-1.2 -4.5,-1.7 -1.4,-0.4 -2.7,-0.8 -3.9,-1.2 -1.2,-0.4 -2.3,-0.6 -3.2,-0.8 -0.9,-0.2 -1.7,-0.4 -2.4,-0.6 -1.3,-0.3 -2,-0.5 -2,-0.5 z M 257.2,200 c 0,0 -2.9,0.1 -4.5,0.3 -0.8,0.1 -1.8,0.2 -3,0.3 -0.6,0.1 -1.2,0.1 -1.9,0.2 -0.7,0.1 -1.4,0.2 -2.2,0.3 -1.5,0.2 -3.2,0.5 -5.1,0.8 -1.8,0.3 -3.8,0.8 -5.9,1.3 -2.1,0.4 -4.3,1.1 -6.6,1.7 -1.2,0.3 -2.4,0.6 -3.6,1 -1.2,0.4 -2.4,0.8 -3.7,1.2 -10,3.4 -21.4,8.4 -32.7,15.2 -11.3,6.8 -22.7,15.1 -33.2,24.5 l -3.9,3.5 c -1.3,1.2 -2.5,2.4 -3.8,3.6 l -1.9,1.8 -1.8,1.9 c -1.2,1.2 -2.4,2.5 -3.6,3.7 -4.7,5.1 -9.3,10.1 -13.4,15.2 -8.4,10.2 -15.4,20.3 -20.8,29.3 -5.5,9 -9.5,16.9 -12.1,22.4 -0.4,0.9 -0.6,1.4 -0.6,1.4 l -10.5,-4.8 c 0.6,9.2 1.9,18.2 3.9,26.7 6.4,-6 13.1,-11.2 20,-15.9 l -10.5,-4.8 c 0,0 0.2,-0.5 0.6,-1.4 2.6,-5.5 6.5,-13.2 11.9,-22.1 5.4,-8.9 12.3,-18.9 20.6,-29 4.1,-5.1 8.6,-10.1 13.3,-15 1.2,-1.2 2.4,-2.4 3.6,-3.7 l 1.8,-1.8 1.9,-1.8 c 1.2,-1.2 2.5,-2.4 3.8,-3.6 l 3.9,-3.5 c 10.3,-9.3 21.6,-17.4 32.7,-24.1 11.1,-6.7 22.3,-11.6 32.1,-14.9 l 3.6,-1.2 c 1.2,-0.4 2.4,-0.7 3.5,-1 2.3,-0.6 4.4,-1.3 6.5,-1.7 2.1,-0.4 4,-0.9 5.8,-1.2 1.8,-0.3 3.4,-0.6 4.9,-0.8 0.7,-0.1 1.4,-0.3 2.1,-0.3 0.7,-0.1 1.3,-0.1 1.9,-0.2 1.2,-0.1 2.2,-0.2 3,-0.3 1.6,-0.2 4.5,-0.3 4.5,-0.3 z"
id="path9411"
style="stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none" />
style="fill:#808285;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:none"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cssccsccscccccscccccccccccscccccccsccccccccccccccccccscscssccccscsccccscscccccccccccccccscccccccscscsscccscc" />
<path
fill="#808285"
d="M203.7 285.2s-1.7.4-4.7 1.2c-1.5.4-3.3 1-5.3 1.6-2 .7-4.3 1.4-6.8 2.4-4.9 1.9-10.5 4.3-16.4 7.2-5.9 2.9-12 6.3-17.9 10-11.9 7.3-23.2 15.5-31.4 22-4.1 3.2-7.4 6-9.8 8-.6.5-.9.8-.9.8l-7.5-8.8c-1.6 4.2-3.1 8.5-4.4 12.8-.7 2.1-1.3 4.3-1.9 6.4-.6 2.2-1.2 4.3-1.5 6.5 2-.8 4.1-1.3 6.2-1.9l6.3-1.5c4.2-.9 8.4-1.7 12.6-2.4l-7.5-8.8s.3-.3.9-.8c2.3-1.9 5.6-4.7 9.7-7.9 8.1-6.4 19.3-14.6 31.1-21.8 5.9-3.6 11.9-7 17.7-9.8 5.8-2.9 11.3-5.3 16.1-7.1 2.4-.9 4.6-1.7 6.6-2.3 2-.6 3.7-1.1 5.2-1.6 2.9-.7 4.6-1.2 4.6-1.2l-1-3zM246.6 360.9s-.4.1-1.1.2c-.7.1-1.7.3-3 .6-2.6.6-6.2 1.5-10.5 2.9-8.5 2.8-19.5 7.7-29.9 13.5-10.4 5.7-20.4 12.3-27.6 17.6-3.6 2.6-6.6 4.9-8.6 6.6-.6.5-.9.8-.9.8l-7.3-9c-1.8 4.3-3.4 8.6-4.8 13-.4 1.1-.7 2.2-1 3.3l-.9 3.3c-.5 2.3-.9 4.5-.9 6.8 1.9-1.1 3.9-1.8 5.8-2.4 1-.3 2-.6 3-.8 1-.3 2-.5 3-.7 4.1-.9 8.2-1.5 12.3-2.1l-7.3-9s.3-.3.9-.7c2-1.6 4.9-3.9 8.5-6.5 7.1-5.2 17-11.7 27.3-17.3 10.3-5.7 21.1-10.5 29.4-13.2 4.2-1.4 7.7-2.3 10.2-2.9 1.2-.3 2.2-.4 2.9-.6.7-.1 1-.2 1-.2l-.5-3.2zM309.5 328.2s-2.5-.4-6.9-1c-2.2-.3-4.9-.5-8-.9-1.5-.2-3.2-.3-4.9-.4-1.7-.1-3.5-.2-5.4-.3-7.6-.3-16.5-.1-25.9.7-9.5.8-19.5 2.3-29.4 4.6-9.9 2.2-19.6 5.1-28.5 8.3-8.9 3.2-17 6.8-23.8 10.2-6.8 3.4-12.3 6.6-16.1 8.9-.7.5-1.2.7-1.2.7l-6.2-9.8c-2.3 4.1-4.4 8.2-6.3 12.4-.9 2.1-1.8 4.3-2.6 6.5-.4 1.1-.7 2.2-1 3.3-.1.6-.2 1.1-.3 1.7-.1.6-.1 1.2-.1 1.7.5-.3 1-.5 1.4-.7.5-.2 1-.3 1.5-.5 1-.3 2-.5 3-.7 2-.4 4.1-.7 6.2-.9 4.1-.4 8.2-.6 12.4-.6l-6.2-9.8s.4-.3 1.2-.7c3.7-2.3 9.1-5.4 15.8-8.8 6.7-3.3 14.7-6.9 23.5-10.1 8.8-3.2 18.4-6 28.1-8.2 9.7-2.2 19.6-3.7 29-4.5 9.3-.8 18.1-.9 25.5-.7 1.9.1 3.7.2 5.4.3 1.7.1 3.3.2 4.8.4 3 .3 5.7.5 7.8.8 4.3.6 6.8 1 6.8 1l.4-2.9z"

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

@ -6,29 +6,27 @@ title: Monoids
Monoids etc
===
Since we are done with categories, let's look at some other structures that are also interesting - monoids. Like categories, monoids/groups are also abstract systems consisting of set of elements and rules for manipulating these elements.
Since we are done with categories, let's look at some other structures that are also interesting - monoids. Like categories, monoids/groups are also abstract systems consisting of set of elements and rules for manipulating these elements, however the rules look different than the rules for categories. Let's see them.
What are monoids
===
Monoids are simpler than categories. A monoid is defined by a collection (set) of elements and an operation that allows us to combine two element and produce a third one of the same kind.
Monoids are simpler than categories. A monoid is defined by a collection/set of elements, together with a *monoid operation* - a rule that allows us to combine two element and produce a third one of the same kind.
Let's take our familiar colorful balls.
![Balls](balls.svg)
In this case a monoid would be a rule (operation) for "combining" two balls into one.
An example of such rule would be blending the colors of the balls, as if we are mixing paint.
A monoid can be defined using this set and a operation for "combining" two balls into one. An example of such rule would be blending the colors of the balls, as if we are mixing paint.
![A rule for combining balls](balls_rule.svg)
You can probably think of other ways to define such a rule. This will help you realize that there can be many ways to create a monoid from a given set of items. The monoid is not the set itself, it is the set *together with the rule*.
You can probably think of other ways to define such a rule. This will help you realize that there can be many ways to create a monoid from a given set of set elements i.e. the monoid is not the set itself, it is the set *together with the rule*.
Associativity
---
The monoid rule should, like functional composition, be "associative" i.e. applying it on the same number of elements in a different order should make no difference.
The monoid rule should, like functional composition, be *associative* i.e. applying it on the same number of elements in a different order should make no difference.
![Associativity in the color mixing operation](balls_associativity.svg)
@ -39,56 +37,67 @@ When a rule is associative, this means we can use all kinds of algebraic operati
The identity element
---
Actually, not any (associative) rule for combining elements makes the balls form a monoid (it makes them form a "semigroup", which is also a thing, but that's a separate topic). To be a monoid, a set must feature what is called an "identity element" of a given rule (or a *zero* element, if you prefer) - one that, when combined with any other element gives back that same element not the identity but the other one. Or simply **x • i = x and i • x = x for any x**. In the case of our color-mixing monoid the identity element is the white ball (or perhaps a transparent one, if we have one).
Actually, not any (associative) rule for combining elements makes the balls form a monoid (it makes them form a *semigroup*, which is also a thing, but that's a separate topic). To be a monoid, a set must feature what is called an *identity element* of a given rule, the concept of which you are already familiar - it is an element that when combined with any other element gives back that same element (not the identity but the other one). Or simply $x • i = x$ and $i • x = x$ for any $x$.
In the case of our color-mixing monoid the identity element is the white ball (or perhaps a transparent one, if we have one).
![The identity element of the color-mixing monoid](balls_identity.svg)
As you probably remember from the last chapter, functional composition is also associative and it also contains an identity element, so you might start suspecting that it forms a monoid in some way. And it is really the case with one little caveat.
To keep the suspense alive, let's see some simpler monoids before we delve into that:
As you probably remember from the last chapter, functional composition is also associative and it also contains an identity element, so you might start suspecting that it forms a monoid in some way. This is indeed the case, but with one caveat.
Basic monoids
===
To keep the suspense, instead of discussing the relationship between monoids and categories, we are going through see some simple examples of monoids first.
Monoids from numbers
---
Mathematics is not all about numbers, however numbers do tend to pop up in most of its areas and monoids are no exception. The set of natural numbers *N* form a monoid when combined with the all too familiar operation of addition (or to use the official terminology *N* *form* a monoid *under* addition).
Mathematics is not only about numbers, however numbers do tend to pop up in most of its areas, and monoids are no exception. The set of natural numbers $\mathbb{N}$ forms a monoid when combined with the all too familiar operation of addition (or *under* addition as it is traditionally said.) This group is denoted $\left< \mathbb{N},+ \right>$ (in general, all groups are denoted by specifying the set and the operation, enclosed in angle brackets.)
![The monoid of numbers under addition](numbers_addition.svg)
(if you see a **1 + 1 = 2** in your textbook you know you are working on math foundations (or you are in kindergarten)).
If you see a $1 + 1 = 2$ in your textbook you know you are either reading something very advanced, or very simple, although I am not really sure which of the two applies in the present case.
The natural numbers also form a monoid under multiplication as well:
Anyways, the natural numbers also form a monoid under multiplication as well.
![The monoid of numbers under multiplication](numbers_multiplication.svg)
**Task:** Which are the identity elements of those monoids?
**Question:** Which are the identity elements of those monoids?
**Task:** Go through other mathematical operations and figure out why they are not monoidal.
**Task:** Go through other mathematical operations and verify that they are monoidal.
Monoid/group operations as functions
---
We never defined the monoid rule/operation formally. However, we said that $$+$$ is such an operation. And we know that plus is just an a function that accepts a product of two numbers and returns a number (formally $+: \mathbb{Z} \times \mathbb{Z} → \mathbb{Z}$).
Every operator is like that - is just a function that takes a pair of monoid elements and returns one element of the same type.
So this is one way to define the monoid operation. There is another way, which we will see later.
Monoids from boolean algebra
---
Thinking about other operations that we covered (operation being a function which takes a pair of element of a given type and returns one element of the same type), we may remember the boolean operations **AND** and **OR**. which operate on the set, consisting of just two values **{ True, False }**. Those operations form monoids too. Proving that they do is easy enough by just enumerating all cases.
Thinking about other operations that we covered , we may remember the boolean operations *AND* and *OR*. which operate on the set, consisting of just two values ${ True, False }$. Those operations form monoids too. Proving that they do is easy enough by just enumerating all cases.
We can prove that **AND** is associative by expanding the formula **(A AND B) AND C = A AND (B AND C)** in all possible ways:
We can prove that $\land$ is associative by expanding the formula $(A \land B) \land C = A \land (B \land C)$ in all possible ways:
**(TRUE AND FALSE) AND TRUE = TRUE AND (FALSE AND TRUE)**
$(TRUE AND FALSE) AND TRUE = TRUE AND (FALSE AND TRUE)$
**(TRUE AND FALSE) AND FALSE = TRUE AND (FALSE AND FALSE)**
$(TRUE AND FALSE) AND FALSE = TRUE AND (FALSE AND FALSE)$
**(FALSE AND FALSE) AND TRUE = FALSE AND (FALSE AND TRUE)**
$(FALSE AND FALSE) AND TRUE = FALSE AND (FALSE AND TRUE)$
...
And we can prove that **TRUE** is the identity element by expanding the other formulas that state that for all elements **A** **I AND A = A**
And we can prove that $TRUE$ is the identity element by expanding the other formulas that state that for all elements $A$ $I AND A = A$.
**FALSE AND TRUE = FALSE**
$False \land True = False$
**TRUE AND TRUE = TRUE**
$True \land True = True$
...and then do the same for **A AND I = A**.
...and then do the same for $A \land I = A$.
Monoid objects as actions
@ -121,11 +130,11 @@ All monoids that we examined so far are also *commutative*, but we will see some
Groups
---
A group is a monoid in which each element has what is called an "inverse" element where the element and its inverse cancel each other out when applied one after the other, in other words , **forall x, there must exist x' such that x • x' = i** ( where **i** is the identity element).
A group is a monoid in which each element has what is called an "inverse" element where the element and its inverse cancel each other out when applied one after the other, in other words , $forall x, there must exist x' such that x • x' = i$ ( where $i$ is the identity element).
If we view *monoids* as a means of modeling the effect of applying a set of (associative) actions, we use *groups* to model the effects of actions are also *reversible*.
A nice example of a group can be found in the realm of numbers (really, numbers are a nice example of almost all mathematical structures) - it is the set of integers under addition, where the inverse of each number is its opposite number (positive numbers' inverse are negatives and vice versa). The above formula, then, becomes **x + (-x) = 0**
A nice example of a group can be found in the realm of numbers (really, numbers are a nice example of almost all mathematical structures) - it is the set of integers under addition, where the inverse of each number is its opposite number (positive numbers' inverse are negatives and vice versa). The above formula, then, becomes $x + (-x) = 0$
The study of groups is a field that is much bigger than the theory of monoids (and perhaps bigger than category theory itself).
@ -178,17 +187,17 @@ But it's much simpler to grasp if we notice the following: although our group ha
![The group of rotations in a triangle](symmetry_rotation_cyclic.svg)
Groups and monoids that have this "main" action (called a *generator*) that, when applied enough times, can get you to any state of the group, are called *cyclic groups*. All rotation groups are cyclic groups. Another example of a cyclic groups is, yes, the integers under addition. Here we can use **+1** or **-1** as generators.
Groups and monoids that have this "main" action (called a *generator*) that, when applied enough times, can get you to any state of the group, are called *cyclic groups*. All rotation groups are cyclic groups. Another example of a cyclic groups is, yes, the integers under addition. Here we can use $+1$ or $-1$ as generators.
![The group of numbers under addition](numbers_cyclic.svg)
Wait, how can this be a cyclic group when there are no cycles? This is because the integers are an *infinite* cyclic group.
An example of a finite number-based cycle group are the integers in *modular arithmetic* (sometimes called "clock arithmetic"). Modular arithmetic's operation is based on a number called the modulus of an arithmetic (let's take **12** for example). In it, each number is mapped to the *remainder of the integer addition of that number and the modulus*.
An example of a finite number-based cycle group are the integers in *modular arithmetic* (sometimes called "clock arithmetic"). Modular arithmetic's operation is based on a number called the modulus of an arithmetic (let's take $12$ for example). In it, each number is mapped to the *remainder of the integer addition of that number and the modulus*.
For example: **1 modulo 12 = 1** (because 1/12 = 0 with 1 remainder) **2 modulo 12 = 2** etc.
For example: $1 modulo 12 = 1$ (because 1/12 = 0 with 1 remainder) $2 modulo 12 = 2$ etc.
but **13 modulo 12 = 1** (13/12 = 1 with 1 remainder) **14 modulo 12 = 2**, **15 modulo 12 = 3** etc.
but $13 modulo 12 = 1$ (13/12 = 1 with 1 remainder) $14 modulo 12 = 2$, $15 modulo 12 = 3$ etc.
In effect numbers "wrap around" upon reaching the modulus.
@ -198,39 +207,39 @@ Here is a group representation of modular arithmetic with modulus 3.
Here are a couple of interesting facts about cyclic groups.
1 All cyclic groups that have the same number of elements (or that are of the *same order*) are isomorphic to each other i.e. they are the same group. For example, the group of rotations of the triangle is isomorphic to the integers under the addition with modulo 3. This group is called **Z3**.
1 All cyclic groups that have the same number of elements (or that are of the *same order*) are isomorphic to each other i.e. they are the same group. For example, the group of rotations of the triangle is isomorphic to the integers under the addition with modulo 3. This group is called $Z3$.
![The group of numbers under addition](symmetry_modular.svg)
2 All cyclic groups are *commutative* (or "abelian" as they are also called). There are, however abelian groups that are not cyclic, but, as we shall see below, the concepts of cyclic groups and of abelian groups are deeply related.
**Task:** Prove that there are no other groups with 3 objects, other than **Z3**.
**Task:** Prove that there are no other groups with 3 objects, other than $Z3$.
Finite groups
---
Like with sets, the concept of an isomorphism in group theory allows us to identify common finite groups.
The smallest group is just the trivial group **Z1** that has just one element.
The smallest group is just the trivial group $Z1$ that has just one element.
![The smallest group](trivial_group.svg)
The smallest non-trivial group is the group **Z2** that has two elements.
The smallest non-trivial group is the group $Z2$ that has two elements.
![The smallest non-trivial group](smallest_group.svg)
**Z2** is also known as the *boolean group*, due to the fact that it is isomorphic to the **{ True, False }** set.
$Z2$ is also known as the *boolean group*, due to the fact that it is isomorphic to the ${ True, False }$ set.
Like **Z3**, **Z1** and **Z2** are cyclic.
Like $Z3$, $Z1$ and $Z2$ are cyclic.
Group/monoid products
---
We already saw a lot of groups that are abelian and cyclic. However, we said that there are abelian groups that are **not** cyclic, so let's examine what those look like. Or rather, instead of looking into individual examples, I will give you a general way in which you can produce abelian non-cyclic groups from cyclic ones - group product.
We already saw a lot of groups that are abelian and cyclic. However, we said that there are abelian groups that are $not$ cyclic, so let's examine what those look like. Or rather, instead of looking into individual examples, I will give you a general way in which you can produce abelian non-cyclic groups from cyclic ones - group product.
Given any two groups, we can combine them to create a third group, called their *product group*. The product group is comprised of all possible pairs of elements from the two groups and of the sum of all their actions. Products group are always non-cyclic, because even if the two groups that comprise the product it are cyclic, and have just 1 action each, their product would have 2 actions.
Let's see how the product looks like take the following two groups (which, having just two elements and one operation, are both isomorphic to **Z2**). To make it easier to imagine them, we can think of the first one as based on the vertical reflection of a figure and the second, just the horizontal reflection.
Let's see how the product looks like take the following two groups (which, having just two elements and one operation, are both isomorphic to $Z2$). To make it easier to imagine them, we can think of the first one as based on the vertical reflection of a figure and the second, just the horizontal reflection.
![Two trivial groups](groups_product.svg)
@ -242,13 +251,13 @@ The *actions* of the product group are comprised of the actions of the first gro
![Klein four](klein_four_as_product.svg)
The result of our particular operation is called the **Klein-four group** and is the simplest *abelian non-cyclic* group.
The result of our particular operation is called the $Klein-four group$ and is the simplest *abelian non-cyclic* group.
Another way to present the Klein-four group is the *group of symmetries of a non-square rectangle*.
![Klein four](klein_four.svg)
**Task:** prove that the two representations are isomorphic.
**Task:** Prove that the two representations are isomorphic.
Like all product groups, the Klein-four group is *non-cyclic* because there are not one, but two main actions - vertical and horizontal spin. It is *abelian*, because the ordering of the actions still does not matter for the end results - this is because the actions do not interfere with one another.
@ -293,7 +302,7 @@ Now let's finally examine a non-commutative group - the group of rotations *and
![Reflection of a triangle](reflection.svg)
Those two operations and their composite results in a group called **Dih3** that is not abelian (and is furthermore the *smallest* non-abelian group).
Those two operations and their composite results in a group called $Dih3$ that is not abelian (and is furthermore the *smallest* non-abelian group).
![The group of rotations and reflections in a triangle](symmetry_reflection.svg)
@ -309,18 +318,18 @@ https://faculty.uml.edu/klevasseur/ads/s-monoid-of-fsm.html
Groups/monoids categorically
===
We began by defining a monoid as a set of composable *elements*. But then we said that those elements can be also seen as *actions* e.g. the **red ball** in our color-blending monoid can be seen as the action of **adding the color red** to the mix, the number **2** in the monoid of addition can be seen as the operation **+2** etc. This observation allows us to get a categorical view of the theory of groups and monoids.
We began by defining a monoid as a set of composable *elements*. But then we said that those elements can be also seen as *actions* e.g. the $red ball$ in our color-blending monoid can be seen as the action of $adding the color red$ to the mix, the number $2$ in the monoid of addition can be seen as the operation $+2$ etc. This observation allows us to get a categorical view of the theory of groups and monoids.
Cayley's theorem
---
But if we try to formalize the concept of actions, we will see that they are actually *functions*. Equating monoid elements with functions by unifying them with the monoid operation makes use of a concept (which is also very prominent in programming) called *currying*. It is the the notion that a function that accepts two arguments, together with one of those arguments already supplied, can be viewed as a function which takes just one argument. e.g. the monoid operation of the monoid of addition **+** with signature **(number, number) ➞ number** when paired with an element of this monoid (say **2**) is equivalent to the function which a function we can call **+2** (with a signature** (number) ➞ number**) that adds 2 to a given number. And because the monoid operation is a given in the context of a given monoid, we can view the element **2** and the function **+2** as equivalent.
But if we try to formalize the concept of actions, we will see that they are actually *functions*. Equating monoid elements with functions by unifying them with the monoid operation makes use of a concept (which is also very prominent in programming) called *currying*. It is the the notion that a function that accepts two arguments, together with one of those arguments already supplied, can be viewed as a function which takes just one argument. e.g. the monoid operation of the monoid of addition $+$ with signature $(number, number) ➞ number$ when paired with an element of this monoid (say $2$) is equivalent to the function which a function we can call $+2$ (with a signature$ (number) ➞ number$) that adds 2 to a given number. And because the monoid operation is a given in the context of a given monoid, we can view the element $2$ and the function $+2$ as equivalent.
Let's review another example of how that happens using the group/monoid **Z3**.
Let's review another example of how that happens using the group/monoid $Z3$.
![The group of rotations in a triangle - group notation](symmetry_rotation_actions.svg)
The elements of **Z3** can be seen as 3 functions that act on a set of 3 triangles (as the monoid is also a group, they are *invertable* functions.)
The elements of $Z3$ can be seen as 3 functions that act on a set of 3 triangles (as the monoid is also a group, they are *invertable* functions.)
![The group of rotations in a triangle - set notation](symmetry_rotation_functions.svg)
@ -335,7 +344,7 @@ But that is not all. As withnessed by a mathematically trivial, but otherwise ve
To reiterate, the representation of the monoid's elements as functions actually yields a representation of the monoid itself (sometimes called it's standard representation.)
Monoids as categories
===
---
Converting the monoid's elements to actions/functions yields an accurate representation of the monoid in terms of set theory.
@ -349,7 +358,7 @@ But wait, if *sets* in set theory correspond to *objects* in category theory and
![The group of rotations in a triangle - categorical notation](symmetry_rotation_category.svg)
The intuition behind this representation is encompassed by the requirement of **closure** that monoid and group operations have - it is the law that applying the operation on any two elements of the set of elements that form the monoid always results in an element that is also a member of the set e.g. no matter how do you flip a triangle, you'd still get a triangle.
The intuition behind this representation is encompassed by the requirement of $closure$ that monoid and group operations have - it is the law that applying the operation on any two elements of the set of elements that form the monoid always results in an element that is also a member of the set e.g. no matter how do you flip a triangle, you'd still get a triangle.
| | Categories | Monoids | Groups
|---| --- | --- |
@ -362,7 +371,7 @@ When we view a monoid as a category, this law says that all morphisms in the cat
Let's elaborate on this thought by reviewing the definition of a category from chapter 2.
> A category is a collection of **objects** (we can think of them as points) and **morphisms** (arrows) that go from one object to another, where:
> A category is a collection of $objects$ (we can think of them as points) and $morphisms$ (arrows) that go from one object to another, where:
> 1. Each object has to have the identity morphism.
> 2. There should be a way to compose two morphisms with an appropriate type signature into a third one in a way that is associative.
@ -381,15 +390,15 @@ When we view cyclic groups/monoids as categories, we would see that they corresp
![Presentation of an infinite cyclic monoid](infinite_cyclic_presentation.svg)
This is so, because applying the generator again and again yields all elements of the infinite cyclic group. Specifically, if we view the generator as the action **+1** then we get the integers.
This is so, because applying the generator again and again yields all elements of the infinite cyclic group. Specifically, if we view the generator as the action $+1$ then we get the integers.
![Presentation of an infinite cyclic monoid](infinite_cyclic_presentation_elements.svg)
Finite cyclic groups/monoids are the same, except that their definition contains an additional law, stating that that once you compose the generator with itself **n** number of times you get identity morphism. For the cyclic group **Z3** (which can be visualized as the group of triangle rotations) this law states that composing the generator with itself **3** times yields the identity morphism.
Finite cyclic groups/monoids are the same, except that their definition contains an additional law, stating that that once you compose the generator with itself $n$ number of times you get identity morphism. For the cyclic group $Z3$ (which can be visualized as the group of triangle rotations) this law states that composing the generator with itself $3$ times yields the identity morphism.
![Presentation of an finite cyclic monoid](finite_cyclic_presentation.svg)
Composing the group generator with itself, and then applying the law, yields the three morphisms of **Z3**.
Composing the group generator with itself, and then applying the law, yields the three morphisms of $Z3$.
![Presentation of a finite cyclic monoid](finite_cyclic_presentation_elements.svg)
@ -405,7 +414,7 @@ And then, if we start applying the two generators and follow the laws, we get th
![The elements of of Klein four](klein_four_presentation_elements.svg)
The set of generators and laws that defines a given group is called the **presentation of a group**. Every group has a presentation (and finite groups always have a finite presentation.)
The set of generators and laws that defines a given group is called the $presentation of a group$. Every group has a presentation (and finite groups always have a finite presentation.)
Free monoids
---

View File

@ -469,3 +469,7 @@ In the realm of orders, we say that **G** is the *join* of objects **Y** and **B
![Joins as coproduct](coproduct_join_morphisms.svg)
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.
<!--
TODO: Formal concept analysis
-->

View File

@ -11,7 +11,7 @@
version="1.1"
id="svg3397"
sodipodi:docname="connexity.svg"
inkscape:version="1.0.1 (0767f8302a, 2020-10-17)">
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata3403">
<rdf:RDF>
@ -35,12 +35,12 @@
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1016"
inkscape:window-width="2560"
inkscape:window-height="1376"
id="namedview3399"
showgrid="false"
inkscape:zoom="1.6510641"
inkscape:cx="236.24126"
inkscape:zoom="2.7111955"
inkscape:cx="203.44441"
inkscape:cy="85.6836"
inkscape:window-x="0"
inkscape:window-y="27"
@ -48,17 +48,17 @@
inkscape:current-layer="svg3397"
inkscape:document-rotation="0" />
<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"
transform="matrix(0.32913359,-0.00613048,0.03180803,0.45906746,363.99061,-25.236119)">
transform="matrix(0.32913359,-0.00613048,0.03180803,0.45906746,355.87611,-27.080324)">
<path
style="stroke-width:35.526"
style="stroke-width:35.52600098"
inkscape:connector-curvature="0"
id="path1478-7-9"
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.649;paint-order:markers fill stroke"
style="stroke-width:10.64900017;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)"
@ -102,24 +102,6 @@
id="circle3379"
style="stroke-width:6;stroke-miterlimit:10" />
</g>
<g
id="g2601"
transform="matrix(1.1909331,0,0,1.1909331,-103.29719,-26.406004)">
<circle
cx="153.12378"
cy="90.683884"
r="24.6"
id="circle3371-9"
style="opacity:0.13;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
fill="#f58235"
stroke="#e76524"
cx="148.32379"
cy="84.383881"
r="24.6"
id="circle3385-3"
style="stroke-width:6;stroke-miterlimit:10" />
</g>
<g
id="g2605-6"
transform="matrix(1.1909331,0,0,1.1909331,104.68035,-26.023797)">
@ -140,21 +122,19 @@
</g>
<g
id="g2601-9"
transform="matrix(1.1909331,0,0,1.1909331,337.62442,-24.474558)">
transform="matrix(1.1909331,0,0,1.1909331,329.50992,-24.474558)">
<circle
cx="153.12378"
cy="90.683884"
r="24.6"
id="circle3371-9-0"
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="#f58235"
stroke="#e76524"
cx="148.32379"
cy="84.383881"
r="24.6"
id="circle3385-3-8"
style="stroke-width:6;stroke-miterlimit:10" />
style="fill:#f58235;stroke:#e76524;stroke-width:6;stroke-miterlimit:10" />
</g>
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.389;stroke-miterlimit:10"
@ -173,6 +153,22 @@
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)"
d="m 197.036,89.49 c 39.237,-9.724 89.303,-9.828 120.462,-3.317" />
</g>
<g
id="g2601"
transform="matrix(1.1909331,0,0,1.1909331,-96.289211,-24.561799)">
<circle
cx="153.12378"
cy="90.683884"
r="24.6"
id="circle3371-9"
style="opacity:0.12999998;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
cx="148.32379"
cy="84.383881"
r="24.6"
id="circle3385-3"
style="fill:#f58235;stroke:#e76524;stroke-width:6;stroke-miterlimit:10" />
</g>
<path
style="fill:none;stroke:#ad0000;stroke-width:4.28042;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 122.22641,62.725611 c 4.12445,6.745379 7.84679,15.654249 12.4477,21.127309 1.22553,1.45785 2.0933,2.40738 3.15699,4.57479"

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

@ -11,7 +11,7 @@
version="1.1"
id="svg3397"
sodipodi:docname="reflexivity.svg"
inkscape:version="1.0.1 (0767f8302a, 2020-10-17)">
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata3403">
<rdf:RDF>
@ -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,53 +35,57 @@
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1016"
inkscape:window-width="2560"
inkscape:window-height="1376"
id="namedview3399"
showgrid="false"
inkscape:zoom="1.6510641"
inkscape:cx="257.64984"
inkscape:zoom="1.9171047"
inkscape:cx="224.85299"
inkscape:cy="114.46657"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g11563-1"
inkscape:current-layer="svg3397"
inkscape:document-rotation="0" />
<circle
cx="293.83749"
cy="101.59601"
cx="247.93906"
cy="95.597382"
r="24.6"
id="circle3369"
style="opacity:0.13;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
style="opacity:0.12999998;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<g
style="display:inline;fill:#dddddd;stroke:#838383;stroke-width:6.38899994;stroke-miterlimit:10"
id="g1482-7-0-1"
transform="matrix(0.32913359,-0.00613048,0.03180803,0.45906746,196.84567,-16.774972)">
<path
style="stroke-width:35.52600098"
inkscape:connector-curvature="0"
id="path1478-7-9-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="stroke-width:10.64900017;paint-order:markers fill stroke"
inkscape:connector-curvature="0"
id="path1480-1-3-1"
transform="matrix(0.89574,0,0,0.81736,18.384,154.236)"
d="m 197.036,89.49 c 39.237,-9.724 89.303,-9.828 120.462,-3.317" />
</g>
<circle
fill="#d71920"
stroke="#be1e2d"
cx="289.03748"
cy="93.296005"
cx="243.13904"
cy="87.297379"
r="24.6"
id="circle3383"
style="stroke-width:6;stroke-miterlimit:10" />
<g
id="g11563-1"
transform="matrix(0.2013077,0.42611105,-0.42300068,0.19983827,294.31857,-70.935206)">
<g
stroke="#6d6d6d"
fill="none"
stroke-width="6.389"
stroke-miterlimit="10"
id="g9939-3"
transform="matrix(0.13872164,-0.46111999,0.46010333,0.14045885,52.122419,269.81942)">
<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.06166,0.69487,-0.648,0.06164,394.029,56.19)"
stroke-width="35.526"
id="path9935-3" />
<path
d="M 382.5,152.612 C 331.334,225.435 280.133,213.588 257.986,179.516 241.51,154.168 246.13,86.543 317.498,86.173"
stroke-width="10.649"
paint-order="markers fill stroke"
transform="matrix(0.03241,1.30729,-1.23778,0.02809,454.669,-133.846)"
id="path9937-9" />
</g>
</g>
style="fill:#d71920;stroke:#be1e2d;stroke-width:6;stroke-miterlimit:10" />
<circle
cx="345.3692"
cy="96.125961"
r="24.6"
id="circle3369-3"
style="opacity:0.12999998;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
cx="340.56918"
cy="87.825958"
r="24.6"
id="circle3383-6"
style="fill:#d71920;stroke:#be1e2d;stroke-width:6;stroke-miterlimit:10" />
</svg>

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -6,11 +6,18 @@
<link rel="stylesheet" type="text/css" href="{{site.baseurl}}/custom-style.css">
<script>
window.MathJax = {
tex: {
inlineMath: [['$', '$'], ['\\(', '\\)']]
}
};
<script type="text/javascript" id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js">
</script>
<script type="text/javascript" id="MathJax-script"
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js">
</script>
</head>
<body>

View File

@ -62,10 +62,8 @@ Immanuel
iff
concatenative
structs
DeMorgan's
getter
OOP
=======
BHK
yey
intuitionistic
@ -90,7 +88,6 @@ Curry-Howard-Lambek
Curry-Howard
Lambek
cartesian
<<<<<<< HEAD
Functor
functor
functors
@ -105,3 +102,31 @@ Monoidal
morphisms
codomain
iff
proto-example
Immanuel
effectful
Zermelo-Fraenkel
idR
idG
subtype
bijective
Gottlob
Frege
René
Kazimierz
Kuratowski
De
Ockham
Ockham's
supersets
Unix
Latinized
disjunction
subseteq
varnothing
mathbb
infty
endif
vee
lor