Giter Club home page Giter Club logo

acheron's People

Contributors

robbiemckinstry avatar

Stargazers

 avatar

Watchers

 avatar

acheron's Issues

Replace Arc with Rc

No need for anything to be behind an Arc pointer right now, since everything is expected to be single-threaded for the foreseeable future.

Replace the Solvers Dequeue with a WorkQueue

Blocked unitl I read more about CDCL and whether a priority heap is needed.

The dequeue in the solver should be replaced with a heap. In practice, we want to be able to order the operations to behave like a stack in some cases and a queue in others. We may also want to insert items into the middle of the queue, though I'm not sure we have a reason for that.

For DPLL, we may be able to get away with using push_front for unit propagation and pure literal elimination and push_back for splitting (to ensure we're moving through the search space in a depth-first manner, allowing reference-counted formulas to be freed. However, this approach feels fairly limiting w.r.t. parallelism, where we want multiple workers pulling from the queue at a time.

Remove "Status" field from Clause

Clause keeps a "status" literal to cache whether its been satisfied or not. This makes the code harder to read, and it doesn't really provide any algorithmic benefits over using purely functional im::vectors. We should discard it as well as any related methods.

Rename "Resolution"

I believe the Resolution OpCode is misnamed. "Resolution" is specific to CDCL, and splitting is the term I'm looking for w.r.t. DPLL.

Not 100% sure about this. Confirm in the Handbook of Satisfiability first.

Move Decisions into an "Operation" type

OpCode should be replaced with an AuditEntry which defines the list of operations applied. (I think CDCL uses something like this, so confirm whether the term is already well-defined before sticking with the name "AuditEntry").

We should also have an Operator trait, which modifies the formula and creates a new Frame. The Operator needs to be an object-safe trait since we may store it on the solver's DeQueue for operations like unit propagation and pure literal elimination.

Unify this vision with that of the Frame type.

Add Tests for Parsing

I'm aware of a few bugs in DIMACS parsing which result in empty clauses where none should be. This is probably caused by parsing empty lines, or lines with whitespace in them accidentally. I believe the DIMACS format does not allow empty clauses since that would not be valid CNF.

Remove nondeterminism

There are a couple of places with "random" operations, which we should remove with a deterministic operation instead.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.