CS 641 Lecture -*- Outline -*- * Basic Predicate Transformers (Chapter 11.3) ------------------------------------------ PREDICATE TRANSFORMER SUGARS .q == f^{-1}.q (functional update) {g}.q == g \intersect q (assertion) [g].q == !g \union q (assumption) So... abort == {false} skip == == {true} == [true] magic == [false] ------------------------------------------ Q: With this notation, what is wp.? wp.skip? just , skip Q: Why is abort called that? What is the intuition behind "magic"? ------------------------------------------ ASSIGNMENT STATEMENTS The most useful functional update .q.s == { definition } q((x := e).s) == { substitution theorem } q[x := e].s Thm 11.2: Let x be an (list of) attribute(s), let e be an (list of) expression(s), and let q be a Boolean expression. Then var x |- .q == q[x := e] ------------------------------------------ Q: Can you simplify (;).(x > y) ?