Ilya Sergey

Ilya Sergey

@ilyasergey.bsky.social

Associate Professor at National University of Singapore. I do research in programming languages, software verification, distributed systems, and program synthesis. ilyasergey.net

601 followers239 following179 posts

A two-weekend fun project from 2 months ago: Vermilion, an experimental Lean 4 backend for Verus verifier for Rust. Verification conditions are readable Lean theorems, provable with an SMT solver, Lean's grind, Mathlib lemmas, by hand, or by your favorite AI system. github.com/ilyasergey/v...

As a Programming Language nerd, I have a soft spot for esoteric languages (esolangs), which are built by enthusiasts for fun and to make a point. Over the weekend I started collecting them in Lean, so, please, meet Fantastic Beasts and Where to Find Them, PL edition: github.com/ilyasergey/l... →

View full thread

All the listings above come from one source program in Turpentine (a nod to Alan Perlis), a small imperative language, with compilers to twelve of the esolangs. Ten of those are certified: derived from the completeness proofs, correct by construction (but useless).

There is more in the collection: Befunge-93, Thue, Ook, Unlambda, SKI, Brainloller, Deadfish, plus a roadmap. Each language has a spec, an interpreter, tests, and a computational-class theorem; most have compilers from Turpentine. Contributions welcome: github.com/ilyasergey/l...

github.comGitHub - ilyasergey/langlib: Esoteric Programming Languages, FormallyEsoteric Programming Languages, Formally. Contribute to ilyasergey/langlib development by creating an account on GitHub.

As a Programming Language nerd, I have a soft spot for esoteric languages (esolangs), which are built by enthusiasts for fun and to make a point. Over the weekend I started collecting them in Lean, so, please, meet Fantastic Beasts and Where to Find Them, PL edition: github.com/ilyasergey/l... →

View full thread

FRACTRAN (1987) is by John Conway (of Game of Life fame). A program is a list of fractions and the state is one positive integer; at each step, the state is multiplied by the first fraction that yields an integer. It is Turing-complete. This run starts at 239 and halts at 2^42:

Malbolge (1998) is the craziest of the bunch: instructions encrypt themselves after executing. Its first program was synthesised in 2000. While its memory is bounded, Malbolge Unshackled (2007) lifts the bound. Its Turing-completeness is open (but my agents are on it).

As a Programming Language nerd, I have a soft spot for esoteric languages (esolangs), which are built by enthusiasts for fun and to make a point. Over the weekend I started collecting them in Lean, so, please, meet Fantastic Beasts and Where to Find Them, PL edition: github.com/ilyasergey/l... →

View full thread

In Piet (2002), named after the artist Piet Mondrian, programs are images. The interpreter walks between regions of colour, and the operation it performs is determined by the change in hue and lightness at each boundary. As you've guessed, this picture also computes 42:

Subleq (mid-1990s) only has a single instruction: "subtract and branch if the result is ≤ 0". Since there is only one opcode, it is never written down, and a program is a sequence of address triples (and labels). Some enthusiasts built this architecture in hardware using FPGAs:

As a Programming Language nerd, I have a soft spot for esoteric languages (esolangs), which are built by enthusiasts for fun and to make a point. Over the weekend I started collecting them in Lean, so, please, meet Fantastic Beasts and Where to Find Them, PL edition: github.com/ilyasergey/l... →

View full thread

Brainfuck (1993) is, arguably, one of the best-known esolangs and a starting point for many others, thanks to its tiny specification. It is, essentially, a Turing machine in disguise: its eight one-character commands operate on a tape of bytes. Here it is computing 42:

Whitespace (April 1, 2003) uses only spaces, tabs and linefeeds as meaningful commands; every other visible character is just a comment (great for polyglot programming!). For example, this program encodes 42 in binary and is only 21 bytes in size:

As a Programming Language nerd, I have a soft spot for esoteric languages (esolangs), which are built by enthusiasts for fun and to make a point. Over the weekend I started collecting them in Lean, so, please, meet Fantastic Beasts and Where to Find Them, PL edition: github.com/ilyasergey/l... →

The reason to do so in Lean was (a) to substantiate folklore arguments surrounding many esolangs: whether they are Turing-complete or not, and (b) to produce a bunch of EsoCompCerts. Here are some of the most interesting specimens from my PL zoo:

