Pokémon are really interesting creatures. They gain experience, and then use this experience to evolve. Different precursor Pokémon evolve into different evolved forms. We can represent these relationships with an evolution diagram that connects precursor Pokémon to their evolutions with arrows. I like pictures, but I'm bad at art, so all pictures in this blog post are from the Bulbapedia.1
1. http://bulbapedia.bulbagarden.net/wiki/Main_Page
The diagram above shows that Growlithe evolves into Arcanine, and that Staryu involves Starmie. Diagrams like this make us believe that everything is right in the world; everyone has their proper place in the order of things. We could make our diagram bigger to involve more Pokémon Ideally, if all of the Pokémon that can evolve were on the left of our diagram, and all the Pokémon that result from evolutions were on the right of our diagram, we might be able to make a diagram with all the Pokémon in the universe! In that case, every time we caught a Pokémon, we could look it up in our diagram. Precursor Pokémon would show up on the left side, so we could figure out exactly what they evolve into, and evolved Pokémon would up on the right side of our diagram, we could figure out exactly what they evolved from! Wouldn't this be exciting? Before we make the full diagram, though, let's try a few more smaller ones as practice. For simplicity, let's only consider Generation 1 Pokémon so we don't get overwhelmed.
Oh no! Something has gone terribly, terribly wrong. Our beautiful plan of figuring out exactly what each precursor Pokémon evolves into is ruined. When my Eevee was discussing its career plans with me, I showed it this diagram, and it got really confused. In fact, it hurt itself in its confusion! This made me very upset. Let's try again.
Oops! Looks like we messed up again. Nothing evolves into Aerodactyl. When my Aerodactyl saw me making this diagram, it realized that if it ever had children, they wouldn't be cute little precursor Pokémon like the little Pichu babies the neighbor's Raichu just had, but instead they would be just as bony and ugly as itself. Then it threw a tantrum and destroyed half of my kitchen. Now I have to eat take-out Weepinbell sprouts with synthetic Gloom sauce from Gary's Garden, a low-quality "health food" joint run by a former Pokémon trainer who has fallen on bad times. My stomach is sad.
It turns out that I should never have dreamed about a universal Pokémon evolution diagram with every precursor Pokémon pointing to a single evolved form. Let me explain why, so you never have to suffer through what I've suffered through.
First, let's introduce the concept of a binary relation. In mathematics, a binary relation is defined as a set of pairs. In this context, the word "set" also has a very specific meaning - it's a bag that contains certain things and only those things. A set is often described as a list of things enclosed in curly braces. For example, the empty set contains nothing between the braces; sometimes it's also represented by a special symbol:
{}. In the context of evolution in Pokémon, the binary relation we are interested in is pairs of Pokémon where the first Pokémon involves into the second. We can represent these as ordered pairs like the ones that we use to denote coordinates in a graph. Thus, the first diagram we drew contained the following pair:
The full meaning of the first diagram can be represented as a relation, or a set of these pairs:
As you can see, the pictures are much nicer. Set notation can get quite cumbersome. Nevertheless, it helps for some purposes, so let's also describe the second diagram in this fashion:
The problem that we noticed in the diagram is now visible in a different fashion: the name Eevee is repeated multiple times in the first elements of different pairs. In mathematical terms, the problem with this relation is that it is not a function. A function is a relation that maps every input to a single output. In a functional evolution relation, a precursor Pokémon can map to two evolutions only if those evolutions are also the exact same Pokémon. In other words, the same precursor Pokémon cannot map to any two different evolutions in a functional relation.
Maybe we can fix this by reversing the order of the diagram? Then, it would look like this:
Maybe we can fix this by reversing the order of the diagram? Then, it would look like this:
This is a functional relation, because every evolution maps to exactly one precursor. However, it still confuses my Eevee, because it doesn't know which evolution it is the precursor of! What's the problem now? The relation now looks like this:
The problem now is that Eevee is repeated multiple times in the second elements of different pairs. In mathematical terms, this means that the relation is not injective. An injective precursor relation is one in which two evolved forms can map to the same precursor only if they are also the same Pokémon. In other words, no two different evolved forms can map to the same precursor.
Finally, we can represent the third diagram (with Aerodactyl) as a relation in set notation:
Although there is a Pokémon in the third diagram, there are no pairs of Pokémon, so the relation is equivalent to the empty set. That's not the reason that the diagram is a problem, though. If we added Aerodactyl to the first diagram, the new diagram would look like:
The set theory notation for this relation is still:
Now we see that the real problem with this relation is that it doesn't say anything at all about Aerodactyl, even though Aerodactyl is in the diagram. In mathematical terms, this means that the relation is not surjective. A surjective relation is one in which every evolved form of a Pokémon is contained in the map because it is paired with some precursor.
Now that we know about functionality, injectivity and surjectivity, we can see that the first diagram was a function that was both injective and surjective. These kinds of relations are called bijective functions, or bijections. It turns out that if a relation is a bijection, that means that the set of things on the left side of the relation diagram (the domain) is exactly the same size as the set of things on the right side (the range). This is true even for infinitely large sets: if we show that there exists a bijection between two infinitely large sets, then these sets are infinitely large with the same order of infinity. This means that there are some countably infinite sets, meaning that there exists a bijection between those sets and the set of natural, counting numbers, and some nondenumerably (uncountably) infinite sets, for which no such bijection exists. Mind-boggling, right? Anyway, we can't make a full Pokémon evolution diagram that has the properties we wanted at the beginning, because the evolution relation is not bijective on the set of all Pokémon, not even on just Generation 1 Pokémon. So don't even bother. You'll just end up eating take-out Weepinbell sprouts with synthetic Gloom sauce from Gary's Garden.