1. The document discusses several normal forms for context-free grammars (CFGs), including eliminating useless variables, removing epsilon productions, removing unit productions, and Chomsky normal form.
2. It provides algorithms and proofs for transforming a CFG into these normal forms, such as identifying nullable and epsilon-deriving variables, and breaking productions into chains of length 2.
3. The key steps to put a CFG for a context-free language L minus the empty string into Chomsky normal form are: clean the grammar, add variables for terminals, and break productions longer than length 2 into chains of length 2 productions. Proofs ensure the transformations preserve the language.