cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
satcheck_minisat2.h
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module:
4
5
Author: Daniel Kroening, kroening@kroening.com
6
7
\*******************************************************************/
8
9
10
#ifndef CPROVER_SOLVERS_SAT_SATCHECK_MINISAT2_H
11
#define CPROVER_SOLVERS_SAT_SATCHECK_MINISAT2_H
12
13
#include "
cnf.h
"
14
15
#include <
solvers/hardness_collector.h
>
16
17
#include <memory>
18
19
// Select one: basic solver or with simplification.
20
// Note that the solver with simplifier isn't really robust
21
// when used incrementally, as variables may disappear
22
// unless set to 'frozen'.
23
24
namespace
Minisat
// NOLINT(readability/namespace)
25
{
26
// NOLINTNEXTLINE(readability/identifiers)
27
class
Solver;
// IWYU pragma: keep
28
// NOLINTNEXTLINE(readability/identifiers)
29
class
SimpSolver;
// IWYU pragma: keep
30
}
31
32
template
<
typename
T>
33
class
satcheck_minisat2_baset
:
public
cnf_solvert
,
public
hardness_collectort
34
{
35
public
:
36
explicit
satcheck_minisat2_baset
(
message_handlert
&message_handler);
39
~satcheck_minisat2_baset
()
override
;
40
41
tvt
l_get
(
literalt
a)
const
override
final
;
42
43
void
lcnf
(
const
bvt
&bv)
override
final
;
44
void
set_assignment
(
literalt
a,
bool
value)
override
;
45
46
// extra MiniSat feature: default branching decision
47
void
set_polarity
(
literalt
a,
bool
value);
48
49
// extra MiniSat feature: interrupt running SAT query
50
void
interrupt
();
51
52
// extra MiniSat feature: permit previously interrupted SAT query to continue
53
void
clear_interrupt
();
54
55
bool
is_in_conflict
(
literalt
a)
const override
;
56
bool
has_assumptions
() const override final
57
{
58
return
true
;
59
}
60
bool
has_is_in_conflict
() const override final
61
{
62
return
true
;
63
}
64
65
void
set_time_limit_seconds
(uint32_t lim)
override
66
{
67
time_limit_seconds
=lim;
68
}
69
70
protected
:
71
resultt
do_prop_solve
(
const
bvt
&)
override
;
72
73
std::unique_ptr<T>
solver
;
74
uint32_t
time_limit_seconds
;
75
76
void
add_variables
();
77
};
78
79
class
satcheck_minisat_no_simplifiert
:
80
public
satcheck_minisat2_baset
<Minisat::Solver>
81
{
82
public
:
83
using
satcheck_minisat2_baset
<Minisat::Solver>
::satcheck_minisat2_baset
;
84
std::string
solver_text
()
const override
;
85
};
86
87
class
satcheck_minisat_simplifiert
:
88
public
satcheck_minisat2_baset
<Minisat::SimpSolver>
89
{
90
public
:
91
using
satcheck_minisat2_baset
<Minisat::SimpSolver>
::satcheck_minisat2_baset
;
92
std::string
solver_text
()
const
override
final
;
93
void
set_frozen
(
literalt
a)
override
final
;
94
bool
is_eliminated
(
literalt
a)
const
;
95
};
96
97
#endif
// CPROVER_SOLVERS_SAT_SATCHECK_MINISAT2_H
cnf_solvert::cnf_solvert
cnf_solvert(message_handlert &message_handler)
Definition
cnf.h:75
hardness_collectort
Definition
hardness_collector.h:45
literalt
Definition
literal.h:26
message_handlert
Definition
message.h:27
satcheck_minisat2_baset::is_in_conflict
bool is_in_conflict(literalt a) const override
Returns true if an assumption is in the final conflict.
Definition
satcheck_minisat2.cpp:341
satcheck_minisat2_baset::clear_interrupt
void clear_interrupt()
Definition
satcheck_minisat2.cpp:115
satcheck_minisat2_baset::solver
std::unique_ptr< T > solver
Definition
satcheck_minisat2.h:73
satcheck_minisat2_baset::has_is_in_conflict
bool has_is_in_conflict() const override final
Definition
satcheck_minisat2.h:60
satcheck_minisat2_baset::~satcheck_minisat2_baset
~satcheck_minisat2_baset() override
A default destructor defined in the .cpp is used to ensure the unique_ptr to the solver is correctly ...
satcheck_minisat2_baset::do_prop_solve
resultt do_prop_solve(const bvt &) override
Definition
satcheck_minisat2.cpp:207
satcheck_minisat2_baset::interrupt
void interrupt()
Definition
satcheck_minisat2.cpp:109
satcheck_minisat2_baset::satcheck_minisat2_baset
satcheck_minisat2_baset(message_handlert &message_handler)
Definition
satcheck_minisat2.cpp:329
satcheck_minisat2_baset::add_variables
void add_variables()
Definition
satcheck_minisat2.cpp:131
satcheck_minisat2_baset::set_polarity
void set_polarity(literalt a, bool value)
Definition
satcheck_minisat2.cpp:89
satcheck_minisat2_baset::lcnf
void lcnf(const bvt &bv) override final
Definition
satcheck_minisat2.cpp:138
satcheck_minisat2_baset::l_get
tvt l_get(literalt a) const override final
Definition
satcheck_minisat2.cpp:61
satcheck_minisat2_baset::has_assumptions
bool has_assumptions() const override final
Definition
satcheck_minisat2.h:56
satcheck_minisat2_baset::set_time_limit_seconds
void set_time_limit_seconds(uint32_t lim) override
Definition
satcheck_minisat2.h:65
satcheck_minisat2_baset::set_assignment
void set_assignment(literalt a, bool value) override
Definition
satcheck_minisat2.cpp:306
satcheck_minisat2_baset::time_limit_seconds
uint32_t time_limit_seconds
Definition
satcheck_minisat2.h:74
satcheck_minisat_no_simplifiert
Definition
satcheck_minisat2.h:81
satcheck_minisat_no_simplifiert::solver_text
std::string solver_text() const override
Definition
satcheck_minisat2.cpp:120
satcheck_minisat_simplifiert
Definition
satcheck_minisat2.h:89
satcheck_minisat_simplifiert::set_frozen
void set_frozen(literalt a) override final
Definition
satcheck_minisat2.cpp:355
satcheck_minisat_simplifiert::is_eliminated
bool is_eliminated(literalt a) const
Definition
satcheck_minisat2.cpp:373
satcheck_minisat_simplifiert::solver_text
std::string solver_text() const override final
Definition
satcheck_minisat2.cpp:125
tvt
Definition
threeval.h:20
cnf.h
CNF Generation, via Tseitin.
hardness_collector.h
Capability to collect the statistics of the complexity of individual solver queries.
bvt
std::vector< literalt > bvt
Definition
literal.h:201
Minisat
Definition
satcheck_minisat2.h:25
resultt
resultt
The result of goto verifying.
Definition
properties.h:45
solvers
sat
satcheck_minisat2.h
Generated by
1.17.0