Elektrine
Log in Register
Paige Chat Timeline Gallery Friends Email Drive DNS Private DNS Domains VPN Kairo Nerve
Remote

Nathaniel Burke

@NathanielB@types.pl
mastodon 4.8.0-alpha.2+glitch
  • Open on types.pl

Likes types
Imperial College London → TU Delft

122 Followers
220 Following
13 Posts
Joined January 28, 2025
Pronouns:
He/Him
GitHub:
https://github.com/NathanielB123
Previous Account:
https://hachyderm.io/@LordQuaggan
Open post
Nathaniel Burke @NathanielB@types.pl
· 8mo ago

I enjoyed the CPP talk yesterday about "Can We Formalise Type Theory Intrinsically without Any Compromise? A Case Study in Cubical Agda" (https://dl.acm.org/doi/10.1145/3779031.3779090) by @ltchen@mathstodon.xyz, @fnf@mathstodon.xyz and Tzu-Chun Tsai.

One of the problems mentioned was that Agda did not accept their definition of the eliminator as terminating. In my hubris, I thought I would have a go at trying to fix it, and got down to one remaining case (for set-truncation):
https://github.com/L-TChen/TTasQIIRT/blob/494d02ac2f28fa2575a611a45d5182c5e55885cc/src/Theory/SC/QIIRT-tyOf/Elim.agda#L216

(PR with all the changes: https://github.com/L-TChen/TTasQIIRT/pull/1)

The conceptual argument is simple: "Ty∙ is a set, so all Ty∙ paths are equal". Unfortunately, when constructing the type of the square, it seems that you need to recurse on elimTy with e.g. (λ j → elimTy (tyOf (p j)))

elimTy (tyOf t) can be justified by adding Ford (tyOf t) to the Tm-is-set path constructor where

data Ford {A : Set ℓ} : A → Set ℓ where
ford : {x : A} → Ford x

(i.e. taking advantage of how Agda considers dot patterns during structural termination checking).

I don't know how to replicate the same trick with tyOf (p j) though - especially as this j is not even bound in the original pattern. Ford (cong tyOf p) unfortunately does not work.

I guess one solution here could be to globally assume UIP (in --cubical=no-glue) and then get rid of the set truncation path constructors, but this feels somewhat unsatisfying. I would hope that there exists some way to make this work in ordinary --cubical (it is especially frustrating that this case is the only remaining problem, given it is "just" set truncation). If anyone has ideas how to fix it I would be very interested.

dl.acm.org
14
0
3
0
Open post
Nathaniel Burke @NathanielB@types.pl
· 5mo ago
Replying to
I still love agda. I don't know whether I can continue contributing to agda in good conscience.
6
0
1
0
Open post
Nathaniel Burke @NathanielB@types.pl
· 6mo ago

Also coming to Agda, at some point in the future, hopefully

4
3
1
0
Open post
Nathaniel Burke @NathanielB@types.pl
· 8mo ago
Replying to
The PR is up: https://github.com/agda/agda/pull/8385 If you are interested in the feature and have time, feel free to try and break it horribly, and send me the aftermath.
GitHub

Local Rewrite Rules by NathanielB123 · Pull Request #8385 · agda/agda

Implements local rewrite rules as proposed by Yann Leray and Théo Winterhalter in "Encode the Cake and Eat it To". Small example: {-# OPTIONS --local-rewriting #-} open import Agda.Built...

5
3
2
0
Open post
Nathaniel Burke @NathanielB@types.pl
· 8mo ago

Agda quiz:

module A where
postulate X : Set

module B (Y : Set) where
open A public

module C = B

What is the type of A.X, B.X and C.X?

2
5
0
0
Open post
Nathaniel Burke @NathanielB@types.pl
· 5mo ago
Replying to
@adotinthevoid Sam Altman is a tech bro but not a brogrammer
1
0
0
0
Open post
Nathaniel Burke @NathanielB@types.pl
· 7mo ago
Replying to
@joey Well okay, another subtlety is that some CwF equations don't work as rewrite rules in Agda because of issues like https://github.com/agda/agda/issues/7602 I think this is fixable though. https://github.com/agda/agda/pull/8463 should address this limitation
GitHub

Associativity of vector concatenation REWRITE sometimes doesn't apply · Issue #7602 · agda/agda

The REWRITE rule for associativity for length-indexed Vector concatenation doesn't seem to apply in not-fully-general cases. {-# OPTIONS --rewriting #-} open import Agda.Builtin.Equality using (_≡_...

1
0
0
0
Open post
Nathaniel Burke @NathanielB@types.pl
· 6mo ago
Replying to
@mei Yep! Right now, there are basically no sanity checks so uhh, very - but I will be fixing this (because you can hit non-termination and subject reduction problems very easily right now). My current plan is to require: Scrutinees must be neutral (or at least must reduce to a neutral)Patterns must pass an occurs check (we can do this by rewriting the scrutinee to a fresh variable in the pattern and then checking for occurrences of the fresh var)Disallowing overlapping equations (i.e. newly introduced local rewrite rules should never unblock earlier ones). This is basically another fancy occurs check but on all prior equations I admit I am actually not fully decided though. I do think requiring the pattern to also be neutral (i.e. neutral dot patterns only) and, in return avoiding all the occurs/overlap-checking business, is another nice "sweet spot", but implementing this version is harder, and it disallows the f3 example. There is another interesting problem of what checks to add to make this compatible with --without-K. I have an idea (essentially, equations should never become reflexive), but that is very work-in-progress.
0
1
0
0
Open post
Nathaniel Burke @NathanielB@types.pl
· 8mo ago
Replying to
@ionchy I wish this was the correct answer haha
0
1
0
0
Open post
Nathaniel Burke @NathanielB@types.pl
· 8mo ago
Replying to
@ionchy I think it's more jank than that module D (Y : Set) where postulate X : Set Here, D.X has type (Y : Set) → Set It's specifically to do with how open public works (and apparently the standard library relies on this)
0
1
0
0
Back
313k7r1n3
Elektrine

Tor hidden service

elekhj7afj4qnrr4yd3bkzslsyo5jgfxw3orgjkhlcxifueodybyiiad.onion

I2P eepsite

j6b6cyk6gjmepjih7jjadxgxvvf3lzzujljuu2v4biemzpg3naya.b32.i2p

Platform

  • Email
  • Chat
  • Timeline
  • VPN
  • DNS

Company

  • About
  • Contact
  • FAQ
  • Lite (no JS)

Legal

  • Terms of Service
  • Privacy Policy
  • Transparency Report
  • Report Abuse
  • Warrant Canary
  • VPN Policy

Support

  • support@elektrine.com
  • Report Security Issue
Mail client setup IMAP mail.elektrine.com:993 POP3 mail.elektrine.com:995 SMTP mail.elektrine.com:465
© 2026 Elektrine. All rights reserved. Server: 19:28:30 UTC