15836 Substructural Logics
Fall 2023 
Frank Pfenning 
TuTh 9:3010: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
messagepassing 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
Course Information
Lectures 
Tue Thu 9:3010:50, GHC 4215 
Office Hours 
Wed 10:3012: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/15836f23/ 
Learning objectives:
After taking this course, students will be able to
 model stateful, concurrent, and resourceaware 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 computationasproofreduction and
computationasproofconstruction 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
 Sessiontyped messagepassing 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
]
fp@cs
Frank Pfenning
