In the previous lesson we explored one possible way of taking two functions (that are assumed to somehow already be “given” to us, so to speak) and forming a third (new) function from them. We noted that this is very similar in spirit to our definitions of unions, intersections, and Cartesian products of two sets, each giving a way to form a third set from the information of two initially given sets. And just as there is more than one to form a third set from two old ones, there is more than one way to do the same for functions. This lesson explores a second way of doing so.

Before making our definitions, let us make a little more contact with the likely more familiar story of sets. As mentioned above, we have three different ways of forming a new set from two old ones: 1) we can form the union of the two old ones, 2) we can form the intersection of the two old ones, and 3) we can form the Cartesian product of the two old ones. These three different constructions can then be classified into two different classes: one type of construction leaves the underlying elements of the two old sets alone, and the other type of construction creates a set whose underlying elements are different than those of both of the original sets. In particular, the process of forming the union or intersection of two sets is to simply form a third set whose elements are taken from the two original sets in precisely the same form. For example, if one of our old sets is a set of basketballs and dinosaurs and the other old set is a set of basketballs and dinosaurs, then the union (and intersection) of these two sets is a set of basketballs and dinosaurs just the same (just possibly a different collection of basketballs and dinosaurs). The Cartesian product construction, however, differs in the sense that the underlying **elements** are changed. Namely, in the above case of sets of basketballs and dinosaurs, the **individual elements** of the Cartesian product of the two old sets are neither basketballs nor dinosaurs, but rather a collection of **abstract pairs of **basketballs and dinosaurs.

Let us quickly note that this is all entirely okay! A set is just a collection of elements. If we want to build a new set from two old ones, all we need to do is create a collection of elements—there is no requirement that these elements must be the **same** as the elements in the old sets.

We now turn our attention to how this all relates to creating new functions from old ones. Our discussion in the previous lesson introduced the construction of the composition of two functions. In this construction we were able to define a third function from two old ones without changing the underlying domains and codomains. Namely, we saw that if we have a function and another function then we can define a third function . In other words, if the codomain of is the same as the domain of then we can define a third function whose domain is that of and whose codomain is that of . We are reminded therefore that we can’t “willy nilly” define a third function from two old ones—the two old functions must satisfy certain requirements on their domains and codomains. Moreover, and more interestingly, we can ask the question of whether or not we can define a third function from two old ones in such a way that the underlying domains and codomains are changed (analogous to the changing of the underlying elements in the Cartesian product construction). Indeed we can, and in exploring one particular way we will also find a way to define a third function from two old ones **even if the constraints on the respective domains and codomains needed for composition are not satisfied.** Let us see how this goes.

Suppose we’re given (by some enemy or divine creature or math teacher or what have you) two functions and . We note immediately that unless (or ) as sets, we **cannot** define the composition (or ) of and because in neither case does the domain of one equal the codomain of the other. This doesn’t mean that we can pack up and go home, though, for there are other interesting things that we can do.

The way out of our “oh-no-we-can’t-form-a-composition-function” conundrum is to change the underlying **domains** and **codomains**. The essence of this idea is that even though we can’t (in general) define a function from, say, to using the information of and we **can** define a function from the Cartesian product to the Cartesian product . In other words, as we’ll soon see, we can define a new function from the Cartesian product of the domains of and to the Cartesian product of the codomains of and . Despite this possibly confusing wording, the math is actually quite straightforward.

Consider the set . We remind the reader that this is nothing but the set of pairs with and . For each though, assigns a particular element since we know that is a function from to . Similarly, for each assigns the particular element to it. Thus, to each we can assign the element .

Before defining our function, we need to first check that this method of assigning elements in to elements in is in fact in line with the definition of a function. In particular, we need to ensure that **each** element in is sent **somewhere** in **and** we need to make sure that each element in is sent **to only one** element in . This property of the assignment procedure indeed follows straightforwardly from the fact that **we already know** that and are functions and therefore have the “function properties” required of them for their respective domains and codomains. We leave the explicit proof—which is highly recommended to the reader to at least read through, as it nicely illustrates how to succinctly use the formalism that we’ve built up to **prove** new things within the formalsim—to the exercises. For now, we **assume** that this method of assigning elements of to elements of indeed forms a function.

Let us give this function some nice notation. Namely, we denote the function that sends each to by the symbol . Thus, analogous to the notation we have the notation . The expression gives us a symbolic “name” for the function, is the domain of the function, and is the codomain of the function. Additionally, analogous to the statement that is an element of (namely, that element of that is sent to by ), we now have the statement that is an element of where in the symbolic expression we simply have that replaces as the name of the function and replaces as the element in the domain that is getting sent to the codomain. Explicitly, we have that since the right hand side is the element in that is, by definition, the image of the element under the function .

Let’s now take a look at a concrete example so that we can get a feel for how these abstract ideas can actually be used to do some mathematical things. Let us suppose that that that and that let us suppose that is a function such that and and finally let us suppose that is a function such that and Phew! That was a lot of “supposing”, but this is all that is meant by the phrase “suppose we’re given a function and a function ”. Namely, to be “given” some mathematical structure, we must either construct it explicitly ourselves (which we’ve just done, by “supposing” that we have them), or we acquire them from some other mathematical problem or proof—either way, though, once we have them, we can do with them what we want. In particular, let us now examine the function that we now know about, namely .

We have already explicitly constructed both the functions and and therefore the action of the function is **completely fixed for us**. In other words, we had the freedom to choose and as we desired (so long as what we chose was indeed mathematically well-defined, i.e. satisfying the requirements of what a function is, etc.), but once we’ve chosen these functions we are **stuck** with the resulting . This is part of the beauty of math: we can define certain structures quite freely, and then we are **forced** to deal with their eternal, objective, indisputable consequences. The **art** of mathematics then is, in part, the act of figuring out which objects to define in order to get the most interesting and/or beautiful and/or useful (unavoidable) consequences.

Enough philosophizing, let us just go on and see what the function with and defined above, looks like. First let’s examine the domain of . This is and writing out all of the elements explicitly we have

.

Let’s now look at the codomain, . We have

.

We then have that the image of, for example, under the action of the function is . In symbols, we have . In the same way, we can see where the other five elements in are mapped under and we leave the explicit results for the exercises (see Exercise 2). We also leave one other full example—a slightly more open ended example—to Exercise 3.

In the next lesson we return to the world of groups and homomorphisms, and we use the construction of to give a more abstract view of homomorphisms. This will have important uses for us in the (very) far future when we discuss the mathematical structure known as **categories**, but for now it will simply give us a (very) cool pictorial representation of homomorphisms. Here’s to plowing further into the true beauty of math!

Exercises

1) Prove that if and are both functions, then as defined in this lesson, is also a function.

2) Explicitly write where the remaining five elements (i.e., those that are not ) in go under the action of in the example discussed at the end of this lesson.

3) Define four sets and of your choosing, and define two functions and also of your choosing (but make sure they’re well-defined!). As explicitly as possible*, write out the action of i.e., write out where each element in the domain of goes in the codomain.

*It may not be possible to explicitly list where each individual element in the domain goes, as may be the case if you define sets with infinitely many elements. Nonetheless, express the action of as concretely as possible.