delpi
0.0.1
DElta-complete LP solver
Toggle main menu visibility
Loading...
Searching...
No Matches
Formula.h
1
7
#pragma once
8
9
#include <vector>
10
11
#include "delpi/libs/gmp.h"
12
#include "delpi/symbolic/Expression.h"
13
#include "delpi/symbolic/FormulaKind.h"
14
#include "delpi/util/concepts.h"
15
16
namespace
delpi
{
17
32
class
Formula {
33
public
:
34
Formula(
Expression
expression,
FormulaKind
kind, mpq_class rhs);
35
Formula(
const
Formula& o) =
default
;
36
Formula(Formula&& o)
noexcept
=
default
;
37
Formula& operator=(
const
Formula& o) =
default
;
38
Formula& operator=(Formula&& o)
noexcept
=
default
;
39
53
[[nodiscard]] Formula
Substitute
(
const
Expression::SubstitutionMap& s)
const
;
62
template
<MapFromTo<Variable, mpq_
class
> T>
63
[[nodiscard]]
bool
Evaluate
(
const
T& env)
const
;
64
66
[[nodiscard]]
const
Expression
& expression()
const
{
return
expression_
; }
68
[[nodiscard]]
FormulaKind
kind()
const
{
return
kind_
; }
70
[[nodiscard]]
const
mpq_class& rhs()
const
{
return
rhs_
; }
72
[[nodiscard]] std::vector<Variable> variables()
const
{
return
expression_
.variables(); }
73
75
[[nodiscard]]
bool
equal_to(
const
Formula& o)
const
noexcept
;
77
[[nodiscard]]
bool
less(
const
Formula& o)
const
noexcept
;
79
[[nodiscard]] std::size_t hash()
const
noexcept
;
80
81
Formula operator-()
const
;
82
Formula operator!()
const
;
83
std::strong_ordering operator<=>(
const
Formula&)
const
;
84
bool
operator==(
const
Formula& o)
const
{
return
equal_to(o); }
85
86
Expression
expression_
;
87
FormulaKind
kind_
;
88
mpq_class
rhs_
;
89
};
90
91
Formula
operator==(
const
Variable
& lhs,
const
Variable
& rhs);
92
Formula
operator!=(
const
Variable
& lhs,
const
Variable
& rhs);
93
Formula
operator<(
const
Variable
& lhs,
const
Variable
& rhs);
94
Formula
operator<=(
const
Variable
& lhs,
const
Variable
& rhs);
95
Formula
operator>(
const
Variable
& lhs,
const
Variable
& rhs);
96
Formula
operator>=(
const
Variable
& lhs,
const
Variable
& rhs);
97
98
Formula
operator==(
const
Expression
& lhs,
const
Expression
& rhs);
99
Formula
operator!=(
const
Expression
& lhs,
const
Expression
& rhs);
100
Formula
operator<(
const
Expression
& lhs,
const
Expression
& rhs);
101
Formula
operator<=(
const
Expression
& lhs,
const
Expression
& rhs);
102
Formula
operator>(
const
Expression
& lhs,
const
Expression
& rhs);
103
Formula
operator>=(
const
Expression
& lhs,
const
Expression
& rhs);
104
105
Formula
operator==(mpq_class lhs,
const
Expression
& rhs);
106
Formula
operator!=(mpq_class lhs,
const
Expression
& rhs);
107
Formula
operator<(mpq_class lhs,
const
Expression
& rhs);
108
Formula
operator<=(mpq_class lhs,
const
Expression
& rhs);
109
Formula
operator>(mpq_class lhs,
const
Expression
& rhs);
110
Formula
operator>=(mpq_class lhs,
const
Expression
& rhs);
111
112
Formula
operator==(
const
Expression
& lhs, mpq_class rhs);
113
Formula
operator!=(
const
Expression
& lhs, mpq_class rhs);
114
Formula
operator<(
const
Expression
& lhs, mpq_class rhs);
115
Formula
operator<=(
const
Expression
& lhs, mpq_class rhs);
116
Formula
operator>(
const
Expression
& lhs, mpq_class rhs);
117
Formula
operator>=(
const
Expression
& lhs, mpq_class rhs);
118
119
std::ostream& operator<<(std::ostream& os,
const
Formula
& formula);
120
121
}
// namespace delpi
122
123
#ifdef DELPI_INCLUDE_FMT
124
125
#include "delpi/util/logging.h"
126
127
OSTREAM_FORMATTER(
delpi::Formula
);
128
129
#endif
delpi::Expression
Represents a symbolic form of an expression.
Definition
Expression.h:37
delpi::Formula
Symbolic formula used to represent a constraint in the LP problem.
Definition
Formula.h:32
delpi::Formula::Evaluate
bool Evaluate(const T &env) const
Evaluates the formula using a given environment (by default, an empty environment).
Definition
Formula.cpp:25
delpi::Formula::expression_
Expression expression_
Left-hand side expression.
Definition
Formula.h:86
delpi::Formula::kind_
FormulaKind kind_
Kind of the formula .
Definition
Formula.h:87
delpi::Formula::rhs_
mpq_class rhs_
Right-hand side constant.
Definition
Formula.h:88
delpi::Formula::Substitute
Formula Substitute(const Expression::SubstitutionMap &s) const
Create a copy of this formula with the expression having all occurrences of the variables in s replac...
Definition
Formula.cpp:21
delpi::Variable
Real symbolic variable.
Definition
Variable.h:20
delpi
Global namespace for the delpi library.
delpi::FormulaKind
FormulaKind
Kinds of symbolic formulas.
Definition
FormulaKind.h:14
delpi
symbolic
Formula.h
Generated by
1.17.0