Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
abc
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
abc
Commits
4c0b78cf
Commit
4c0b78cf
authored
Sep 12, 2017
by
Alan Mishchenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Updates to &bmcs to help debugging.
parent
efbf5208
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
34 additions
and
33 deletions
+34
-33
src/base/abci/abc.c
+2
-2
src/sat/glucose/AbcGlucose.cpp
+30
-30
src/sat/glucose/SimpSolver.h
+2
-1
No files found.
src/base/abci/abc.c
View file @
4c0b78cf
...
...
@@ -40124,7 +40124,7 @@ int Abc_CommandAbc9SBmc( Abc_Frame_t * pAbc, int argc, char ** argv )
return
0
;
usage:
Abc_Print
(
-
2
,
"usage: &bmcs [-PCFAT num] [-gvwh]
\n
"
);
Abc_Print
(
-
2
,
"usage: &bmcs [-PCFAT num] [-g
e
vwh]
\n
"
);
Abc_Print
(
-
2
,
"
\t
performs bounded model checking
\n
"
);
Abc_Print
(
-
2
,
"
\t
-P num : the number of parallel solvers [default = %d]
\n
"
,
pPars
->
nProcs
);
Abc_Print
(
-
2
,
"
\t
-C num : the SAT solver conflict limit [default = %d]
\n
"
,
pPars
->
nConfLimit
);
...
...
@@ -40132,7 +40132,7 @@ usage:
Abc_Print
(
-
2
,
"
\t
-A num : the number of additional frames to unroll [default = %d]
\n
"
,
pPars
->
nFramesAdd
);
Abc_Print
(
-
2
,
"
\t
-T num : approximate timeout in seconds [default = %d]
\n
"
,
pPars
->
nTimeOut
);
Abc_Print
(
-
2
,
"
\t
-g : toggle using Glucose 3.0 [default = %s]
\n
"
,
pPars
->
fUseGlucose
?
"Glucose"
:
"Satoko"
);
//
Abc_Print( -2, "\t-e : toggle using variable eliminatation [default = %s]\n", pPars->fUseEliminate?"yes": "no" );
Abc_Print
(
-
2
,
"
\t
-e : toggle using variable eliminatation [default = %s]
\n
"
,
pPars
->
fUseEliminate
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-v : toggle printing verbose information [default = %s]
\n
"
,
pPars
->
fVerbose
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-w : toggle printing information about unfolding [default = %s]
\n
"
,
pPars
->
fVeryVerbose
?
"yes"
:
"no"
);
Abc_Print
(
-
2
,
"
\t
-h : print the command usage
\n
"
);
src/sat/glucose/AbcGlucose.cpp
View file @
4c0b78cf
...
...
@@ -54,19 +54,19 @@ extern "C" {
SeeAlso []
***********************************************************************/
Gluco
::
Solver
*
glucose_solver_start
()
Gluco
::
S
impS
olver
*
glucose_solver_start
()
{
S
olver
*
S
=
new
Solver
;
S
impSolver
*
S
=
new
Simp
Solver
;
S
->
setIncrementalMode
();
return
S
;
}
void
glucose_solver_stop
(
Gluco
::
Solver
*
S
)
void
glucose_solver_stop
(
Gluco
::
S
impS
olver
*
S
)
{
delete
S
;
}
int
glucose_solver_addclause
(
Gluco
::
Solver
*
S
,
int
*
plits
,
int
nlits
)
int
glucose_solver_addclause
(
Gluco
::
S
impS
olver
*
S
,
int
*
plits
,
int
nlits
)
{
vec
<
Lit
>
lits
;
for
(
int
i
=
0
;
i
<
nlits
;
i
++
,
plits
++
)
...
...
@@ -81,14 +81,14 @@ int glucose_solver_addclause(Gluco::Solver* S, int * plits, int nlits)
return
S
->
addClause
(
lits
);
// returns 0 if the problem is UNSAT
}
void
glucose_solver_setcallback
(
Gluco
::
Solver
*
S
,
void
*
pman
,
int
(
*
pfunc
)(
void
*
,
int
,
int
*
))
void
glucose_solver_setcallback
(
Gluco
::
S
impS
olver
*
S
,
void
*
pman
,
int
(
*
pfunc
)(
void
*
,
int
,
int
*
))
{
S
->
pCnfMan
=
pman
;
S
->
pCnfFunc
=
pfunc
;
S
->
nCallConfl
=
1000
;
}
int
glucose_solver_solve
(
Gluco
::
Solver
*
S
,
int
*
plits
,
int
nlits
)
int
glucose_solver_solve
(
Gluco
::
S
impS
olver
*
S
,
int
*
plits
,
int
nlits
)
{
vec
<
Lit
>
lits
;
for
(
int
i
=
0
;
i
<
nlits
;
i
++
,
plits
++
)
...
...
@@ -97,22 +97,22 @@ int glucose_solver_solve(Gluco::Solver* S, int * plits, int nlits)
p
.
x
=
*
plits
;
lits
.
push
(
p
);
}
Gluco
::
lbool
res
=
S
->
solveLimited
(
lits
);
Gluco
::
lbool
res
=
S
->
solveLimited
(
lits
,
0
);
return
(
res
==
l_True
?
1
:
res
==
l_False
?
-
1
:
0
);
}
int
glucose_solver_addvar
(
Gluco
::
Solver
*
S
)
int
glucose_solver_addvar
(
Gluco
::
S
impS
olver
*
S
)
{
S
->
newVar
();
return
S
->
nVars
()
-
1
;
}
int
glucose_solver_read_cex_varvalue
(
Gluco
::
Solver
*
S
,
int
ivar
)
int
glucose_solver_read_cex_varvalue
(
Gluco
::
S
impS
olver
*
S
,
int
ivar
)
{
return
S
->
model
[
ivar
]
==
l_True
;
}
void
glucose_solver_setstop
(
Gluco
::
Solver
*
S
,
int
*
pstop
)
void
glucose_solver_setstop
(
Gluco
::
S
impS
olver
*
S
,
int
*
pstop
)
{
S
->
pstop
=
pstop
;
}
...
...
@@ -155,33 +155,33 @@ bmcg_sat_solver * bmcg_sat_solver_start()
}
void
bmcg_sat_solver_stop
(
bmcg_sat_solver
*
s
)
{
glucose_solver_stop
((
Gluco
::
Solver
*
)
s
);
glucose_solver_stop
((
Gluco
::
S
impS
olver
*
)
s
);
}
int
bmcg_sat_solver_addclause
(
bmcg_sat_solver
*
s
,
int
*
plits
,
int
nlits
)
{
return
glucose_solver_addclause
((
Gluco
::
Solver
*
)
s
,
plits
,
nlits
);
return
glucose_solver_addclause
((
Gluco
::
S
impS
olver
*
)
s
,
plits
,
nlits
);
}
void
bmcg_sat_solver_setcallback
(
bmcg_sat_solver
*
s
,
void
*
pman
,
int
(
*
pfunc
)(
void
*
,
int
,
int
*
))
{
glucose_solver_setcallback
((
Gluco
::
Solver
*
)
s
,
pman
,
pfunc
);
glucose_solver_setcallback
((
Gluco
::
S
impS
olver
*
)
s
,
pman
,
pfunc
);
}
int
bmcg_sat_solver_solve
(
bmcg_sat_solver
*
s
,
int
*
plits
,
int
nlits
)
{
return
glucose_solver_solve
((
Gluco
::
Solver
*
)
s
,
plits
,
nlits
);
return
glucose_solver_solve
((
Gluco
::
S
impS
olver
*
)
s
,
plits
,
nlits
);
}
int
bmcg_sat_solver_final
(
bmcg_sat_solver
*
s
,
int
**
ppArray
)
{
*
ppArray
=
(
int
*
)(
Lit
*
)((
Gluco
::
Solver
*
)
s
)
->
conflict
;
return
((
Gluco
::
Solver
*
)
s
)
->
conflict
.
size
();
*
ppArray
=
(
int
*
)(
Lit
*
)((
Gluco
::
S
impS
olver
*
)
s
)
->
conflict
;
return
((
Gluco
::
S
impS
olver
*
)
s
)
->
conflict
.
size
();
}
int
bmcg_sat_solver_addvar
(
bmcg_sat_solver
*
s
)
{
return
glucose_solver_addvar
((
Gluco
::
Solver
*
)
s
);
return
glucose_solver_addvar
((
Gluco
::
S
impS
olver
*
)
s
);
}
void
bmcg_sat_solver_set_nvars
(
bmcg_sat_solver
*
s
,
int
nvars
)
...
...
@@ -193,61 +193,61 @@ void bmcg_sat_solver_set_nvars( bmcg_sat_solver* s, int nvars )
int
bmcg_sat_solver_eliminate
(
bmcg_sat_solver
*
s
,
int
turn_off_elim
)
{
return
1
;
//
return 1;
return
((
Gluco
::
SimpSolver
*
)
s
)
->
eliminate
(
turn_off_elim
!=
0
);
}
int
bmcg_sat_solver_var_is_elim
(
bmcg_sat_solver
*
s
,
int
v
)
{
return
0
;
//
return 0;
return
((
Gluco
::
SimpSolver
*
)
s
)
->
isEliminated
(
v
);
}
int
bmcg_sat_solver_read_cex_varvalue
(
bmcg_sat_solver
*
s
,
int
ivar
)
{
return
glucose_solver_read_cex_varvalue
((
Gluco
::
Solver
*
)
s
,
ivar
);
return
glucose_solver_read_cex_varvalue
((
Gluco
::
S
impS
olver
*
)
s
,
ivar
);
}
void
bmcg_sat_solver_set_stop
(
bmcg_sat_solver
*
s
,
int
*
pstop
)
{
glucose_solver_setstop
((
Gluco
::
Solver
*
)
s
,
pstop
);
glucose_solver_setstop
((
Gluco
::
S
impS
olver
*
)
s
,
pstop
);
}
abctime
bmcg_sat_solver_set_runtime_limit
(
bmcg_sat_solver
*
s
,
abctime
Limit
)
{
abctime
nRuntimeLimit
=
((
Gluco
::
Solver
*
)
s
)
->
nRuntimeLimit
;
((
Gluco
::
Solver
*
)
s
)
->
nRuntimeLimit
=
Limit
;
abctime
nRuntimeLimit
=
((
Gluco
::
S
impS
olver
*
)
s
)
->
nRuntimeLimit
;
((
Gluco
::
S
impS
olver
*
)
s
)
->
nRuntimeLimit
=
Limit
;
return
nRuntimeLimit
;
}
void
bmcg_sat_solver_set_conflict_budget
(
bmcg_sat_solver
*
s
,
int
Limit
)
{
if
(
Limit
>
0
)
((
Gluco
::
Solver
*
)
s
)
->
setConfBudget
(
(
int64_t
)
Limit
);
((
Gluco
::
S
impS
olver
*
)
s
)
->
setConfBudget
(
(
int64_t
)
Limit
);
else
((
Gluco
::
Solver
*
)
s
)
->
budgetOff
();
((
Gluco
::
S
impS
olver
*
)
s
)
->
budgetOff
();
}
int
bmcg_sat_solver_varnum
(
bmcg_sat_solver
*
s
)
{
return
((
Gluco
::
Solver
*
)
s
)
->
nVars
();
return
((
Gluco
::
S
impS
olver
*
)
s
)
->
nVars
();
}
int
bmcg_sat_solver_clausenum
(
bmcg_sat_solver
*
s
)
{
return
((
Gluco
::
Solver
*
)
s
)
->
nClauses
();
return
((
Gluco
::
S
impS
olver
*
)
s
)
->
nClauses
();
}
int
bmcg_sat_solver_learntnum
(
bmcg_sat_solver
*
s
)
{
return
((
Gluco
::
Solver
*
)
s
)
->
nLearnts
();
return
((
Gluco
::
S
impS
olver
*
)
s
)
->
nLearnts
();
}
int
bmcg_sat_solver_conflictnum
(
bmcg_sat_solver
*
s
)
{
return
((
Gluco
::
Solver
*
)
s
)
->
conflicts
;
return
((
Gluco
::
S
impS
olver
*
)
s
)
->
conflicts
;
}
int
bmcg_sat_solver_minimize_assumptions
(
bmcg_sat_solver
*
s
,
int
*
plits
,
int
nlits
)
{
vec
<
int
>*
array
=
&
((
Gluco
::
Solver
*
)
s
)
->
user_vec
;
vec
<
int
>*
array
=
&
((
Gluco
::
S
impS
olver
*
)
s
)
->
user_vec
;
int
i
,
nlitsL
,
nlitsR
,
nresL
,
nresR
,
status
;
if
(
nlits
==
1
)
{
...
...
src/sat/glucose/SimpSolver.h
View file @
4c0b78cf
...
...
@@ -167,7 +167,8 @@ class SimpSolver : public Solver {
// Implementation of inline methods:
inline
bool
SimpSolver
::
isEliminated
(
Var
v
)
const
{
return
eliminated
.
size
()
?
eliminated
[
v
]
!=
0
:
0
;
}
//inline bool SimpSolver::isEliminated (Var v) const { return eliminated[v]; }
inline
bool
SimpSolver
::
isEliminated
(
Var
v
)
const
{
return
eliminated
.
size
()
>
0
?
eliminated
[
v
]
!=
0
:
0
;
}
inline
void
SimpSolver
::
updateElimHeap
(
Var
v
)
{
assert
(
use_simplification
);
// if (!frozen[v] && !isEliminated(v) && value(v) == l_Undef)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment