(redirected from Main.AIMXXXX)
The fortieth Agda Implementors' Meeting (AIM XL) will take place in Budapest, Hungary from 2025-05-26 to 2025-05-31 (Mon to Sat). The meeting will be similar to previous ones:
- Presentations concerning theory, implementation, and use cases of Agda.
- Discussions around issues of the Agda language.
- Plenty of time to work on or in Agda, in collaboration with the other participants.
Online participation
Program
Sunday, 25 May | |
---|---|
18:30- | Dinner in LUMEN, coming: Jesper, Szumi, Thorsten, Yee-Jian, Andrei, Iulia, Andreas, maybe Ambrus, Viktor, maybe Miëtek |
Monday, 26 May | |
10:00 | Introduction Round, Talk Schedule |
11:00 | Coffee break |
11:30 | Ambrus Kaposi: Type Theory in Type Theory Using a Strictified Syntax |
12:30 | Lunch |
14:00 | Artem Shinkarov: Fixing very dependent types (discussion) |
14:30 | Jesper Cockx: Rewrite rules tutorial |
15:30 | Coffee break |
16:00 | Andreas: Tutorial on Agda bugfixing |
17:00 | Wrap up meeting |
Dinner : 19:30, Alma & Koerte (Loerinc Pap Ter)
Tuesday, 27 May | |
---|---|
10:00 | Thorsten Altenkirch: Higher Observational Type Theory in Narya |
11:00 | Coffee break |
11:30 | Ulf Norell: Thoughts on sound and complete validators |
12:30 | Lunch |
14:00 | Miëtek Bak: Lessons from a medium-scale formalization in Agda |
15:00 | Coffee break |
15:30 | Code sprints |
17:00 | Wrap up meeting |
Dinner : 18:30, Black Dog Pub
Wednesday, 28 May | |
---|---|
10:00 | Yee-Jian Tan: Implementing computational UIP in Cubical Agda |
11:00 | Coffee break |
11:20 | We leave the big room and put our stuff in the meeting room to provide space for the Ottoman Empire |
11:30 | Early lunch |
14:00 | Code sprints |
15:30 | Coffee break |
16:00 | Code sprints |
17:00 | Wrap up meeting |
Thursday, 29 May | |
10:30 | We meet at tram stop Hűvösvölgy (end station of tram lines 56,56A,59B,61) -- you should bring water and maybe some snacks for the hike and swimming suit, towel, slippers for the thermal bath |
14:00 | We arrive in restaurant Normafa síház, eat late lunch |
16:30 | We go to Rudas thermal bath (open until 8pm; you should bring swimming stuff) |
Friday, 30 May | |
10:00 | Péter Diviánszky: Efficient implementation of algebraic data types with rewrite rules |
11:00 | Coffee break |
11:30 | Balázs Kőműves: Write high-performance cryptography code in Agda |
12:30 | Lunch |
14:00 | Code sprints |
15:30 | Coffee break |
16:00 | Code sprints |
17:00 | Wrap up meeting |
Saturday, 31 May | |
10:00 | Code sprints |
11:00 | Coffee break |
11:30 | Szumi Xie: Secret bonus talk |
12:30 | Lunch |
14:00 | Code sprints |
15:30 | Coffee break |
16:00 | Code sprints |
17:00 | Wrap up meeting |
Registration
To register, you can fill out the following form and send it to akaposi <at> inf <dot> elte <dot> hu. Please advise us, if you don't want your name to be added to this webpage. You can also (if you are okay with your name being public) directly fill your name in the section participants on this webpage using the edit option for it. In this case, you can also directly add a talk / discussion / code sprint proposal by copy and pasting the box examples.
If you can not attend in person, it will be possible to attend online. You can register via email or directly by adding your name to the list.
to: akaposi <at> inf <dot> elte <dot> hu |
Subject: Registration for AIM XL |
|
Participants
- Ambrus Kaposi (ELTE)
- Szumi Xie (ELTE)
- Viktor Bense (ELTE)
- Balázs Kőműves (Faulhorn Labs / Codex (IFT))
- Péter DIviánszky (Faulhorn Labs)
- Jesper Cockx (TU Delft)
- Artjoms Šinkarovs (University of Southampton)
- Yee-Jian Tan (IP Paris/KU Leuven)
- Ulf Norell (Quviq)
- Andreas Abel (Chalmers University of Technology and University of Gothenburg)
- András Kovács (Chalmers University of Technology and University of Gothenburg)
- Marcin Jan Turek-Grzybowski (from Wednesday)
- Andrei Dorian Duma (University of Bucharest)
- Iulia Dumitru (Politehnica University of Bucharest)
- Thorsten Altenkirch (University of Nottingham)
- Bohdan Liesnikov (TU Delft)
- Arved Friedemann (independent, online)
- Zhenyun Yin (ELTE)
- Barabás Gergely Miklós (ELTE)
- Miëtek Bak (Machine Intuitionist)
- Amélia Liao (https://1lab.dev)
- Peter Korpa (ELTE)
- Áron Szabó (independent)
- Kun Édua Boróka (ELTE)
Talk proposals
Please add your proposals here by editing this webpage (using the edit button). You can refer to examples from previous Agda Implementors meetings.
Efficient implementation of algebraic data types with rewrite rules |
Péter Diviánszky |
(no abstract yet) |
Higher Observational Type Theory in Narya |
Thorsten Altenkirch |
Narya is an implementation of a Parametricity Type Theory which has been created by Mike Shulman and Elif Uskuplu. Using a higher coinductive type we can implement a variant of HoTT, which we call Higher Observational Type Theory. I would like to discuss how this relates to cubical agda and how Narya could benefit from an agda-like environment. |
Some thoughts about sound and complete validators |
Ulf Norell |
A common task in dependently typed programming is taking some unverified input and checking that it satisfies some interesting property. Establishing soundness for such a validator we usually do by construction--the validator simply returns a value that intrinsically satisfies the property, but proving completeness is less obvious how to do nicely. I'll talk about what the various alternatives are and my experiences with them. Based on work very much in progress. |
Implementing computational UIP in Cubical Agda |
Yee-Jian Tan |
By removing Glue types in Cubical Agda, then postulating the Uniqueness of Identity Proofs (UIP) assumption, we can have Quotient inductive types and provable functional extensionality, which are nice properties to have. I will talk about the current progress in 1. having a variant of Cubical Agda without Glue (and hence compatible with K and UIP), and on top of it, 2. a "Cubical - Glue + UIP" Agda with nice computational properties, such as UIP proofs over type formers being automatically generated by Agda. |
Write high-performance cryptography code in Agda |
Balázs Kőműves |
We are trying to prove the concept of staged metaprogramming with two-level type theory, using Agda for prototyping. Practical cryptography requires a lot of metaprogramming, usually done with "macros", ad-hoc code generation, etc. We believe that even Agda should be better than those things! And (at least in theory) the resulting code can be pretty fast too. |
Type Theory in Type Theory Using a Strictified Syntax |
Ambrus Kaposi |
I present a way to formalise replace any model of a theory with bindigs (precisely a first-order model of a second-order generalised algebraic theory, SOGAT) with an equivalent model where are substitution rules are definitional. This solves the transport hell issue when formalising e.g. the intrinsic syntax of type theory in Agda. Does this solution evoke another kind of hell? |
Location
The location is EIT Digital Co-Location Centre of ELTE (Eötvös Loránd University) in Budapest, Hungary. Google Maps Link. There is a plastic red running path around the building. The entrance is from the back on the right hand side. There will be signs saying AIMXL. The building is five minutes walk from where the TYPES 2017 conference was.
Address:
EIT Digital Budapest Node | Co-Location Centre 10/a Bogdánfy Street H-1117 Budapest Hungary (corner of Warga László Str. and Bogdánfy Str.) GPS: N 47°28'28" E 19°3'27"
The building is open 8am-4pm but we have one card to access the building outside of these times.
Lunch: Science Park
Currency
The currency is Hungarian Forint (HUF), around 400 HUF is worth 1 Euro. You can use debit/credit cards in almost every shop and restaurant, cash is rarely needed.
Travel to Budapest
- By flight to Budapest Liszt Ferenc International Airport.
- By train: 2.5 hours journey from Vienna, direct trains from Berlin, Munich, Prague, Warsaw, Zurich etc. Search trains on bahn.de, buy tickets online from the respective train companies.
- By car: you have to pay for on-street parking near the venue, except at weekends. The easiest way to pay parking is a mobile app, e.g. Parkl.
Travel from the airport to the city centre
- BKK bus 100E takes you to the city centre metro station Deák Ferenc tér. The bus starts just outside the terminal building. You can pay using credit/debit card on the bus, no need to buy separate ticket (but possible from a purple machine next to the bus stop). It runs day and night, very regularly.
- You can use minibus service or taxi, but I wouldn't.
- You can cycle if you bring your bicycle on the plane: CyclOSM knows about the cycle paths.
Travel within the city centre
- Public transportation (BKK) is the fastest and cheapest way to get around in Budapest. You can use Google maps to plan your journey, it knows about all bus, trolley bus, tram and metro lines. You can buy a 2-week pass for 5950 HUF, or use individual tickets or use the BudapestGO app on your phone.
- Public bicycle: you can use the green public bicycles in the city centre, see BUBI website for information (BUBI = Budapest Bicycle).
- Walking is cheap and nice.
Accommodation
Services such as booking.com and airbnb.com are known to work well in Budapest.
The judgemental map of Budapest is quite accurate about what the different areas are like. The venue is in the "more nerds" area.
Excursion
The excursion will be on *Thursday*. We will start with a hike in the Buda hills and a (late) lunch. After that we will go to a thermal bath. The hike will be an easy walk in the Buda hills, there is no need to take special equipment.
Some random cultural programmes
- free exam concerts at the music academy: see here
- Budapest100 on the Saturday/Sunday of arrival
- thermal baths, e.g. Rudas, Széchenyi
T-Shirts

€20 (preferred) or 8100 HUF (cash)
Sponsorship

AIM XL is supported by the HOTT ERC grant 101170308.
Code sprints
- Agda LSP integration (Bohdan, Mietek, Andreas, Iulia)
- Double checker for clauses (Bohdan, Amy)
- Higher observational type theory (Ambrus, Thorsten, Artem, Szumi)
- Non-quadratic operator parsing (Andras)
- Fixing bugs in the Emacs mode (Mietek, Ulf, Iulia)
- Cubical with UIP (Yee-Jian, Amy, Andras, Peter Korpa, Szumi)
- Metaprogramming in Agda (Balázs)
- Improving termination checking with cubical (Thorsten)
- Dependent destructors for record types (Thorsten)
- Postponing insertion of implicit arguments for blocked types (Mietek, Andras, Jesper)
- Very dependent types (Artem)
- Overloading of record projections (Amy)
- `record where` syntax (Amy)
- Rewrite rules on projections (Jesper)
- Mimer: cleaning code, documentation, features (Ulf, Jesper, Amy, Mietek, Andreas)
- Typst backend (Andreas)
- Expanding search (C-c C-z) to include potential imports (Andrei, Peter Korpa)
Wrap-up notes
Rewrite rules
- Monday: Jesper gave a talk and found a bug in the confluence checker [https://github.com/agda/agda/issues/7893]
- Monday: Mietek experimented with rewrite rules in his formalization of first-order logic
Implicit arguments
- Monday: Andras and Jesper discussed when insertion of implicit arguments and lambdas should/shouldn't happen
- Tuesday: Experimented with a version of Agda that postpones type-checking terms when they might have an implicit function type (see https://github.com/agda/agda/tree/ImplicitLambdas). This fixes some test case and breaks everything else.
- Tuesday: Worked on refactoring Unblock constraints and removing twin metas (this does NOT break everything)
- Wednesday: Andras and Jesper experimented further with heuristics for when (not) to insert hidden lambdas
- Wednesday: Jesper finished his PR https://github.com/agda/agda/pull/7899 but it fails on the cubical library.
Overloading of record projections
- Monday: Amy found some issues with elaboration of overloaded projections and started to work on fixing them https://github.com/agda/agda/issues/7892
Expanding search
- Monday: Andrei installed Agda and looked at the current code implementing C-c C-z
- Tuesday: Andrei and Andreas investigated further, found that searching in all libraries is a lot more complicated than the current search in imports only. Need to construct an index for each library.
Experiments with metaprogramming
- Tuesday: Balázs is implementing a demo application with metaprogramming
- Wednesday: tiny progress, made two bug reports in the standard library
Mimer
- Tuesday: Áron found a bug in Mimer, Ulf started to debug it
- Wednesday: Ulf fixed the bug https://github.com/agda/agda/issues/7898. Mimer would put the solution in the Emacs buffer but didn't let Agda know about the solution.
- Wednesday: Ulf started to break up the implementation of Mimer into different modules
Sound and complete type checkers in Agda
- Tuesday: Ulf gave a talk, Peter started implementing it for STLC (or perhaps System F)
- Tuesday: Andreas and Thorsten disagree on the meanings of soundness and completeness
Higher Observational Type Theory
- Tuesday: Szumi tried to prove that the universe of contractible types is contractible, but ran into the same problem as with proving that the universe of fibrant types is fibrant
- Wednesday: Ambrus wants an isomorphism, but there's only a section-retraction pair. At the moment there is some confusion but certainly progress.
Inlining of constructors
- Wednesday: Amy found two issues with inlined constructors https://github.com/agda/agda/issues/7903 https://github.com/agda/agda/issues/7906, Andreas started to investigate
Double checking of case trees
- Wednesday: Bohdan and Amy made a bit of progress
Cubical with UIP
- Wednesday: Yee-Jian started to give a type signature for the new primitive
- Wednesday: some discussions on the proper reduction behavior of definitional UIP
Positivity checking with transport
- Wednesday: Szumi made a feature request to allow transport to preserve positivity https://github.com/agda/agda/issues/7905