Clingo
|
State storing all necessary information to ground disjunctions. More...
#include <disjunction.hh>
Public Types | |
using | AtomMap = BaseDisjunction::AtomMap |
A map from global variables (including the guards) to the disjunction representation. | |
using | ElementKey = std::pair< Symbol, size_t > |
A key consisting of a head atom and a disjunction atom index. | |
using | ElementMap = Util::ordered_map< ElementKey, std::pair< size_t, Util::small_vector< size_t > > > |
A map from disjunction atoms and their heads to conditions. | |
Public Member Functions | |
StateDisjunction (std::pmr::monotonic_buffer_resource &mbr, DisjunctionBaseVec bases, VariableVec global, size_t index, bool single_pass_body) | |
Initialize a disjunction state. | |
auto | global () const -> VariableVec const & |
Get the global variables in the disjunction. | |
auto | symbols () -> SymbolVec & |
Get a buffer to store values for global variables. | |
auto | single_pass_body () const -> bool |
Indicates that all necessary elements can be grounded in a single pass. | |
auto | index () const -> size_t |
Get the update index for the disjunction. | |
auto | indices () const -> std::vector< size_t > |
Get the update indices for the heads of the elements. | |
void | enqueue (Queue &queue) |
Enqueue disjunction element rules. | |
void | propagate (OutputStm &out, Queue &queue) |
Propagate enqueued disjunction atoms. | |
auto | insert_atom (Assignment &ass) -> std::pair< AtomMap::iterator, bool > |
Insert a disjunction atom. | |
void | insert_elem (EvalContext const &ctx, AtomMap::iterator it, UTerm const &head, auto const &get_cond) |
Insert an disjunction element. | |
void | print (std::ostream &out, bool print_index) |
Print a non-ground representation of the disjunction. | |
void | output (Logger &log, SymbolStore &store, OutputStm &out) override |
Output all previously output disjunction atoms. | |
auto | base () -> BaseDisjunction & |
Return the base of the disjunction. | |
![]() | |
virtual | ~State ()=default |
Destructor. | |
State storing all necessary information to ground disjunctions.
auto CppClingo::Ground::StateDisjunction::indices | ( | ) | const -> std::vector< size_t > |
Get the update indices for the heads of the elements.
Unoptimized and intended for debug printing.
|
overridevirtual |
Output all previously output disjunction atoms.
Implements CppClingo::Ground::State.