TERMINATION METHODS

Course Data

Location: Ornstein 103
Time: Thursday, 10-13
Instructor: Nachum Dershowitz
Office: 218 Schreiber
Phone: 03/640-5356
E-mail: nachumd@tau.ac.il

PURPOSE

The purpose of the course is to learn various interesting methods of proving the termination (halting) of programs. Topics include:

REQUIREMENTS

The course is open to undergraduate students and to graduate students. Only basic programming (including recursion) and basic discrete math (including induction) are required.

Lectures & Readings

  1. Introduction (28 Feb. 2013)
  2. Games (7 Mar. 2013)[Gal]
  3. Bigger and Bigger (14 Mar. 2013) [Jonathan]
  4. Well-Founded Orderings (11 Apr. 2013) [Yevgeny]
  5. Well-Quasi Orderings (18 Apr. 2013)
  6. Tree Orderings (25 Apr. 2013)
  7. Rewriting (2 May 2013) [Gleb]
  8. Semantic Path Ordering (9 May 2013) [Ori Handout]
  9. Dependency Pairs (16 May 2013)
  10. Recursion and Induction (23 May 2013)
  11. Iteration and Induction (30 May 2013) [Gitit]
  12. Typed Lambda Calculus (6 June 2013) 
  13. Higher Order Orderings (13 June 2013) [Liron]
  14. Terminate (or Epsilon_0, Gamma_0, and Other Ordinals) (20 June 2013) [Nissan Extra]

Lecture Notes (pdf) (ppt) (key)

Examples

  1. Turing's Factorial Program
  2. Greatest Common Divisor
  3. McCarthy's 91 Function
  4. Ackermann's Function
  5. Ackermann's Function via a Stack
  6. Dutch National Flag with Marbles
  7. Growing Railroad Trains
  8. Goodstein's Sequence
  9. Battle of Hercules and Hydra
  10. Amoeba Colonies
  11. Grid Game
  12. Gremlins
  13. Differentiation
  14. Disjunctive Normal Form Examples
  15. Dependency Pair Examples
  16. Unification Algorithm
  17. Recursion Examples
  18. Counting Leaves

Literature Links

Resources