CS 641 lecture -*- Outline -*- * summary and review ** what to read in the rest of the book part 2 gives semantics of statements, including statements as games (14) part 3 treats recursion and looping part 4 treats other tpics, including specification statements might want to reread chapter 1 for review ** technical ideas Q: what technical ideas did we discuss? contracts, agents, specification, correctness, refinement, posets, lattices, HOL Q: What did we learn about HOL? logic encompassing the lambda calculus the analogy between lattices and logic; boolean lattices, etc. Q: What did we learn by learning to do proofs in HOL? Predicates are isomorphic to sets, relations to predicates Properties of variables, substitution property, multiple assignment, parameter passing, blocks Relational semantics, coercion operators, relational assignment, different kinds of relational semantics Predicate transformer semantics, relational updates, duality, Predicate transformers are also a boolean lattice ** intuitions Q: what intuitions did we discuss? specifications, contracts, wide-spectrum langauges lattices, homomorphisms, categories proofs that go "over and back" (algebra) deductive systems, modeling of states pointwise extension, isomorphic views of predicates and sets blocks as a state extension, computation, retraction different kinds of semantics (angelic and demonic) for nondeterminism hierarchy of semantic domains inheritance of properties from codomain in function construction being able to work at more abstract levels of lattices in a proof ** relationships/questions Q: what kind of questions did we ask? Lattice (order) properties, category (function, composition) properties Relationships between expressions and semantics ** limits Q: what are the limits of the theory that we've studied so far? Doesn't deal with OO, concurrency, components, etc.