Prim's Algorithm produces Minimum Spanning Tree

Theorem
Both Kruskal's Algorithm and Prim's Algorithm always produce a minimum spanning tree.

Proof
Suppose that either algorithm produces a tree $$T$$.

Let there exist another spanning tree $$S$$ with a smaller total weight.

Let $$e$$ be an edge of smallest weight which lies in $$T$$ but not $$S$$.

If we add $$e$$ to $$S$$, we obtain a cycle, from Equivalent Definitions for Tree.

This cycle contains an edge $$e'$$ which is in $$S$$ but not $$T$$, otherwise $$T$$ would not be a tree.

So, we replace $$e'$$ in $$S$$ with $$e$$ from $$T$$, and obtain a new spanning tree $$S'$$.

From the method of construction of $$T$$, it follows that the weight of $$e$$ can not exceed that of $$e'$$.

So the total weight of $$S'$$ does not exceed the total weight of $$T$$.

Also, $$S'$$ has one more edge in common with $$T$$ than $$S$$ has.

We repeat the above procedure, and repeatedly change edges of $$S$$ for edges of $$T$$, and each time the weight of the intermediate graph does not exceed that of $$T$$.

Thus the weight of $$T$$ does not exceed that of $$S$$, contradicting the definition of $$S$$.

Hence $$T$$ must be a minimum spanning tree.