Let C be a connected subgraph of G. The fringe of C in G is the set of edges e of G such that one end of e is in C and the other end is in G \ C. The fringe of C is a cut, it separates C from the rest of G.

Valid Progress Theorem: Let F be a subgraph of some MST of G. (In other words there exists a MST T such that F ⊂ T ⊂ G. By the way, F is a forest.) Let C be a connected component of F and let e be the least weight edge of the fringe of C. Then F ∪ {e} is a subgraph of some MST of G.

Proof: Let e = (u,v) such that u is in C and v is in G\C. Let T be a MST that contains F (T exists by hypothesis). Consider T ∪ {e}. Since T is a spanning tree, there is a path p in T from u to v and when we return from v to u via edge e we complete a cycle. The path p starts at u, so in the component C. Somewhere the path exits C, since it ends up at v which is not in C. The edge where it exits C, call this edge e2, is another fringe edge of C. But e is the lowest weight edge of the fringe, so T2 = T ∪ {e} \ {e2} is a spanning tree with total weight no more than that of T. T2 is a MST extending F and including e as promised. Corollary: Prim's and Kruskal's algorithms are correct, because at each iteration of their main loops they take a valid progress step.