A bird's eye view of [Razborov, Resolution Lower Bounds for the Weak Functional Pigeonhole Principle, 2003].
30 April 2018
20 April 2018
07 February 2017
12 November 2015
Learning from Interpretations
The LFI-Problog algorithm, for doing inference on probabilistic logic programs.
05 October 2015
19 September 2015
12 September 2015
29 July 2015
Coverability for Vector Addition Systems
Vector addition systems are a model of computation. For this model, coverability is one of the easiest decision problems. This post presents an old (1978) upper bound, with accompanying code.
11 September 2014
26 August 2014
Watching Horn
How to use watched literals (or, rather, vertices) to do breadth-first search in Horn hyperdigraphs.
07 August 2014
30 July 2014
20 July 2014
IMO 2014 problem 1
This is an exercise proposed by Timothy Gowers: Write down all you think of while trying to solve a math problem.
12 July 2014
Minimizing Weighted Automata via Linear Algebra
In this post I present the minimization problem for weighted automata, closely following a paper by Stefan Kiefer and Björn Wachter. I do add lots of steps that aren't necessary. To me, they make the result look less like magic. I really like the mixture of automata and linear algebra.
05 July 2014
Minimal Sets over Monotone Predicates
This post describes a very nice use of binary search. I learned about it from a paper by Joao Marques-Silva, Mikolas Janota, and Anton Belov.
19 June 2014
PLDI 2014 — Compiler Validation via Equivalence Modulo Inputs
The title is stolen from a paper that was presented at PLDI. I did not see the presentation, so this summary is based on looking at the paper.
18 June 2014
PLDI 2014 — Presentations I've Seen
These are tiny summaries of some of the talks from PLDI 2014.
13 February 2014
Approximation of Binomial Coefficients
A proof that $\frac{1}{2}\frac{n^k}{k!}\lt{n\choose k}$.
11 February 2014
Program Analysis, from 2000 to 2009
Very extremely roughly, static program analysis is the area concerned with looking at the text of computer programs and deciding based on that whether they are crap or not.
There is, of course, a very easy way to write a sound program analyzer.
In Python3 it would look like this: print('crap').
It's sound because it never lets bad programs go without calling them out.
But you often want something a bit more friendly (aka complete, aka precise).
Being precise is difficult, and that's why this is still an area of active research.
Here are few papers from the decade 2000–2009 that are influential, and pointers to associated tools.