9#include "dlinear/solver/PiecewiseLinearConstraint.h"
10#include "dlinear/symbolic/PredicateAbstractor.h"
11#include "dlinear/symbolic/literal.h"
17 static const mpq_class
zero;
67 void EnableLiteral(
const Variable& var);
75 std::ostream&
Print(std::ostream& os)
const override;
This class uses some basic algebraic operations to preprocess the constraints and identify violations...
void UpdateUpperBound(const mpq_class *upper_bound) override
Update the upper bounds of the constraint.
void UpdateLowerBound(const mpq_class *lower_bound) override
Update the lower bounds of the constraint.
LeakyReluConstraint(const Formula &active_formula, const Formula &inactive_formula, Variable relu_var, Expression active_soi, Expression inactive_soi, const PredicateAbstractor &pa)
Construct a new Relu Constraint object.
std::ostream & Print(std::ostream &os) const override
Print the constraint on the standard output.
LeakyReluConstraint(const Variable &relu_var, const Expression &e, float alpha, const PredicateAbstractor &pa)
Construct a new LeakyReluConstraint object.
static const mpq_class zero
Zero constant all the pointers to the default lower bound will point to.
LiteralSet LearnedClauses() const override
Produce some learned clauses the SAT solver will use to prune the sub-problems this piecewise constra...
LiteralSet Assumptions() const override
The assumptions used to guide the SAT solver towards the most promising sub-problems.
std::set< LiteralSet > TightenBounds(BoundPreprocessor &preprocessor) override
Use the preprocessor to tighten the bounds of the constraint and hopefully fix its state to either ac...
A piecewise linear constraint is a constraint that assumes different linear functions depending on th...
const Variable & inactive_var() const
Get read-only access to the boolean variable associated with the theory literal of the constraint.
const Variable & active_var() const
Get read-only access to the boolean variable associated with the theory literal of the constraint.
const Expression & active_soi() const
Get read-only access to the expression of the constraint.
const Expression & inactive_soi() const
Get read-only access to the expression of the constraint.
const mpq_class & lower_bound() const
Get read-only access to the lower bound of the constraint.
const mpq_class & upper_bound() const
Get read-only access to the upper bound of the constraint.
Predicate abstraction is a method to convert a first-order logic formula into a Boolean formula.
Represents a symbolic form of an expression.
Represents a symbolic variable.
Global namespace for the dlinear library.
std::set< Literal > LiteralSet
A set of literals.