What is the difference between a theorem, a lemma, and a corollary?

This morning I was reading this paper: “Verifying Strong Eventual Consistency in Distributed Systems” and realized that I didn’t actually know what a “lemma” or “corollary” was.

Today I decided to look up the definitions for these terms and came across this blog post by Professor David Richeson. In his post he defines “theorem”, “lemma”, “corollary”, and a few other related terms.