Proof Terms in Rocq
In this blog post, we’re going to take a deep dive into looking at proof terms in Rocq.
In this blog post, we’re going to take a deep dive into looking at proof terms in Rocq.
The Starbucks Reserve Roastery near me abruptly closed. This news was a big bummer, but not necessarily because of the coffee quality. They had this huge split flap sign whose pleasant waterfall patter washed over the cafe when its message changed, and served as lovely background noise when you were bringing your tourist family around to shop for souvenirs or nibbling on a croissant sandwich and a reading group paper.
Types in programming languages correspond to sets of semantic objects. Simple types, like int or string, have a clear meaning. However, recursive types, whose descriptions are self-referential with the \(\mu\) operator, can be challenging to grasp. This PLSE blog post aims to clarify the concept of recursive types by grounding the meaning of the \(\mu\) operator in terms of regular infinite trees.
Time for yet another floating-point blog post! Since this is my third blog post of the year, I’d like to keep this one brief. This time, I’ll be discussing “2Sum” algorithms, an obsession of mine for a number of years now, consuming a large part of an internship I did at Intel during the summer of 2023. The classic 2Sum algorithm1, attributed to Knuth and Møller, computes the floating-point addition and error term of two floating-point numbers exactly.
Attribution comes from the “Handbook of Floating-Point Arithmetic” by Jean-Michel Muller et al. ↩
The only way to find an error is to compare two different things. In software engineering, the two things are often the behavior of a program and the intended behavior of the program.
Dear editors,
To the editors,
Unparalleled work-life balance, frequent travel to exotic locales for conferences, and plentiful free food.
E-Graphs are a data structures that allow us to represent many equivalent programs at once. This post won’t get into background on e-graphs, so check out previous blog posts or the original egg talk. A variety of research projects at PLSE use e-graphs because they are a powerful and flexible tool for performing program optimization. Unfortunately, e-graphs suffer from a serious problem: their run-time performance is unpredictable.
I like compilers. I like how they whittle away inefficiencies into a tight core of NEON instructions. There’s something satisfying about opening up Compiler Explorer and seeing your code snippet turned into unfathomably fast vectorized code.