dlinear  0.0.1
Delta-complete SMT solver for linear programming
Loading...
Searching...
No Matches
DeltaSoplexTheorySolver.h
1
7#pragma once
8
9#include <string>
10
11#ifndef DLINEAR_ENABLED_SOPLEX
12#error SoPlex is not enabled. Please enable it by adding "--//tools:enable_soplex" to the bazel command.
13#endif
14
15#include "dlinear/libs/libgmp.h"
16#include "dlinear/solver/SatResult.h"
17#include "dlinear/solver/SoplexTheorySolver.h"
18#include "dlinear/symbolic/PredicateAbstractor.h"
19#include "dlinear/symbolic/literal.h"
20#include "dlinear/util/Box.h"
21
22namespace dlinear {
23
32 public:
34 const std::string& class_name = "DeltaSoplexTheorySolver");
35
36 Explanations EnableLiteral(const Literal& lit) override;
37
38 void AddLiteral(const Variable& formula_var, const Formula& formula) override;
39
40 SatResult CheckSatCore(mpq_class* actual_precision, Explanations& explanations) override;
41
42 private:
43 void EnableSpxRow(int spx_row, bool truth) override;
44};
45
46} // namespace dlinear
Delta complete solver using SoPlex.
Explanations EnableLiteral(const Literal &lit) override
Activate the literal that had previously been added to the theory solver.
void EnableSpxRow(int spx_row, bool truth) override
Enable the spx_row row for the LP solver.
void AddLiteral(const Variable &formula_var, const Formula &formula) override
Add a Literal to the theory solver.
Predicate abstraction is a method to convert a first-order logic formula into a Boolean formula.
SoPlex is an exact LP solver written in C++.
const PredicateAbstractor & predicate_abstractor() const
Get read-only access to the predicate abstractor of the TheorySolver.
std::set< LiteralSet > Explanations
Set of explanations of the conflict.
Represents a symbolic form of a first-order logic formula.
Represents a symbolic variable.
Global namespace for the dlinear library.
SatResult
Result of running the theory solver over the literals decided by the SAT solver.
Definition SatResult.h:17
A literal is a variable with an associated truth value, indicating whether it is true or false.
Definition literal.h:24