Introduces Dynamic Logic, covering its principles, issues, and design variations, including footed vs. unfooted designs and multiple-output structures.
Explores bug-finding, verification, and the use of learning-aided approaches in program reasoning, showcasing examples like the Heartbleed bug and differential Bayesian reasoning.