I’ve continued tinkering with Knuckledragger, my Z3 powered python proof assistant.| Hey There Buddo!
Resolution is an old technique in automated reasoning. Datalog is a family of languages capable of expressing recursive database queries. The ancestry of datalog can be traced back to resolution and it is interesting and fruitful to examine the capabilities of modern resolution style provers in light of the use cases and operational interpretability of datalog.| Hey There Buddo!
There are many interesting syntactic and semantic objects that hold a notion of symmetry that a simple syntax tree can’t quite capture.| Hey There Buddo!
As I was digging into computational group theory for string Knuth Bendix completion goodness I noted that coset enumeration aka Todd-Coxeter, one of the mainstay algorithms of computational group theory, mechanically looks quite a bit like equality saturation. This is interesting in its own right but also as a source of controlled benchmarks for equality saturation systems.| Hey There Buddo!
Unification is formal methods speak for solving equations.| Hey There Buddo!
Egraph rewriting is a methodology for optimizing expression. A known problem is that some of the rewrite rules explode the egraph in size for what feels like common administrative manipulations like a + b = b + a or a * (b * c) = (a * b) * c.| Hey There Buddo!
TLA+ and Alloy are lower barrier to entry software verification tools. They are typically used on systems or protocol level models rather than modelling the exact source. There are many bugs that can appear at this level and they are super useful for clarifying your thinking.| Hey There Buddo!
I’ve become entranced by all the varieties of the knuth bendix completion algorithm as of late.| Hey There Buddo!
There are lots of interesting little subproblems in compilation like instruction selection, register allocation and instruction scheduling. These can be expressed in declarative interlinked way to constraint solvers.| Hey There Buddo!
You can make egraphs support stream like things / rational terms.| Hey There Buddo!
I’ve been working on Knuckledragger, my Z3 based semi-automated python proof assistant, on and off for 6 months (or arguably five years). I’ve realized I’ve done a bunch of stuff and despite writing often, not written the slightest bit about much of it.| Hey There Buddo!
Something that I’m tinkering with is making a proof assistant in python.| Hey There Buddo!
EMT ~ SMT - SAT| Hey There Buddo!
Some more interesting semi-automated proofs in python using smt solvers.| Hey There Buddo!
A classical theorem is that $\sqrt{2}$ is irrational. https://en.wikipedia.org/wiki/Square_root_of_2#Proofs_of_irrationality This means it cannot be written as $\frac{p}{q}$ for integers $p$ and $q$.| Hey There Buddo!
Knuckledragger is the moniker I’ve given to an approach and library I’m developing to do interactive theorem proving in python with the heavy lifting done by pre existing automated solvers.| Hey There Buddo!
I’ve been reading about ACL2, a theorem prover designed for common lisp. It has good automation and has been quite successfully applied to significant software/hardware verification and mathematics.| Hey There Buddo!
CBMC| www.cprover.org
Follow along on a google colab: https://colab.research.google.com/github/philzook58/philzook58.github.io/blob/master/pynb/cbmc_tut.ipynb| Hey There Buddo!