Ohad's Research - SPLV 2026: Algebra and Normalisation

Algebra and Normalisation

Scottish Programming Languages and Verification Summer School Contributed Course

Ohad Kammar 3-7 August 2026

Normalisation concerns specifying a representative in each equivalence class. It comes up whenever we want to guarantee robustness up-to the equivalence relation. For example, a normalising optimising compiler will produce the same object code when you refactor your source code using the equivalence it normalises by. Advanced type-checkers may accept or reject programs by normalising fragments of their types. Modern partial evaluators incorporate equational laws before extracting a residual program. The hallmark of modern algebra is representation theorems: characterising a structure such as the set of polynomials as the universal structure among a class of structures of interest.

In this course, we will explore the relationship between normalisation and modern algebra. We will start with algebraic expressions and universal algebra, and relate them to normalisation and partial evaluation using multi-sorted equational logic. In the second part of the course, we will turn to normalisation of open-programs through the more advanced second-order algebraic structures.

Course materials

Lectures

All lectures.

Planned structure:

Part 1: multi-sorted universal algebra

  • Lecture 1
    • Motivation
    • Universal algebra basics: signatures & algebras
    • Modern algebra: homomorphisms & representation theorems
  • Lecture 2
    • Modern algebra: homomorphisms & representation theorems
    • Expression normalisation: free models & equational logic
    • Modern partial evaluation: free extensions
    • Categorical algebra basics

Part 2: second-order multi-sorted algebra * Motivation * Categories of contexts: finite product completion * Object-level and meta-level variables * Axiomatising object-level substitution * Second-order equations

  1. Part 3: second-order normalisation (cancelled)
Relevant exercise sheets:
  • TBD

Getting help and reporting mistakes

Please never hesitate to get in touch. Approach me directly in person during the summer school or by email. You may prefer to ask a question on the #Normalisation and algebra channel on the SPLS Zulip server: spls.zulipchat.com . Others would benefit from your question in that case too!

Previous iterations