Types for Programs and Proofs

DAT350 (Chalmers) / DIT235 (GU)

Fall Term 2025 (LP1)

Sources on GitHub

Agda logo

Most course information is on Canvas.

Further course links:
Schedule on TimeEdit / Chalmers studieportal / GU ad (sv) / GU kursplan / GU course description / Old course page

Schedule

Date Time Teacher Title Reading / Remark
Thu 04/09 10-12 AA 01 Introduction to Agda LN 1 - 3; VFP 1, 3; DTW 1, 2.1 - 2.5
Mon 08/09 13-15 TC 02 Dependent types
Mon 08/09 15-17 AA Getting started with Agda
Thu 11/09 10-12 TC 03 Proving in Agda
Mon 15/09 13-15 TC 04 Introduction to operational semantics and type systems TPL 1-3
Mon 15/09 15-17 TC More on Agda Homework 1 due
Thu 18/09 10-12 TC 05 Introduction to operational semantics and type systems TPL 3-4
Mon 22/09 13-15 TC 06 Introduction to operational semantics and type systems TPL 5-10
Mon 22/09 15-17 TC More on Agda Homework 2 due
Thu 25/09 10-12 TC 07 Introduction to operational semantics and type systems
Mon 29/09 13-15 AA 08 Bidirectional type-checking
Mon 29/09 15-17 AA More on Agda Homework 3 due
Thu 02/10 10-12 AA 09 More on operational semantics and type systems in Agda
Mon 06/10 13-15 AA 10 More on operational semantics and type systems in Agda
Mon 06/10 15-17 AA Exercises on operational semantics and type systems in Agda Homework 4 due
Thu 09/10 10-12 AA 11 More on operational semantics and type systems in Agda
Mon 13/10 13-15 TC Student presentations
Mon 13/10 15-17 TC Student presentations
Thu 16/10 10-12 TC Student presentations
Mon 20/10 13-15 TC Student presentations
Mon 20/10 15-17 TC Student presentations
Tue 21/10 08- Take home exam Deadline: Fri 24/10 12:00 (noon)

Teachers: TC = Thierry Coquand, AA = Andreas Abel.
Room: Lecture hall MC.

Literature

Further literature and online access to books via the library can be found on Canvas.

Lectures

Lecture 1

Agda code: live code start, solution, rendered

Lecture 2

Exercise 1

Getting started with Agda.
Help-session where Andreas will help you get started with Agda programming.
Before this session you need to install Agda and try to write your first Agda programs.
We’ll do some simple exercises in Agda.

Lecture 3

Lecture 4

Lecture 5

Lecture 6

Lecture 7

Lecture 8

Agda code (expressions in spine form, superseded by lecture 9): live code start, full, rendered

Lecture 9

Implementation of simply-typed lambda-calculus (STLC), continued.

Agda live code: start, finish, solution, rendered

Lecture 10

Normalization for typed lambda-calculus

Agda live code: start, solution, rendered

Lecture 11

Possible topics:

Software

We recommend Agda version 2.8.0 (recent older versions are also ok).

Installing Agda from binary

  1. Download a suitable binary package from https://github.com/agda/agda/releases/tag/v2.8.0 and put it in your PATH
  2. Run agda --setup

Installing Agda from source

  1. Install latest Haskell (see below)
  2. Install Agda from Stackage nightly: stack install --resolver=nightly Agda
  3. Run agda --setup
  4. Set up the Agda mode (see below)

Installing Haskell

  1. Install GHCup
  2. Install latest Stack (3.7.1) and GHC (9.12.2) from within ghcup tui
  3. Ensure that the path printed by stack path --local-bin is in your system PATH

Setting up the Agda mode (Emacs)

  1. Compile the Emacs lisp files: agda-mode compile
  2. Install the Agda mode: agda-mode setup

Setting up the Agda mode (VSCode)

Get the agda-mode extension (authored by Ting-Gian LUA).

Installing the Agda standard library

To install a library for Agda, it must be downloaded and the path to its .agda-lib file must be mentioned in the file $AGDA_APP_DIR/libraries, where $AGDA_APP_DIR is the directory printed by agda --print-agda-app-dir.
(In case this directory does not exist yet, please create it.)

For instance, to install the Agda standard library, you can follow these steps.

  1. Download the version of the standard library for your Agda version according to https://wiki.portal.chalmers.se/agda/Libraries/StandardLibrary .
    For Agda 2.8.0, this is version 2.3.

  2. Unpack the library into a directory of your choice, for instance (on Linux/MacOS):
    ~/.agda/libraries.d/standard-library

  3. Recommended: in this directory rename agda-stdlib-2.3 to v2.3 (or similar).

  4. Add the following line to your ~/.agda/libraries file (create it if it does not exist):

    ~/.agda/libraries.d/standard-library/v2.3/standard-library.agda-lib

    In this you need to expand ~ manually to your home folder.

On Windows, the libraries file might reside in another directory than ~/.agda.
Check the output of agda --print-agda-app-dir.