# Thoughts that guide a proof in abstract algebra

I would like to know which strategies you use when proving abstract theorems. I have a particular example in mind. I worked some hours on a proof of the following:

In the given diagram modules with corresponding module homomorphisms are shown. The homomorphisms f and g are in fact isomorphisms. Furthermore the rows are exact sequences. Task: Show that also h is an isomorphism. \begin{array}{ccccccc} 0 & \to & A & \to & C & \to & B & \to & 0 \\ & & \downarrow f & & \downarrow h & & \downarrow g \\ 0 & \to & A' & \to & C' & \to & B' & \to & 0 \end{array}

I would like to not present my thoughts right from the start, so I don't spoil any nice ideas. To me it is very interesting which strategies you use to prove the theorem. Do you start working in a mechanical way? Do you try to convince yourself of the truth of the theorem using some heuristic reasoning? Do you forget about the goal at first and derive some properties that might help? Do you work with some mental images?

-
The obvious first idea: prove seperately that $h$ is 1-1 and that $h$ is onto. –  Thomas Andrews Jun 5 '11 at 20:56
Just in case it is useful, this result usually goes by the name Short Five Lemma. –  Adrián Barquero Jun 5 '11 at 22:26

I would definitely start by trying to convince myself the truth of the theorem using some heuristic reasoning. Among other things, I would mentally discard the short exact sequences in favor of submodules and cosets. In this case, we have a homomorphism $h\colon C\to C'$ between two modules with the following properties:

1. $h$ maps some submodule $A$ of $C$ isomorphically to a submodule $A'$ of $C'$.

2. Moreover, $h$ induces a bijection between the cosets of $A$ and the cosets of $A'$.

From this reasoning, it seems clear that $h$ will be a bijection, since the map from each coset of $A$ to the corresponding coset of $A'$ will resemble the isomorphism from $A$ to $A'$.

Next I would write out the diagram-chasing proof. However, I would be thinking in terms of submodules and cosets, and change the language to short exact sequences as I write. Here's the argument that would go through my head:

Injective: Suppose $h(c_1) = h(c_2)$ for some $c_1$ and $c_2$. Since $h$ acts bijectively on cosets, $c_1$ and $c_2$ must be in the same coset of $A$. Then $c_1 - c_2$ is an element of $A$ that maps to $0$ under $h$, so $c_1 = c_2$.

Surjective: Let $c' \in C'$. How can we find an element of $C$ that maps to it under $h$? Well, we know that $h$ acts bijectively on cosets, so we can find a coset $c+A$ that maps to $c'+A'$ under $H$. If we choose a representative $c$ of this coset, it won't necessarily be the case that $h(c) = c'$. However, it is true that $h(c) = c' + a'$ for some $a' \in A'$. Then $h(c-a) = c'$, where $a$ is the element of $A$ that maps to $a'$.

Here's what it would look like written out:

\begin{array}{ccccccc} 0 & \to & A & \xrightarrow{i} & C & \xrightarrow{\pi} & B & \to & 0 \\ & & \downarrow f & & \downarrow h & & \downarrow g \\ 0 & \to & A' & \xrightarrow{i'} & C' & \xrightarrow{\pi'} & B' & \to & 0 \end{array}

Injective: Let $c_1,c_2\in C$, and suppose that $h(c_1) = h(c_2)$. Then $$g(\pi(c_1)) \;=\; \pi'(h(c_1)) \;=\; \pi'(h(c_2)) = g(\pi(c_2)).$$ Since $g$ is injective, it follows that $\pi(c_1) = \pi(c_2)$, so $\pi(c_1 - c_2) = 0$. It follows that $c_1 - c_2 = i(a)$ for some $a\in A$. Then $i'(f(a)) = h(i(a)) = h(c_1-c_2) = 0$. Since $i'$ and $f$ are injective, it follow that $a = 0$, so $c_1 = c_2$.

Surjective: Let $c'\in C'$. Since $g \circ \pi$ is surjective, there exists a $c\in C$ so that $g(\pi(b)) = \pi'(c')$. Then $\pi'(h(b)) = \pi' (c')$, so $h(b) - c' \in \ker(\pi')$. It follows that $h(c) - c' = i'(a')$ for some $a' \in A'$. Since $f$ is surjective, there exists an $a\in A$ so that $f(a) = a'$. Then $$h(c-i(a)) \;=\; h(c) - h(i(a)) \;=\; h(c) - i'(f(a)) \;=\; h(c) - i'(a') \;=\; h(c) - (h(c) - c') \;=\; c'.$$

-
If you are going to use additivity in the proof of injectivity ("...so $\pi(c_1-c_2)=0$") wouldn't it be simpler to begin with $c\in C$ such that $h(c)=0$, and prove that $c=0$? –  Arturo Magidin Jun 6 '11 at 0:55
@Arturo: Yes, that would be a bit simpler. It didn't occur to me as I was proving it, so I'll leave my post as it is. –  Jim Belk Jun 6 '11 at 1:26

With this particular kind of problem, simple diagram chasing is usually the way to go. Show that if $c\in C$ maps to $0$ under $h$ then $c=0$; show that any $c'\in C'$ is in the image of $h$. Exactness of the rows together with the fact that $f$ and $g$ are isomorphisms are key, and they provide the answer straighforwardly enough.

-

Not an elementary approach to this problem, but the first "application" of of spectral sequences that I ever saw was to take the diagram, recognize it as a double complex, and use the fact that double complexes have two spectral sequences associated with them, which can often be played off each other. I first saw this in notes by Ravi Vakil, although I cannot seem to find them right now. The method is discussed in this math overflow answer.

The usual method for tackling a problem like this, as Arturo says in his answer, is diagram chasing: look at individual elements of the groups and see where they go as you move around the diagram. Diagram chasing is and important and fundamental technique that you will do maybe a dozen times to prove various lemmas, and then you will never do because the lemmas suffice. In particular, this particular problem is a special case of the five lemma, and after you build up other fundamentals of homological algebra, such as the snake lemma, the construction and comparison of derived functors, and some results about spectral sequences, you run out of the need to do explicit diagram chases.

However, to answer the question you asked: when I tackle the problem, I first ask if it is similar to anything I have previously solved. If nothing springs to mind, I look for any structure I can which I could reasonably use. Occasionally, if I don't have a good feel for what is going on, I will try to come up with a simple example and see if it is vulnerable to some sort of specialized attack, although this can be difficult, as a program which is difficult to approach is often resistant to attempts to find examples (although sometimes, by taking a special case where you have more properties to work with, you can solve the problem despite not being able to find an explicit example).

All the things you mention are good techniques, and what works best for others might not work for you. The more problems you solve, though, the more techniques you will pick up, and the better a feel you will get for attacking problems.

-