Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/philzook58/duckegg

An experiment in using DuckDB for a datalog / egg
https://github.com/philzook58/duckegg

datalog egg egraph sql

Last synced: 5 days ago
JSON representation

An experiment in using DuckDB for a datalog / egg

Awesome Lists containing this project

README

        

# duckegg

[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](http://colab.research.google.com/github/philzook58/duckegg/blob/master)

Duckegg is an embedded python datalog implementation built around duckdb to supply it's core functionality. Duckdb is making waves as a performant, embedded, easy-to-deploy OLAP database

Blog post here

Really duckegg is a designed to be a relational egglog. Egraphs are a data structure for performing nodestructive term rewriting and equational reasoning. This graph can be represented and queried as tables (each enode becomes a row in the corresponding table of it's symbol). The various rebuilding operation can also be represented as SQL operations. The hope basically is that duckdb is so good that the translation cost into SQL is worth it.

Yihong Zhang previously had the idea of building a [relational egglog around sqlite in racket](https://github.com/yihozhang/egraph-sqlite) [PLDI workshop paper](https://src.acm.org/binaries/content/assets/src/2022/yihong-zhang.pdf), and this implementation is very much related and inspired by that one.

For more on egraphs and egglog

-
-
-
-
-