Skip to content

Commit fcb7582

Browse files
Add assertions to ensure valid literal values in semitone methods
1 parent 4d9438e commit fcb7582

2 files changed

Lines changed: 16 additions & 4 deletions

File tree

src/la_theory.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ namespace smt
225225
if (ub(expr) <= c_right)
226226
return; // the constraint is already satisfied..
227227
else if (lb(expr) > c_right)
228-
net.add_clause({!p});
228+
return net.add_clause({!p}); // the constraint is conflicting..
229229

230230
// we add a slack variable to the tableau..
231231
auto slack = new_real(std::move(expr));

src/semitone.cpp

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,10 +102,22 @@ namespace smt
102102
}
103103
}
104104

105-
void semitone::add_lt(const utils::lin &lhs, const utils::lin &rhs, const utils::lit &p) { la.new_lt(lhs, rhs, p, true); }
106-
void semitone::add_le(const utils::lin &lhs, const utils::lin &rhs, const utils::lit &p) { la.new_lt(lhs, rhs, p); }
105+
void semitone::add_lt(const utils::lin &lhs, const utils::lin &rhs, const utils::lit &p)
106+
{
107+
assert(value(p) != utils::False);
108+
la.new_lt(lhs, rhs, p, true);
109+
}
110+
void semitone::add_le(const utils::lin &lhs, const utils::lin &rhs, const utils::lit &p)
111+
{
112+
assert(value(p) != utils::False);
113+
la.new_lt(lhs, rhs, p);
114+
}
107115

108-
void semitone::add_distance(utils::var from, utils::var to, const utils::rational &dist, const utils::lit &p) { dl.new_distance(from, to, dist, p); }
116+
void semitone::add_distance(utils::var from, utils::var to, const utils::rational &dist, const utils::lit &p)
117+
{
118+
assert(value(p) != utils::False);
119+
dl.new_distance(from, to, dist, p);
120+
}
109121

110122
void semitone::assume(const utils::lit &p)
111123
{

0 commit comments

Comments
 (0)