ninehusky / chompy

chomp
5 stars 0 forks source link

Explore alternate ways of enumerating terms #15

Open ninehusky opened 1 month ago

ninehusky commented 1 month ago

Even for small predicates, languages like a simple BV language can scale to ~150,000 programs of depth 3. Enumerating these terms is prohibitively expensive. I think we need to leverage some core insight we know as human beings about what good rewrite rules look like.

I think as a start, we can do enumeration exploring basic axioms over rewrites; e.g., commutativity, associativity, etc. for a set of variables, all operators, and a set of constants (0, 1, 2). This initial space can be complete because it is small.

Then, we should ditch completeness for future exploration -- we should look here for inspiration on what their rewrite rules look like. For example, one thing that's common is that operators on one side of a rewrite often show up on the other.

Implementation map:

ninehusky commented 1 month ago

Some other targets that are easier to hit, imo.