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

Owen Lynch

@olynch@mathstodon.xyz
mastodon 4.7.2
  • Open on mathstodon.xyz

Grad student at Oxford, Research Software Engineer at the Topos Institute.

Currently working on the programming language side of systems theory.

Trump is a fascist, fascists are bad.

326 Followers
132 Following
44 Posts
Joined April 25, 2022
Website:
https://owenlynch.org
Open post
Owen Lynch @olynch@mathstodon.xyz
· 2w ago
Replying to
@shriramk@mastodon.social Could have just doubled down...
1
3
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 4mo ago

Cracking myself up over my morning oatmeal imagining if the proof assistant currently known as Rocq had instead been renamed "Le Chicken".

22
1
2
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 5mo ago

I think one reason why a lot of the academic literature on parsing and grammars is so disconnected from what language implementations use in practice is that what matters is not having a declarative spec for what an instance of the grammar is, what matters is following an algorithm whose failure conditions are understandable. When you implement recursive descent, at the point of a failure you know more or less what is going on.

A full declarative specification of what the parser should do in these error cases is not that much shorter than just writing the darn recursive descent algorithm out.

I feel like this is a general phenomenon, there are wide classes of programs where the spec is essentially the algorithm, and thus verification is kind of meaningless, it's more of a question of "does the algorithm do a reasonable and mostly predictable thing in practice"?

And this is why I like category theory for computer science, it works at so much higher of a level that it's orthogonal to a lot of practical questions. If category theory were lower level, I'd rather just scrap it and write code. But precisely because it forgets so much, it actually makes it easier to think about some questions. The "awkward middle" between math and programming where a lot of CS sits is often neither practically relevant nor conceptually simplifying.

23
18
4
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 6mo ago

Just picked up from "Logical Relations as Types" the practice of not saying the words "beta rule" and "eta rule" and instead saying "computation rule" and "uniqueness rule".

I feel like I would have been much happier if people had used this terminology when I originally learned type theory, and I'm definitely going to use it next time I teach someone.

While I'm on that subject... I like thinking about the four rules as answers to the four questions.

How can I make an element of this type?
How can I use an element of this type?
What happens when I use an element of this type?
Are there any other sneaky elements of this type? (No!)

25
3
7
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 5mo ago

You can find slides for the TYPES2026 talk I just gave on my website: https://owenlynch.org/archive/2026-types/1.html.

