Skip to content

Commit bd5970c

Browse files
Allow getting context-based incremental solver
Puts the type check into a single place
1 parent 30b6353 commit bd5970c

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

src/goto-checker/solver_factory.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ Author: Daniel Kroening, Peter Schrammel
2525
#endif
2626

2727
#include <solvers/flattening/bv_dimacs.h>
28+
#include <solvers/prop/decision_procedure_assumptions.h>
29+
#include <solvers/prop/decision_procedure_contexts.h>
2830
#include <solvers/prop/decision_procedure_incremental.h>
2931
#include <solvers/prop/prop.h>
3032
#include <solvers/prop/solver_resource_limits.h>
@@ -92,6 +94,17 @@ solver_factoryt::solvert::decision_procedure_assumptions() const
9294
return *solver;
9395
}
9496

97+
decision_procedure_contextst &
98+
solver_factoryt::solvert::decision_procedure_contexts() const
99+
{
100+
PRECONDITION(decision_procedure_ptr != nullptr);
101+
decision_procedure_contextst *solver =
102+
dynamic_cast<decision_procedure_contextst *>(&*decision_procedure_ptr);
103+
INVARIANT(
104+
solver != nullptr, "incremental decision procedure with contexts required");
105+
return *solver;
106+
}
107+
95108
propt &solver_factoryt::solvert::prop() const
96109
{
97110
PRECONDITION(prop_ptr != nullptr);

src/goto-checker/solver_factory.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ Author: Daniel Kroening, Peter Schrammel
2121
class message_handlert;
2222
class namespacet;
2323
class optionst;
24+
class decision_procedure_contextst;
2425
class decision_procedure_incrementalt;
2526
class decision_procedure_assumptionst;
2627

@@ -49,6 +50,7 @@ class solver_factoryt
4950
decision_proceduret &decision_procedure() const;
5051
decision_procedure_incrementalt &decision_procedure_incremental() const;
5152
decision_procedure_assumptionst &decision_procedure_assumptions() const;
53+
decision_procedure_contextst &decision_procedure_contexts() const;
5254
propt &prop() const;
5355

5456
void set_decision_procedure(std::unique_ptr<decision_proceduret> p);

0 commit comments

Comments
 (0)