This document discusses the pumping lemma and its applications. It introduces the pumping lemma for regular languages and context-free languages. For regular languages, any string of length n or greater can be broken into five parts where the second and fourth parts can be repeated any number of times to create a new string that is still in the language. For context-free languages, any string of length n or greater can be broken into two parts that can be repeated to create a new string in the language. Examples are provided to demonstrate how the pumping lemma can be used to prove that a language is not regular or context-free. The pumping lemma has applications in areas like proving invalid moves in games and determining operating temperatures in power stations.