CS 641 meeting -*- Outline -*- * Introduction write the name of the course on the board. ** Who introduce self and meet everyone have them write names on board ** Why I'm excited about studying axiomatic semantics (course spec) *** more abstract semantic technique seeing others using axiomatic semantics impressed by brevity compared to denotational, makes others able to publish faster, more often easier to understand because more abstract *** more easily applied closely related to programming, verification, spec. languages. want to use it to give semantics to Larch/C++ verification gives insight into safe coding practices conversely, what can be verified might make good language design Euclid, Alphard want eventually to do that for OOP *** it's new for me have already studied denotational and operational semantics want to see how axiomatic compares *** want to see if insights on proofs really help Gries article on calculational proofs excited me, as a teaching method (no rabbits out of the hat) as a way to explain things proof heuristics impressed by the way Dijkstra and Scholten do predicate calculus Hesselink, Cohen, and Dijkstra all use this, *** historical reasons best previous book on axiomatic semantics (deBakker) is out of print got Hesselink monograph to review, was impressed with its modern treatment thought his techniques could be useful to my kind of work want to try to extend to OOP got Cohen's book because it was really radical and even though I don't believe it all, it has something to say interested in studying it also in more detail thought it would be a good introduction to verification and it's the 25th anniversary of the publication of Hoare's paper! Q: what about the material interests you? ** Plan of course (syllabus) overview, motivation and a bit of history week 1 papers by Hoare, Dijkstra background: precision, calculation, predicate calculus, verification weeks 2-4 using Cohen Hesselink as far as we can go... weeks 4-15 summary and evaluation at the end Q: Would you make any changes to the plan? ** Some questions I'd like to answer *** what is it? what exactly is a predicate transformer semantics? what variations are there (other ways to do axiomatic semantics)? how does it fit in with type checking? what is the connection to denotational semantics? how does it relate to procedral and data abstraction? *** limitations? what are the limitations? what about exceptions? higher-order procedures? blocks as in Smalltalk? parallelism? would equational reasoning be better? (for what?) dynamic logic? what languages are suited for such descriptions? *** utility? how is pred. trans. sem. useful in verification? in refinement? what changes would you make to, say Larch/C++ to support this style of verification can you use a pred. trans. sem. to prove stuff like the homo. theorem? or type safety? what would a axiomatic semantics of C++, Smalltalk, Cecil, ... be like? how do you adapt it to handle side-effects? aliasing? *** miscellaneous what's the role of "relative completness"? why all the fuss about nondeterminism? what are the research problems? Q: What questions do you have about the material? ** Possible projects (applications) Design a axiomatic semantics for (part of) C++, Cecil, Smalltalk, ... Design an OOPL using these techniques Give a formal semantics to Larch/C++, Larch/Smalltalk, ... Q: would you like to work on some kind of term project like these? ** How I'll run the course *** overview informal and friendly lecture meetings: get old homework back (you keep it), discuss homework (some put on board), hand in homework discuss next topic homework: steady, mostly proofs, possible projects grading: based on evidence, participation, final oral exam I'll give comments on homework, and I'll try to help you if it needs work, but no grades on homework. pace: we'll go fast on the verification stuff (Cohen), as it's not necessary to have facility in verification want facility in calculational proofs, predicate calc. want understanding of verification we'll go slow on Hesselink, trying to uncover and explore carefully trying to apply to C++ etc. at various points want deep understanding of that material (semantics) chapters 0 and 1 should be prepared by Cohen's book so may be a bit faster for homework, we'll be flexible, try to do what is assigned by the next time, but let me know if there's a problem and tell me how the load feels we'll try to adjust it to how much you can do. *** red tape prerequisites (ok to have 531 concurrently this offering) books: Cohen, Hesslink these and Dijkstra-Scholten are on reserve also note the literature intro. newsgroup: isu.coms.641 Q: everyone have all the handouts? ** summary Q: any other questions about the course?