These slides include hippogriff (https://tangled.org/owenlynch.tngl.sh/hippogriff/) compiled to WASM, so you can edit the code snippets and run them with ctrl-enter to see what happens.

owenlynch.org
17
4
8
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 6mo ago
Replying to
@jonmsterling @albertcardona @elduvelle I kind of enjoy the vibe of public transit where it's like these are migrating beasts and by careful divination and ritual offering you can harness their primal energy to speed you in a particular direction, like a raptor riding thermals. Of course there isn't going to be a migration going precisely from A to B, but with a bit of cleverness you can stitch together something. It's pretty magical and unprecedented in human history that I can cross so many different countries by land safely and relatively quickly. Sure, OK, it could be faster. But like, thank you migrating beasts you are wonderful creatures.
18
26
2
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 5mo ago
Replying to
@jonmsterling @maxsnew The interesting things about topos theory is that all sheaves are open (can be built out of finite limits and infinite colimits starting from the base), *including* the ones built from negative type formers like function types, etc. However the fact that a certain negative construction and a certain positive construction happen to be isomorphic in a given topos is not preserved by geometric morphisms. It's kind of like how in a fixed programming language, if you have quotient inductive inductive types you can internalize the syntax of that language and then write a type of function abstract syntax trees with equality given by proofs of equality. This is isomorphic to the function type. However, as soon as you add a new primitive operation to your language, the function type automatically picks this operation up, while your carefully encoded abstract syntax trees know nothing about it. And this is why it makes sense to serialize certain data types across languages (inductive types) but you can only serialize closures if you are going to deserialize them into precisely the same language and program that you originally serialized them from. I'm focusing just on the positive fragment of type theory, which is preserved by geometric morphisms, but David Jaz and Mitchell Riley are working on negative constructions which are "stuck" in a certain topos and are not preserved by general substitutions (which are geometric morphisms), figuring out how to handle these stuck constructions is one of the key challenges!
11
1
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 5mo ago

The observation that I can get trapped by almost any site with an algorithmic feed (YouTube, Twitter, Reddit, hell even Facebook), no matter how asinine the content it gives me, is very humbling to any pretensions of taste that I have...

To escape these, the solution has never been to block the relevant domain in ublock, because I inevitably end up wanting to look at some link that someone has sent, and then I unblock it, and then it's off to the races. The solution is also not self control. Maybe that works for some people. The solution is to figure out how to make the site dumber. For Twitter, it was locking my account. For YouTube it was disabling having a YouTube history, so that my home page was blank of recommendations. Facebook is dumb enough that I mostly manage to stay off it organically, thankfully. And for Reddit, I switched to Old Reddit and unsubscribed to all subreddits so my homepage is blank.

I still have the muscle memory for all of these things, even though I've been off Twitter for over a year, my fingers will still sometimes type twitter.com into a freshly opened tab.

I really think the algorithmic feed is one of the worst intentions of the 21st century. I don't think it's a good idea to ban it, but I think that there should always be a way (like I've found with YouTube and Reddit) of disabling the feed while keeping access to other material on the site.

8
2
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 5mo ago

When people complain about using category theory for PL, I think about this quote from Cryptonomicon (delivered by the fictional Alan Turing)

"Shut up about Leibniz for a moment, Rudy, because look here: You--Rudy--and I are on a train, as it were, sitting in the dining car, having a nice conversation, and that train is being pulled along at a terrific clip by certain locomotives named The Bertrand Russell and Riemann and Euler and others. And our friend Lawrence is running alongside the train, trying to keep up with us--it's not that we're smarter than he is, necessarily, but that he's a farmer who didn't get a ticket. And I, Rudy, am simply reaching out through the open window here, trying to pull him onto the fucking train with us so that the three of us can have a nice little chat about mathematics without having to listen to him panting and gasping for breath the whole way."

Swap out "The Bertrand Russell" for "The Alexander Grothendieck" and swap out "panting and gasping for breath" with "100-case syntactic arguments"...

6
0
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 5mo ago

In theory, a theoretical problem does not necessarily imply a practical problem, but in practice it almost always does.

6
0
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 6mo ago
Replying to
@jonmsterling @tml @albertcardona @elduvelle I'm all for improving the train system, but I worry that this is unnecessary FUD (fear, uncertainty, doubt) w.r.t. people making transit decisions. I've traveled between Southern England and Scotland probably four or five times now (and other long distances in the UK) and sometimes it takes longer than advertised, but the magic of a train ticket being "any permitted route" means that Google maps can just route me around missed trains. And Oxford<->Cambridge is annoying but certainly doable for a day trip with an early morning start. Perhaps I'm less optimized for reliably getting places on time than you, but I think there's a strong case to be made for not refusing to use infrastructure until it's perfect.
6
6
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 6mo ago
Replying to
@jonmsterling @albertcardona @elduvelle OK, this I can get behind! We must feed our magnificent beasts well :)
6
0
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 5mo ago
Replying to

@MartinEscardo@mathstodon.xyz A couple things.

  1. I'd need concrete performance data that my handwritten parser was a performance bottleneck in the overall compilation pipeline before I would ever take on the maintenance burden of keeping two implementations in sync.

  2. I would design the grammar in the first place for predictable and understandable errors, which concretely means: LL(1) with respect to whatever my tokenizer is doing. In this situation, I would expect that a parser generator wouldn't be that much faster than handwritten recursive descent, and quite possibly slower.

  3. There are techniques in recursive descent like Pratt parsing which handle infix precedence or even fancier stuff like custom mixfix operators which are annoying to encode into a traditional BNF grammar; you can write an ambiguous grammar and then add precedences, but it's not so clear when you've done this that it's still LL(1), and I'd rather not bother.

  4. I would expect that bigger performance gains would be around cache usage. E.g., use a sum of struct of arrays for your AST with 32 bit IDs instead of pointers, put token tags into single bytes in a byte array and store the associated spans elsewhere, use SIMD instructions in lexing, etc. These are the kind of things that production compilers do in order to really optimize performance. Again, I don't really care about performance for my parsers right now because it's not a bottleneck, but this is what I would do if I did care.

4
2
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 4mo ago
Replying to
@mc@mathstodon.xyz It's actually important to have a *set* of types in order to model definitional equality.
3
6
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 5mo ago
Replying to
@MartinEscardo@mathstodon.xyz Sorry if the tone of this was overly confrontational; I didn't mean it that way but looking over it again I realize I wrote quite a rant. I think it's not an unreasonable idea in general: produce a correct by construction program from a short declarative spec, and then have a handwritten algorithm compare to that autogenerated one. It's just that in the specific case of parsers I happen to have a lot of opinions about the way I want mine to work, and this seems to be incompatible with existing parser generators.
3
0
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 6mo ago

Whenever I do something fancy with normalization by evaluation I have an urge to shout "Yes closures! Dance for me! Dance! Dance!"

4
0
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 4mo ago
Replying to
@mc@mathstodon.xyz That's what I say when people only give me a notion of isomorphism between types, I'm like "uh elaborate please" and then they can't, and are rekked.
2
1
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 4mo ago
Replying to
@mc@mathstodon.xyz Yeah exactly, you need a well-behaved notion of definitional equality in order to elaborate
2
2
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 5mo ago

Is there a left adjoint to Nakano's later modality? It would be nice to handle it MTT style as a positive modality, rather than just have it as an applicative functor.

Perhaps it needs linearity in order to work though, because it's not a monad...

@danielgratzer@mathstodon.xyz @bentnib@types.pl

mathstodon.xyz

daniel gratzer (@danielgratzer@mathstodon.xyz) - Mathstodon

3
5
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 6mo ago
Replying to
@SamToth Ah, should have guessed that! OK, fortunately now I work in the same office as Mitchell so I'll ask him about it.
3
0
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 6mo ago
Replying to
@carloangiuli@mathstodon.xyz @jonmsterling@mathstodon.xyz @ToucanIan@mathstodon.xyz @sophiehuiberts@mathstodon.xyz I'm very happy to know this, but at the same time the phrase "they have played us for absolute fools" is ringing strongly in my head 🤣
3
0
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 5mo ago
Replying to

@MartinEscardo@mathstodon.xyz

  1. Edward Kmett once told me that the reason he uses Haskell is that the pipeline to correct software of "write something highly reusable and then get a bunch of bug reports from the community" is much faster than "formally verify" and moreover you get not just bug reports but also patches that increase performance, add more features, etc. In this vein, I follow the philosophy of https://parentheticallyspeaking.org/articles/bicameral-not-homoiconic/ in writing a parser for a fairly generic notation once and then use it for all my projects, and then other people use it too, and the end result is a quite pleasant tool! (https://github.com/ToposInstitute/fnotation also ported to Haskell https://hackage.haskell.org/package/fnotation)
Bicameral, Not Homoiconic
parentheticallyspeaking.org

Bicameral, Not Homoiconic

Parenthetically Speaking: Articles by Shriram Krishnamurthi

2
1
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 8mo ago

My video on teaching @thosgood@mathstodon.xyz how to elaborate the simply typed lambda calculus is up! https://www.youtube.com/watch?v=uBjuFDs-shw&list=PLhgq-BqyZ7i5C6ZnaYiGDhiGZuvvtLh5o&index=9

[2-torial] Owen tells Tim about elaborators for type theories [1/2]

4
1
1
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 6mo ago

Modal type theory people:

Given a judgmental proposition P (that is, not necessarily a type, a meta-level proposition), there is an open modality associated to it which looks like (P -> A), this is right adjoint to adding a proof of P to the context. So far, so good.

I want to now instead have a context formation operator which acts like (P -> Γ). My intuition here is that (P -> Γ) "locks" the context Γ, and Γ,P "unlocks" the context. This seems to make sense because (P -> Γ,P) = (P -> Γ), (locking something unlocked is the same as locking the original thing) and (P -> Γ),P = Γ,P (unlocking something that has been locked is the same as unlocking the original thing).

Now, I don't expect (P -> Γ) to have a further right adjoint (I'm using it for a different purpose). But is this a kind of context operation that people have looked at?

