Some problems are not easily solved using structural decomposition as we've defined it. Others are solved only inefficiently by pure structural decomposition. We introduce two new kinds of generalization to help solve such problems. We introduce invariants as a way of recording the assumptions that a function makes about its environment.

Part VI from the textbook. We are doing things in a different order than the textbook does. Also, we are doing this topic rather differently than the textbook does, so use the textbook for background rather than as a normative reference.

- Lesson 7.1 Solving Your Problem by Generalization
- Lesson 7.2 More Examples of Invariants
- Guided Practice 7.1
- Lesson 7.3 When do I need an invariant?
- Lesson 7.4 Case Study-- Undefined Variables in GarterSnake
- Guided Practice 7.2
- Guided Practice 7.3
- Lesson 7.5 Foldr and Foldl

Last modified: Mon Oct 17 16:35:48 Eastern Daylight Time 2016