**Instructor:** Neil Immerman

** Aim of the Course:** We will provide introductions to propositional,
predicate, and modal logics. These will be studied and used throughout the
course as tools for the specification and verification of properties of
programs and protocols.

**First-Order Logic:**propositional logic, predicate logic, completeness and compactness theorems, semantics via quantifier games, Gödel's incompleteness theorem.**Modal logic:**temporal logic and logics of knowledge, axiomitization, semantics via Kripke structures.**Applications:**(These may change slightly according to the background and interests of the students.)- Evolving Algebras: due to Gurevich et. al., this offers an operatonal semantics for programming languages and protocols via finite logical structures.
- Temporal Logic of Actions: Lamport's system of specification and verification via temporal logic
- Distributed Protocols: we will use logics of knowledge to express correctness and security of distributed protocols.
- Model Checking: using temporal logic to verify properties of systems
- Symbolic Model Checking: using ordered binary decision diagrams (OBDDs) to symbolically represent and model-check huge Kripke structures.

**Texts:** For first-order logic, we will follow *Logic and
Structure,* Third Edition, by Dirk van Dalen, Springer-Verlag. This is
available at the **Jeffery Amherst College Store** in downtown Amherst.
For the rest of the course, we will follow selected research papers.

**Prerequisites:** Sufficient mathematical sophistication. If you are
unsure whether you have it, try looking at van Dalen and/or come
talk with me.

- Notes: Sept. 4, 1996
- Notes: Sept. 9, 1996
- Notes: Sept. 11, 1996, plus first problem set, Due: 9/25/96
- We have finished Propositional Logic and begun Predicate Logic. See: Notes: Sept. 16, 1996
- On Wednesday, Oct. 2, I proved the Completeness Theorem and the Compactness Theorem for predicate logic. You should have read van Dalen through page 118. Note that in this course we are only interested in the countable case, so you do not need to worry about larger cardinalities nor do you have to remember Zorn's lemma.
- On Monday, Oct. 7, I introduced Ehrenfeucht-Fraisse games. These are
the best and most pleasant way to figure out what can and cannot be
expressed in first-order logics. By then you should have read the handout
pebble games
from my forthcoming book,
*Descriptive Complexity*. - On Wednesday, Oct. 9, I finished the introduction to Predicate Logic. By now, please skim the rest of Chapter 3 of van Dalen. Topics that you should pay particular attention to are: substructures, isomorphism, elementary equivalence, and skolemization.
- Second Problem Set, Due: Oct. 16, 1996
- On Oct. 16 I introduced Evolving Algebra. Please read the Evolving Algebra Tutorial, and the paper guide.ps. These are available as postscript files from anonymous FTP site, ftp.eecs.umich.edu, directory /groups/Ealgebras, files tutorial.ps and guide.ps.
- On Oct. 21, I concluded my presentation of Evolving Algebras, using
the paper, "Why Use Evolving Algebras for Hardware and Software
Engineering," by Egon Börger, Proc. SOFSEM'95, Springer LNCS. Also
available on the Evolving
Algebra Homepage. I also talked briefly about Denotational Semantics,
using
*Denotational Semantics*by Joseph Stoy, 1977, M.I.T. Press, Chapter 9, by way of comparison. - On Oct. 23, 28, and 30, I gave a three-lecture introduction to modal logics,
emphasizing temporal logic and logics of knowledge. Please read the article by
Vardi, ``Why is Modal Logic So Robustly Decidable?'' which I handed out. I
also used some material from the book by Fagin, Halpern, Moses, and Vardi,
*Reasoning about Knowledge,*1995, M.I.T. press. - On Monday, Nov. 4, I talked about about an interesting paper that uses logic of knowledge to discuss security in distributed systems: A Logic of Authentication by Burrows, Abadi, and Needham.
- On Wednesday, Nov. 6 through Monday, Nov. 18, I talked about Lamport's Temporal Logic of Actions.
- You might want to look at the following webpage which has many pointers to work going on in formal methods: Formal Methods Pointers
- On Wednesday, Nov. 20, I started talking about Computation Tree Logic and Model Checking, using the survey paper, "Verification Tools for Finite-State Concurrent Systems," by E. Clarke, O. Grumberg and D. Long, in: A Decade of Concurrency - Reflections and Perspectives, Springer LNCS, 803, 1994.
- On Monday, Nov. 25, I continued Model Checking, talking about symbolic model checking and ordered binary decision diagrams, using the paper, "Symbolic Model Checking: 10^20 States and Beyond," by J. R. Burch, E. M. Clarke, K. L. McMillan, D. L. Dill, LICS (1990). For other references on model checking, take a look at the following homepage: Model Checking at CMU.
- On Wednesday, November 27, I will finish talking about Model Checking, including a nontrivial application, "Verification of the Futurebus+ Cache Coherence Protocol," by E. M. Clarke, O. Grumberg, H. Hiraishi, S. Jha, D. E. Long, K. L. McMillan, and L. A. Ness, in L. Claesen, editor, Proceedings of the Eleventh International Symposium on Computer Hardware Description Languages and their Applications. North-Holland, April 1993. I will also offer some general conclusions concerning model checking and formal methods in general.
- The student lectures are as follows:
- Dec. 2: Karsten Jung will talk on the paper, ``Knowledge and Common Knowledge in a Distributed Environment,'' by J. Halpern and Y. Moses, JACM, 37(3) (1990), 549-587.
- Dec. 4: Jens Gramm will talk on the paper, ``Conjoining Specifications,'' by M. Abadi and L. Lamport, ACM Transactions on Programming Languages and Systems 17(3) (1995), 507-534.
- Monday, Dec. 9: no class
- Dec. 11: Brian Hanechak will talk about the computational complexity of Evolving Algebra.
- Dec. 16: Laura Firoiu will talk about HOL, the higher order logic proof system from Edinburgh.