Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[fud2] Implement More Advanced Planners #2247

Open
jku20 opened this issue Aug 5, 2024 · 0 comments
Open

[fud2] Implement More Advanced Planners #2247

jku20 opened this issue Aug 5, 2024 · 0 comments
Labels
C: fud2 experimental driver

Comments

@jku20
Copy link
Collaborator

jku20 commented Aug 5, 2024

Problem Statement

This is partially redundant to a comment on #2113 but that's okay. Read that for more information on current implemented planners and more words about this problem in general.

fud2's ops can be viewed as functions from one set of states to another set of states. The hypergraph of #1958 can be viewed as a solution to this new program synthesis problem, where ops have to be composed in a straight-line program (from here on called a "plan") which takes as input a given set of types and returns a new desired set of types, using a given set of ops.

The goal is a function which creates plans, a "planner," which can deal with large numbers of ops possibly, but probably not forming a dense hypergraph.

Current Solutions

  • A simple planner based on enumerating all sequences of ops currently exists. This works with the current shape and number of ops, but will not scale much further.

  • A simple (non-complete) planner based on e-graphs and implemented via egg.

Proposals

A few people proposed adapting the solution based on e-graphs to Datalog. This needs to be tested. I'm personally a bit skeptical that just putting the current solution based on e-graphs into Datalog will do much better than the current solution implemented with egg. Both solutions, if they are to be complete, require generating a lot of invalid programs. That would need to be stopped.

Of course any other new ideas are welcome.

Implementing Planners

A planner is an implementation of FindPlan. For examples see, enumerative_planner.rs or egg_planner.rs.

Planners should then be added to tests in fud-core/tests/tests.rs and added as a command line option in cli.rs.

@jku20 jku20 added the C: fud2 experimental driver label Aug 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C: fud2 experimental driver
Projects
None yet
Development

No branches or pull requests

1 participant