The most detailed rationale for programs is performed locally: considering the proximity of a program – usually a single function and the interfaces around it – and the reason for its action without reference to the rest of the program. This justification serves a broader objective: ensure that the whole program behaves appropriately. In this video, you will be learning how to put together neighborhoods of local reasoning, and the global reasoning that ensures that they form a cohesive whole.