 Suppose we have a bipartite graph x, y, and want to match every vertex in x with a unique vertex in y. For our matching to exist, the obvious necessary condition is for the neighborhood of any subset to be bigger than the subset itself. But is it sufficient? Since we can count the number of vertices and edges in a graph, induction proofs are very common in graph theory. So let's consider. Now, remember, you can assume anything you want as long as you make it explicit. So let's keep track of them. We'll assume we have a bipartite graph with partite sets x and y. Let's try to prove the obvious necessary condition also suffices that if every subset has a neighborhood that is at least as big as it is, then we can find a matching. So clearly the theorem is true if x has cardinality 1. So for our induction step, let's assume the theorem is true for all graphs where x has cardinality less than or equal to k. In other words, we're assuming that if the cardinality of x is less than or equal to k, then if for all subsets of x the neighborhood is larger than the subset, a matching exists that saturates x. So now consider a graph G where x has k plus 1 vertices, where for all subsets of x the neighborhood is larger than the subset itself. We'll write that down as our next assumption. So let's take any vertex in our set x. Our assumption implies that the neighborhood of this lone vertex has cardinality greater than or equal to 1. So it has at least one neighbor in y. So let's put the edge x, y in our matching and consider a new graph G' which is G minus both vertices x and y, where x' is x minus x and y' is y minus y. And since x' has k vertices, our result follows provided every subset has its neighborhood larger than the subset itself. The important thing to keep in mind is that while this was true for subsets of G, we've removed some vertices so it might not be true for subsets of G'. And a useful idea in proof, if you can get to your destination despite any roadblocks, you can get to your destination. So clearly if this road is blocked and we can still get there, we can prove our result. So suppose there is some subset T where the neighborhood is smaller than T. We'll note that's a new assumption. Since the neighbors for any subset of x' must be in y' and the only difference between y and y' is the removal of a single vertex, that means the neighborhood of T in G' must be at least as large as the neighborhood of G and T minus 1. That is minus that single vertex. We assume the neighborhood of G' of T was smaller than T and so this means... but again, since T is a subset of x and we know the neighborhood of any subset of x is at least as large as the set itself, this tells us that... so the neighborhood of T in G must be the same size as T itself. Now, since T itself is a subset of x, then any subset T' of T is also a subset of x and so we know the neighborhood of T' has to be larger than T' itself but the neighborhood of T' has to be a subset of the neighborhood of T but notice that this means that T and its neighborhood meet the requirements of our induction hypothesis. In particular, there's fewer than K vertices in T and every subset of T has a neighborhood that is at least as big so by our induction assumption, there is a matching from T to the neighborhood of T. Let's draw a picture to help organize our thoughts. This means that we can partition x into two sets, T and the rest of it, where the neighborhood of T has the same cartonality as T. Meanwhile, y can be partitioned into two sets. The neighborhood of T and the rest of it. And remember, there is a matching between T and its neighborhood. Now, consider a subset of x minus T. Since r and T are disjoint, the cartonality of the union is just the sum of the individual cartonalities. Since the union is still a subset of x, our induction assumption guarantees that the neighborhood of the union has a cartonality greater than the union itself, which is the sum of the cartonalities. But since all neighbors of T are in the neighborhood of T, which has cartonality T elements, then there must be at least cartonality r neighbors of r in y minus the neighborhood of T. If that's not clear, then consider this. We have to fit r plus T neighbors someplace at most T of them can go here, so at least r of them have to go here. And so the neighborhood of r has to be at least as large as r itself. Now, notice that this means that x minus T and y minus the neighborhood of T also meet the requirements of our induction hypothesis. x minus T has fewer than k vertices, and for every subset, the neighborhood is larger than the set itself, and so there is a matching between our two sets. And so we can form a matching by putting together the matching that exists between T and the neighborhood of T and the matching that exists between x minus T and y minus the neighborhood of T, which completes the proof of our theorem. So putting everything together, we've obviously proved that if g is a bipartite graph with partite sets x and y, where a matching saturates x, then for every subset of x, the neighborhood is at least as large. Informally, every subset of x has a target set that is at least as big. We just proved the converse that if we have a bipartite set where the neighborhood of any subset is at least as big, then the matching exists. Together, these form Hall's theorem, which could state as an if and only if theorem, but we won't. Remember, if and only if theorems make for good poetry but bad mathematics, always restate them as two conditionals. We note that the obvious necessary condition for a matching to exist is that the neighborhood be at least as big, and as we proved it is also sufficient. This happens frequently enough in graph theory and other areas of mathematics that such results are known as Tonka's theorems. The obvious necessary condition also suffices. The phrase seems to have originated with the British mathematician Crispin Nash-Williams.