cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
satcheck_glucose.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_GLUCOSE_H
11
#define CPROVER_SOLVERS_SAT_SATCHECK_GLUCOSE_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
Glucose
// NOLINT(readability/namespace)
25
{
26
class
Solver;
// NOLINT(readability/identifiers)
27
class
SimpSolver;
// NOLINT(readability/identifiers)
28
}
29
30
template
<
typename
T>
31
class
satcheck_glucose_baset
:
public
cnf_solvert
,
public
hardness_collectort
32
{
33
public
:
34
explicit
satcheck_glucose_baset
(
message_handlert
&message_handler);
37
~satcheck_glucose_baset
()
override
;
38
39
tvt
l_get
(
literalt
a)
const override
;
40
41
void
lcnf
(
const
bvt
&bv)
override
;
42
void
set_assignment
(
literalt
a,
bool
value)
override
;
43
44
// extra MiniSat feature: default branching decision
45
void
set_polarity
(
literalt
a,
bool
value);
46
47
bool
is_in_conflict
(
literalt
a)
const override
;
48
bool
has_assumptions
()
const override
49
{
50
return
true
;
51
}
52
bool
has_is_in_conflict
()
const override
53
{
54
return
true
;
55
}
56
57
protected
:
58
resultt
do_prop_solve
(
const
bvt
&assumptions)
override
;
59
60
std::unique_ptr<T>
solver
;
61
62
void
add_variables
();
63
};
64
65
class
satcheck_glucose_no_simplifiert
:
66
public
satcheck_glucose_baset
<Glucose::Solver>
67
{
68
public
:
69
using
satcheck_glucose_baset
<Glucose::Solver>
::satcheck_glucose_baset
;
70
std::string
solver_text
()
const override
;
71
};
72
73
class
satcheck_glucose_simplifiert
:
74
public
satcheck_glucose_baset
<Glucose::SimpSolver>
75
{
76
public
:
77
using
satcheck_glucose_baset
<Glucose::SimpSolver>
::satcheck_glucose_baset
;
78
std::string
solver_text
()
const override
;
79
void
set_frozen
(
literalt
a)
override
;
80
bool
is_eliminated
(
literalt
a)
const
;
81
};
82
83
#endif
// CPROVER_SOLVERS_SAT_SATCHECK_GLUCOSE_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_glucose_baset::is_in_conflict
bool is_in_conflict(literalt a) const override
Returns true if an assumption is in the final conflict.
Definition
satcheck_glucose.cpp:264
satcheck_glucose_baset::~satcheck_glucose_baset
~satcheck_glucose_baset() override
A default destructor defined in the .cpp is used to ensure the unique_ptr to the solver is correctly ...
satcheck_glucose_baset::lcnf
void lcnf(const bvt &bv) override
Definition
satcheck_glucose.cpp:109
satcheck_glucose_baset::solver
std::unique_ptr< T > solver
Definition
satcheck_glucose.h:60
satcheck_glucose_baset::set_polarity
void set_polarity(literalt a, bool value)
Definition
satcheck_glucose.cpp:74
satcheck_glucose_baset::satcheck_glucose_baset
satcheck_glucose_baset(message_handlert &message_handler)
Definition
satcheck_glucose.cpp:254
satcheck_glucose_baset::l_get
tvt l_get(literalt a) const override
Definition
satcheck_glucose.cpp:46
satcheck_glucose_baset::has_is_in_conflict
bool has_is_in_conflict() const override
Definition
satcheck_glucose.h:52
satcheck_glucose_baset::do_prop_solve
resultt do_prop_solve(const bvt &assumptions) override
Definition
satcheck_glucose.cpp:166
satcheck_glucose_baset::set_assignment
void set_assignment(literalt a, bool value) override
Definition
satcheck_glucose.cpp:231
satcheck_glucose_baset::add_variables
void add_variables()
Definition
satcheck_glucose.cpp:102
satcheck_glucose_baset::has_assumptions
bool has_assumptions() const override
Definition
satcheck_glucose.h:48
satcheck_glucose_no_simplifiert
Definition
satcheck_glucose.h:67
satcheck_glucose_no_simplifiert::solver_text
std::string solver_text() const override
Definition
satcheck_glucose.cpp:91
satcheck_glucose_simplifiert
Definition
satcheck_glucose.h:75
satcheck_glucose_simplifiert::set_frozen
void set_frozen(literalt a) override
Definition
satcheck_glucose.cpp:278
satcheck_glucose_simplifiert::solver_text
std::string solver_text() const override
Definition
satcheck_glucose.cpp:96
satcheck_glucose_simplifiert::is_eliminated
bool is_eliminated(literalt a) const
Definition
satcheck_glucose.cpp:296
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
Glucose
Definition
satcheck_glucose.h:25
resultt
resultt
The result of goto verifying.
Definition
properties.h:45
solvers
sat
satcheck_glucose.h
Generated by
1.17.0