Skip to main content
  (Week 10)

Lecture 10: Mini-Project: Final

Week 10 | Jun 1 – Jun 7

The final lecture of the term is a retrospective across L01–L09 and a capstone on synthesis. Practice opens with a tour of the quarter and a slate of student project demos. Theory flips the solver from refuting properties to synthesizing programs, introducing angelic execution, CEGIS, and the broader field. Studio is open time for course evaluations, more demos, and discussion.

What We Cover

Practice is a retrospective. The page walks each of the nine prior lectures with text and a visual, names a same-engine-two-shapes through-line (L01–L06 asked Z3 for satisfying assignments; L07–L09 asserted negations and read satisfying assignments as counterexamples), and closes with a section on the four reading reflections and the cohort discussions that surrounded them. Project demos run after the retrospective; walk-ups are welcome at the break.

Theory flips the oracle. The page reframes nine weeks of solver work as demonic verification and introduces angelic execution: asking the solver for inputs that make the program succeed. It then pushes one quantifier past angelic to synthesis, where the solver picks a program from a sketch and the spec must hold for every input. The CEGIS section uses a runnable hand-trace from Bornholt's tutorial. A closing survey names auto-active tools, proof assistants, and synthesis-adjacent work as instances of the same reduction-to-query shape.

Studio is open time for course evaluations, more demos, and discussion. Possible threads include follow-up on Theory's CEGIS material, equality saturation, SMT versus proof assistants, and where verification work lives in industry.

Practice: Course retrospective and project demos

A retrospective across L01–L09, then the project demos.

Theory: Angelic execution, CEGIS, and synthesis

For nine weeks we have used the solver to encode problems and to verify properties. The same engine can also find inputs that make programs succeed (angelic execution) and programs that satisfy a spec on every input (synthesis).

Studio: Open studio and course evaluations

The final studio of the term opens time for course evaluations, more demos, and discussion.