[UMN logo]

CSci 8980, Fall 2012
Specifying and Reasoning
About Computational Systems

News Flash: Online discussion using Forum

New Information


Table of Contents

Contact Information

Brief Course Description

The course will introduce a logical approach to specifying, prototyping and reasoning about formal systems that are typically described via syntax-directed rules. This style of presentation has been used, for example, for typing and evaluation relations for programming languages, for proof systems for varied logics, for software modelling languages and software specifications, and for process calculi and encodings of concurrent systems. We will initially expose a specification language based on a higher-order logic that provides a natural and effective means for formalizing such systems. We will then consider logical devices and systems for reasoning about formalizations in the specification language. Finally, we will understand the two-level logic approach that smoothly integrates specification, prototyping and reasoning and also allows meta-theoretic properties of the specification logic to be used to advantage in reasoning. The Teyjus, Bedwyr and Abella systems that implement the specification and reasoning logics will be used to provide concreteness to the foundational and methodological discussions. We also expect to explore the relationship of the main methods to be studied to methodologies based on dependently typed lambda calculi that are used in systems like Twelf and Coq.

Course Prerequisites

The main requirements for the course are mathematical maturity, some prior exposure to logic and the capability to program in an advanced language like OCaml, Standard ML or Haskell. If you are not sure that you meet these requirements, talk to the instructor to determine if you would still be able to feel comfortable in the course.

Sources for Information

The first half of the course will cover the material in the recently published book entitled Programming with Higher-Order Logic. Obtaining a copy of this book can be quite useful: the coverage of the topics in class will be quite rapid and the book also develops the examples to be discussed in a much more complete fashion. Cambridge University Press has provided a coupon that will get you a 20% discount on the book but I see that Amazon already gives you an almost equivalent discount.

The second part of the course will be based on doctoral theses and research papers. The specific reports and publications will be announced in due course and, where possible, access will be provided to these through the resources section of this web page.

Finally, manuals and other documentation available with the systems to be used in this course will be relevant reading material.

Required Work and Grading

This is a seminar course with the usual rules for participation. Regular attendance is expected. If you have to miss a class meeting, make sure to discuss this with me beforehand: absence is quite noticeable in a small class.

There will be regular reading assignments and a few written assignments. It will be necessary to carry out the former to keep with the flow of the discussions in class. In addition to contributing to the grade, the latter will be important to make sure that the learning process is active and not just passive.

The main work in the course will devolve around a term paper/project and its presentation in class. The choice of topic and the work you do is left to you with three constraints: the topic must relate broadly to specifying and reasoning about computational systems, the work must have sufficient depth and volume to qualify for a term paper or project and there should be some amount of originality to the work. As examples, you may think of formalizing some aspect of the metatheory of a logic, a lambda calculus or a programming language in Abella, Twelf or related system, you might examine some existing logic or system that has co-extant applications and that we have not looked at explicitly in class, or you might try to understand in a deeper way than exposed in class some of the metatheory of the logics that we will discuss.

A timetable is extremely important given the somewhat open-ended nature of a term paper. Here is one that I will expect you to adhere to: presentation:

The different components will contribute in roughly the following way to the final grade: 10% for class participation (which includes attendance), 20% for written homeworks, 25% for class presentation and 45% for the term paper/project.

An important note: Attendance during student presentations is mandatory for passing the course.

Software Systems

The following systems will be relevant to different parts of the course

Last modified: Nov 23, 2012. Page maintained by gopalan atsign cs dot umn dot edu.