2
4
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 5mo ago
Replying to
@jhostert@mathstodon.xyz Unfortunately not, but the notes are here: https://owenlynch.org/archive/hippogriff.pdf
owenlynch.org
1
0
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 5mo ago
Replying to
@eigil@mathstodon.xyz I have a janky Rust program which loads a djot file and then outputs an html file for each top level header using a template engine. Maybe at some point I'll clean it up and put it in a public repo...
1
0
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 5mo ago

I'm stopping by Utrecht Science Park for the next couple hours; if there are any type theorists who want to chat DM me!

1
0
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 5mo ago

@eigil@mathstodon.xyz yo welcome back to civilization

mathstodon.xyz

Eigil Rischel (@eigil@mathstodon.xyz) - Mathstodon

1
0
1
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 5mo ago
Replying to
@jeanas@mathstodon.xyz Yes! Thank you I was really struggling with the CJK package.
1
0
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 5mo ago

What's the minimal way of getting the yo hiragana in LaTeX without fussing too much with fonts, which will work on the arXiv?

1
3
1
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 8mo ago
Replying to
@edwinb @constantine I think we've been thinking very similar thoughts! https://owenlynch.org/archive/2025-aria-ta1-seminar/1.html
owenlynch.org
2
4
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 6mo ago
Replying to
@jonmsterling @tml @albertcardona @elduvelle Alright, I'll back off from this conversation.
1
0
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 8mo ago
Replying to
@constantine Let's chat about it! I have a TYPES submission on my approach, but I still need to do some work before I put confident math statements on the public internet.
1
0
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 5mo ago
Replying to
@zwarich@hachyderm.io @MartinEscardo@mathstodon.xyz OK, this is a quite elegant idea. I feel like in practice I would want to write the tree automata as an automata over parametrized states (e.g. with integer precedence) but that's a minor detail. A tool that took in a grammar and a tree automata and produced random samples from their intersection would be quite useful for testing parsers.
0
0
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 5mo ago
Replying to
@constantine@types.pl @trebor@types.pl @jonmsterling@mathstodon.xyz Really cool! I wish I knew more Agda so I could understand this better...
0
0
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 5mo ago
Replying to
@zwarich@hachyderm.io @MartinEscardo@mathstodon.xyz And I will admit that I probably ignorantly used LL(1) incorrectly; I really just meant "no backtracking, always commit to a decision on what to do by looking only at the next token."
0
0
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 5mo ago
Replying to
@danielgratzer @bentnib :O so many adjoints
0
1
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 5mo ago
Replying to
@zwarich@hachyderm.io This thing about grammar based testing is very interesting. I think it's probably a good idea to write down a grammar and then try to do property-based testing on the handwritten parser by seeing if it can parse an arbitrary string sampled randomly from the grammar, and it gives back the same tree that the grammar gave; this seems related to what @MartinEscardo@mathstodon.xyz was suggesting but in a bit of a different direction. One of my colleagues recently wrote a property based tester for fnotation, but it was manually written; it would be much better to generate this automatically from a declarative spec. Though... there still is a tricky thing here which is that if you want to test your precedence parsing, you have to generate strings that have some, but not all parentheses, so you have to express precedences numerically in the grammar still.
0
4
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 5mo ago
Replying to
@takeoutweight@mastodon.social You mean like graphviz? I totally get this.
0
0
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 8mo ago
Replying to

@constantine

primitive modality, which cannot be done with SOGATs

OK good, I still have some tricks you haven't figured out 😜

0
2
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 6mo ago
Replying to
@tml @jonmsterling @albertcardona @elduvelle Presumably the claim is something like "transit was 10x more competently and sensibly prioritized and organized relative to the technological capabilities of the time" not "transit was 10x faster."
0
2
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 5mo ago
Replying to
@soaproot@sfba.social @MartinEscardo@mathstodon.xyz Interesting! Do you know the story behind this?
0
3
0
0
Open post
Owen Lynch @olynch@mathstodon.xyz
· 5mo ago
Replying to
@zwarich@hachyderm.io @MartinEscardo@mathstodon.xyz Ooh this is with Matt Might I like that guy.
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: 14:06:15 UTC