New blog post on Proofs and Intuitions: "Liveness Proofs in Veil, Part I: The First Step" (by Qiyuan Zhao). proofsandintuitions.net/2026/06/24/l... Safety says nothing bad happens; liveness says something good eventually does. We present a proof mode for verifying liveness deductively in Lean.

proofsandintuitions.netLiveness Proofs in Veil, Part I: The First StepSafety property means “nothing bad happens during the run of a program”; liveness property means “the program eventually does something good”. In this post, we walk through a simple proof of a livenes...

Are paper rejections really that bad? My papers get read by ~3 people on average. Each rejection means a resubmission, which means 3 more readers. After 4 rejections, that's double-digit readership.

New post on "Proofs and Intuitions": Verifying Distributed Protocols in Veil. We take a tour of Veil, a Lean-based verification framework that combines TLA+-style model checking with formal proofs and enables AI-powered invariant inference. proofsandintuitions.net/2026/02/09/d...

proofsandintuitions.netVerifying Distributed Protocols in VeilIn this post, we discuss how to formalise, test, and prove the correctness of a classic distributed protocol by combining model checking, automated deductive verification, and AI-powered invariant inf...

Had a fantastic week teaching Programming with Proofs in Lean at Neapolis University Pafos. It was great to introduce NUP students to program verification with Veil and Velvet, having many insightful discussions along the way. Excited to see what projects they'll develop next!

Ilya Sergey reposted

Spent the last couple of days porting my program verification class from Dafny to Lean via Loom/Velvet, and it just works! Whenever the SMT solver can’t fully prove a program correct, Lean’s aesop and grind take care of the remaining goals.

Ilya Sergey reposted

Ilya Sergey reposted

It seems the first hike as part of @icfp-conference.bsky.social/SPLASH went well! A shoutout to @ningkeli.bsky.social and Yibo DONG (as well as my wife, Ting), who guided the participants on this walk. I could unfortunately not participate, as I had to travel abroad due to an urgent issue.

Ningke Li@ningkeli.bsky.social

@icfp-conference.bsky.social Had a nice day co-hosting the first hike of #icfpsplash25 Outdoor Activities track with Yibo🙌 Walking in the forest 🌳 Seeking special animals (monkeys🐒, lizards🦎, colugos🦇, and even a snake🐍!) Enjoying the networking🥳

Ilya Sergey reposted

ICFP/SPLASH is starting now!! See you all at NUS today — #icfpsplash25

Ilya Sergey@ilyasergey.bsky.social

ICFP/SPLASH'25 is starting tomorrow! Attending Sunday workshops and FARM Performance at #icfpsplash25? Make sure check out our illustrated guide on getting to NUS Conservatory and dining options on campus: conf.researchr.org/venue/icfp-s...

Ilya Sergey reposted

Ilya Sergey reposted

And if you’re interested in OxCaml, we have a tutorial on Sunday at ICFP walking through it conf.researchr.org/track/icfp-s... (materials will be online for anyone afterwards. Just the minor detail of finishing writing them first)

conf.researchr.orgICFP/SPLASH 2025 - Tutorials - ICFP/SPLASH 2025Latest Announcements Information for presenters at NUS (Sunday) and at MBS (Monday-Saturday) is now available! The registration is now open. Early Registration deadline: 31 August 2025. Activities ...
Yaron Minsky@yminsky.bsky.social

We're going to be at SPLASH/ICFP in Singapore, so if you're going, come talk to us! Richard Eisenberg is an especially good person to ask, but a lot of us will have useful context on this.

Ilya Sergey reposted

I’m looking for an intern to work on Rust/RustRover content creation. If you are a university student in any EU country, the UK, Serbia, or Armenia, and you are passionate about Rust and sharing your knowledge, I’d love to hear from you. Please repost to help spread the word. Links below.

OlivierFest’25 is taking place on October 14-15 at ICFP/SPLASH'25 in Singapore! A two-day celebration of Olivier Danvy's impact on PL research, with a program packed with talks on algebraic effects, semantics, interpreters, and, of course, continuations. conf.researchr.org/home/icfp-sp...

conf.researchr.orgOlivierFest 2025 - ICFP/SPLASH 2025This two-day event celebrates the career and accomplishments of Olivier Danvy on the occasion of his 64th birthday. Olivier is a visionary in the field of programming languages and is well-known for h...

Ilya Sergey reposted

It's official: RTFM, the faculty mentoring workshop, is happening again, this time at POPL 2026 in Rennes. The one we had at PLDI 2024 in Copenhagen was well received, so I'm looking forward to the next edition. Stay tuned!