Show HN: A small reasoning engine that learns rewrite rules from two examples

I have been experimenting with structural reasoning and built a small engine that learns rewrite rules from only two examples. You provide a pair of before and after expressions and it works out the transformation and applies it to new inputs. There is no LLM, no regex and no hard coded logic.

The demo includes:

TEACH (learn a rule from two examples)

COMPOSE (several learned rules used together) TRANSFER (a rule learned in algebra also works in logic and sets)

SIMPLIFY (multi step deterministic rewriting with a visible trace)

CODEMOD (teaching a codemod from two examples)

It runs on a CPU and produces a reasoning trace for every step. I would be interested to know what people think or where it breaks.

Demo: https://re.heavyweather.io

3 points | by heavymemory 46 minutes ago

1 comments

  • RossBencina 31 minutes ago
    Interesting. Are there more examples somewhere? I'm curious about cases where multiple examples are required. The associativity "example" corresponds directly to the rewrite rule definition, so it doesn't really illuminate the distinction between specifying a rewrite rule and inferring a rule from multiple examples.
    • heavymemory 19 minutes ago
      Right, associativity is the simplest case because the structure is visible directly in one example.

      The system needs multiple examples when there is more than one varying part and a single example is ambiguous. A simple example is wrapping a function call. With:

          doThing(x) → log(doThing(x))
          process(y) → log(process(y))
      
      the system learns that: the function name varies the argument varies he outer log(…) is constant

      From that it infers the general rule and applies it to new inputs. A single example would not be enough to disambiguate that pattern.