20#include "dlinear/libs/libgmp.h"
21#include "dlinear/solver/LpRowSense.h"
22#include "dlinear/symbolic/PredicateAbstractor.h"
23#include "dlinear/symbolic/literal.h"
24#include "dlinear/symbolic/symbolic.h"
25#include "dlinear/util/Config.h"
26#include "dlinear/util/SortedVector.hpp"
58 std::strong_ordering operator<=>(
const Constraint& o)
const;
69 template <
int NVariables>
Use theory reasoning to add relations between literals using some simple theory inferences.
void PropagateAssertions()
Propagate the sorted constraints by adding them to the context by calling the assert_ function.
const PredicateAbstractor & predicate_abstractor_
Predicate abstractor.
void Propagate()
Use theory reasoning to propagate some simple theory inferences.
std::map< Variable, SortedVector< Constraint > > constraints_
Map of constraints for each variable.
BoundImplicator(const Config &config, std::function< void(const Formula &)> assert, const PredicateAbstractor &predicate_abstractor)
Construct a BoundImplicator.
const Config & config_
Configuration.
void AddAssertion(const Formula &assertion)
Add an assertion to the constraints_ map.
const std::function< void(const Formula &)> assert_
Assertion function. It adds assertions to the context.
Simple dataclass used to store the configuration of the program.
Predicate abstraction is a method to convert a first-order logic formula into a Boolean formula.
Represents a symbolic variable.
Global namespace for the dlinear library.
LpRowSense
Sense of a linear programming row describing a constraint.
mpq_class value
Value of the constraint.
LpRowSense row_sense
Type of the constraint (e.g. <=, <, =, >, >=)
const Variable * variable
Boolean variable encoding the constraint.