15-836 Substructural Logics

Fall 2023
Frank Pfenning
TuTh 9:30-10:50
GHC 4215
12 units

This graduate course provides an introduction to substructural logics, such as linear, ordered, affine, bunched, or separation logic, with an emphasis on their applications in computer science. This includes the design and theory of programming constructs for concurrent message-passing computation and techniques for specifying and reasoning about programming languages in the form of substructural operational semantics.

Prerequisites: This is an introductory graduate course with no formal prerequisites, but an exposure to functional programming and type systems may be helpful. Enterprising undergraduates are welcome to attend this course.

Prior Versions of This Course

Class Material

Schedule Lecture notes and additional readings (combined lecture notes, 248 pp)
Assignments Homeworks assignments and due dates
Resources Links to other resources

Course Information

Lectures Tue Thu 9:30-10:50, GHC 4215
Office Hours Wed 10:30-12:00, GHC 6017 or by appointment
Course Communication piazza.com/cmu/fall2023/15836
Notes There is no textbook, but lecture notes and papers will be posted
Credit 12 units
Grading 60% Homework, 15% Midterm, 25% Miniproject
Homework Weekly homework is assigned each Thursday and due the following Thursday.
Late homework will be accepted with prior notification of the instructor.
Midterm Thu Oct 12, in class
Closed book, closed notes.
Final There will be no final exam
Home http://www.cs.cmu.edu/~fp/courses/15836-f23/

Learning objectives: After taking this course, students will be able to

  • model stateful, concurrent, and resource-aware systems in substructural logics
  • define and reason about programming languages using substructural operational semantics
  • capture computational phenomena in advanced substructural type theories
  • apply the judgmental method to define logics and type theories for a rich variety of applications
  • appreciate the deep philosophical underpinnings and elegance of the computation-as-proof-reduction and computation-as-proof-construction paradigms

Topics: Many of these topics are tentative, depending on the pace of the course and participant interests.

  • Deductive inference
  • Substructural hypothetical judgments
  • From inference rules to propositions and back
  • Judgmental independence principles
  • Ordered, linear, affine, strict, and persistent hypotheses
  • Harmony
  • Cut elimination
  • Concurrent computation as cut reduction
  • Session-typed message-passing concurrency
  • Substructural operational semantics
  • Concurrent cost semantics
  • Combining logics with adjunctions
  • Polarization and focusing
  • Computation as proof construction
  • Substructural logical frameworks
  • Resource semantics
  • Logical embeddings
  • Automata in logical fragments
  • Substructural characterizations of complexity classes
  • Lambek calculus and categorial grammars
  • Classical linear logic
Even more tenative:
  • Bunched logic and its resource semantics
  • Separation logic and imperative computation
  • Ownership types and the Rust language
  • Quantum programming languages

[ Home | Schedule | Assignments | Resources ]

Frank Pfenning