Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Wide context.

But to be a bit more specific, I've been involved in the egraphs community https://github.com/philzook58/awesome-egraphs and we don't currently have a shared database of rewrite rules for benchmarking, nor do we collect the rules from different projects. Seeing the actual files is helpful.

On a slightly different front, I'm also trying to collect rules or interesting theories up in my python interactive theorem prover Knuckledragger https://github.com/philzook58/knuckledragger . Rewrite rule or equational theory looking things are easier to work with than things with deeply nested notions of quantifiers or tons of typeclass / mathematical abstraction like you find when you try to translate out of Coq, Lean, Isabelle.

There are also different approaches to declarative rewrite rules in major compilers. GCC, LLVM, and cranelift have their own declarative rewrite rule systems for describing instruction selection and peephole optimizations but also of course lots of code that programatically does this. I also want to collate these sorts of things. Working on fun clean systems while not confronting the ugly realities of the real and useful world is ultimately empty feeling. Science is about observing and systematizing. Computer science ought to include occasionally observing what people actually do or need.



Thanks for the explanation, although I now have more questions :

- Why the "graph" aspect of "e-graphs", when it seems all of the ones I've seen in your article and on Wikipedia have only a single edge? Why not just "equivalences"?

- The Wikipedia page doesn't seem to explain the actual data structure. If it's a data structure, how is the actual data laid out in a series of bits? Or is "data structure" on that page used in a way which is meant to make sense to mathematicians rather than computer scientists?

- How does this relate to existing refactoring tools? Is this a new approach? Or is it what IDEs and language servers already use?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: