§ Stuff I learnt in 2022


2022 was a weird year for me. I moved from India to Edinburgh to pursue my PhD, and a lot of the year was (and still is) getting used to what it even means to be a PhD student. Here's a run down of the things I learnt this year, and what the experience of doing this was.

§ Semantics of MLIR in Lean


The first project I took up was to define the semantics of MLIR , a new compiler infrastructure in the Lean4 proof assistant, titled boringly as opencompl/lean-mlir.
While working on the project, I did a bunch of useful things:

§ Lean OSS work


I also began contributing to the proof assistant itself. In particular, I've been slowly chipping away at adding LLVM support , which got merged on the 31st, right before new years! The hardest part was learning a huge amount about low-level linkers, loaders, and other cross platform shenanigans. The sources I leaned against most were:

§ Partial Evaluation


I was also interested in improving the performance of the code generator, and was frustrated that we in compilers kept rediscovering basic optimisation techniques over an over again. Partial Evaluation seemed like a powerful technique to prevent this waste, and I thus began reading the literature on partial evaluation. The best book I found was called Partial evaluation and automatic program generation , and I implemented the algorithms from the book . However, I haven't had the time to integrate these back into lean proper. Plans for next year!

§ Adjoint School And Category Theory


I wanted to learn more category theory, since I felt it was important as a type theorist in training to be fluent with category theory.

But to be honest, what I really took away from this was that I don't enjoy category theory as much as I enjoy geometry. Thus, I'm going to try to align next year such that I get to read more geometric concepts!

§ Logic


I wanted to learn logic and model theory, so I read George Boolos' book "Computability and Logic" . My two favourite theorems were:

I also wanted to learn what forcing was about, so I tried to read through the literature:

§ Frex


Ohad Kammar is a senior research fellow here at Edinburgh who I really enjoy talking to. He told me about a project he works on, frex, which stands for "free extensions". The TL;DR is that they wish to study how to write down simplifiers / computer algebra systems in a principled fashion. Their paper Partially static data as free extensions of algebras is a super readable account of their ideas. I quite enjoyed re-implementing the basic version in Haskell. I wish to implement their more recent, more complex dependently-typed version of the theory in Lean.

§ Ideas in type theory and proof assistants


Since I'm here at Edinburgh, I keep getting stray recommendations on things to read. A big shout-out to Andres Goens , Chris Hughes , Jesse Sigal , Justus Mathiessen , Leonardo De Moura , Li-yao Xia , Mario Carneiro , Ohad Kammar , and Sebastien Michelland for many of these pointers.

§ Computational group theory


I was confused about what I should pick for my PhD topic, and I briefly flirted with the idea of working on computational group theory. I genuinely loved a bunch of the papers in this space, but alas, I couldn't see myself seriously working on these, due to the lack of a clear and focused problem that I coulf work on. I did read some cool papers regardless:

§ Automated theorem proving


I wound up reading a little on how to implement automated theorem provers (SAT/SMT solvers). This space is huge, and I only got a cursory glance at it from the Decision procedures book . Even so, it was neat to learn the core ideas:

§ Common Lisp


I got turned off of writing scripts in Python because writing parallel processing is a pain, so I did the obvious thing: picked up common lisp!

§ Non fiction and fiction


I wound up reading a bunch of sci-fi this year, since I wanted to work my way through the Nebula award winners. My favourites were:

As usual, I was reading some more sciencey things, this time on chemistry and nanotechnology, which were the books Ignition! An informal history of rocket liquid propellants , Inventing Temperature , and Engines of creation .

§ Looking Back


When I started writing this blog post, I felt that I hadn't learnt as much as I did in 2019 . However, I now see that I've learnt a bunch of things, just in a small domain (proof assistants / type theory / logic). To be honest, this makes me kind of sad; I miss learning different things, and I feel like I haven't gotten closer towards some of my life goals of things I want to learn --- the standard model of particle physics, the proof of resolution of singularities, and other such goals. I'm going to try to make sure 2023 is more diverse in what I read, to make sure I'm happy and sane, while continuing to become an expert in proof assistants :). With that said, I'd like to set concrete goals for 2023:

That looks like an ambitious list, and I'm glad it is. I'd like my years to be full of interesting challenges and neat things I can point to at the end of year! With that said, happy new year!