ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
satoko.h
Go to the documentation of this file.
1//===--- satoko.h -----------------------------------------------------------===
2//
3// satoko: Satisfiability solver
4//
5// This file is distributed under the BSD 2-Clause License.
6// See LICENSE for details.
7//
8//===------------------------------------------------------------------------===
9#ifndef satoko__satoko_h
10#define satoko__satoko_h
11
12#include "types.h"
15
17enum {
20};
21
22enum {
23 SATOKO_UNDEC = 0, /* Undecided */
26};
27
28enum {
32};
33
34struct solver_t_;
35typedef struct solver_t_ satoko_t;
36
39 /* Limits */
40 long conf_limit; /* Limit on the n.of conflicts */
41 long prop_limit; /* Limit on the n.of propagations */
42
43 /* Constants used for restart heuristic */
44 double f_rst; /* Used to force a restart */
45 double b_rst; /* Used to block a restart */
46 unsigned fst_block_rst; /* Lower bound n.of conflicts for start blocking restarts */
47 unsigned sz_lbd_bqueue; /* Size of the moving avarege queue for LBD (force restart) */
48 unsigned sz_trail_bqueue; /* Size of the moving avarege queue for Trail size (block restart) */
49
50 /* Constants used for clause database reduction heuristic */
51 unsigned n_conf_fst_reduce; /* N.of conflicts before first clause databese reduction */
52 unsigned inc_reduce; /* Increment to reduce */
53 unsigned inc_special_reduce; /* Special increment to reduce */
55 float learnt_ratio; /* Percentage of learned clauses to remove */
56
57 /* VSIDS heuristic */
58 double var_decay;
62
63
64 /* Binary resolution */
68 char verbose;
70};
71
87
88
89//===------------------------------------------------------------------------===
90extern satoko_t *satoko_create(void);
91extern void satoko_destroy(satoko_t *);
92extern void satoko_reset(satoko_t *);
93
96extern int satoko_parse_dimacs(char *, satoko_t **);
97extern void satoko_setnvars(satoko_t *, int);
98extern int satoko_add_variable(satoko_t *, char);
99extern int satoko_add_clause(satoko_t *, int *, int);
100extern void satoko_assump_push(satoko_t *s, int);
101extern void satoko_assump_pop(satoko_t *s);
102extern int satoko_simplify(satoko_t *);
103extern int satoko_solve(satoko_t *);
104extern int satoko_solve_assumptions(satoko_t *s, int * plits, int nlits);
105extern int satoko_solve_assumptions_limit(satoko_t *s, int * plits, int nlits, int nconflim);
106extern int satoko_minimize_assumptions(satoko_t *s, int * plits, int nlits, int nconflim);
107extern void satoko_mark_cone(satoko_t *, int *, int);
108extern void satoko_unmark_cone(satoko_t *, int *, int);
109
110extern void satoko_rollback(satoko_t *);
111extern void satoko_bookmark(satoko_t *);
112extern void satoko_unbookmark(satoko_t *);
113/* If problem is unsatisfiable under assumptions, this function is used to
114 * obtain the final conflict clause expressed in the assumptions.
115 * - It receives as inputs the solver and a pointer to an array where clause
116 * is stored. The memory for the clause is managed by the solver.
117 * - The return value is either the size of the array or -1 in case the final
118 * conflict cluase was not generated.
119 */
120extern int satoko_final_conflict(satoko_t *, int **);
121
122/* Procedure to dump a DIMACS file.
123 * - It receives as input the solver, a file name string and two integers.
124 * - If the file name string is NULL the solver will dump in stdout.
125 * - The first argument can be either 0 or 1 and is an option to dump learnt
126 * clauses. (value 1 will dump them).
127 * - The seccond argument can be either 0 or 1 and is an option to use 0 as a
128 * variable ID or not. Keep in mind that if 0 is used as an ID the generated
129 * file will not be a DIMACS. (value 1 will use 0 as ID).
130 */
131extern void satoko_write_dimacs(satoko_t *, char *, int, int);
134
135extern int satoko_varnum(satoko_t *);
136extern int satoko_clausenum(satoko_t *);
137extern int satoko_learntnum(satoko_t *);
138extern int satoko_conflictnum(satoko_t *);
139extern void satoko_set_stop(satoko_t *, int *);
140extern void satoko_set_stop_func(satoko_t *s, int (*fnct)(int));
141extern void satoko_set_runid(satoko_t *, int);
142extern int satoko_read_cex_varvalue(satoko_t *, int);
144extern char satoko_var_polarity(satoko_t *, unsigned);
145
146
148#endif /* satoko__satoko_h */
ABC_INT64_T abctime
Definition abc_global.h:332
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
int satoko_solve(satoko_t *)
Definition solver_api.c:314
@ SATOKO_UNSAT
Definition satoko.h:25
@ SATOKO_SAT
Definition satoko.h:24
@ SATOKO_UNDEC
Definition satoko.h:23
char satoko_var_polarity(satoko_t *, unsigned)
Definition solver_api.c:672
int satoko_varnum(satoko_t *)
Definition solver_api.c:625
void satoko_set_stop_func(satoko_t *s, int(*fnct)(int))
Definition solver_api.c:650
@ SATOKO_LIT_FALSE
Definition satoko.h:29
@ SATOKO_LIT_TRUE
Definition satoko.h:30
@ SATOKO_VAR_UNASSING
Definition satoko.h:31
void satoko_bookmark(satoko_t *)
Definition solver_api.c:443
void satoko_mark_cone(satoko_t *, int *, int)
Definition solver_api.c:562
int satoko_add_variable(satoko_t *, char)
Definition solver_api.c:237
void satoko_setnvars(satoko_t *, int)
Definition solver_api.c:230
void satoko_rollback(satoko_t *)
Definition solver_api.c:508
int satoko_solve_assumptions(satoko_t *s, int *plits, int nlits)
Definition solver_api.c:347
int satoko_conflictnum(satoko_t *)
Definition solver_api.c:640
struct satoko_opts satoko_opts_t
Definition satoko.h:37
int satoko_final_conflict(satoko_t *, int **)
Definition solver_api.c:427
int satoko_minimize_assumptions(satoko_t *s, int *plits, int nlits, int nconflim)
Definition solver_api.c:372
abctime satoko_set_runtime_limit(satoko_t *, abctime)
Definition solver_api.c:665
int satoko_solve_assumptions_limit(satoko_t *s, int *plits, int nlits, int nconflim)
Definition solver_api.c:364
void satoko_set_runid(satoko_t *, int)
Definition solver_api.c:655
int satoko_parse_dimacs(char *, satoko_t **)
Definition cnf_reader.c:108
void satoko_default_opts(satoko_opts_t *)
Definition solver_api.c:161
struct satoko_stats satoko_stats_t
Definition satoko.h:72
int satoko_add_clause(satoko_t *, int *, int)
Definition solver_api.c:255
struct solver_t_ satoko_t
Definition satoko.h:35
void satoko_unmark_cone(satoko_t *, int *, int)
Definition solver_api.c:575
int satoko_clausenum(satoko_t *)
Definition solver_api.c:630
void satoko_assump_push(satoko_t *s, int)
Definition solver_api.c:298
int satoko_learntnum(satoko_t *)
Definition solver_api.c:635
void satoko_write_dimacs(satoko_t *, char *, int, int)
Definition solver_api.c:583
void satoko_reset(satoko_t *)
Definition solver_api.c:469
int satoko_read_cex_varvalue(satoko_t *, int)
Definition solver_api.c:660
int satoko_simplify(satoko_t *)
Definition solver_api.c:202
void satoko_assump_pop(satoko_t *s)
Definition solver_api.c:306
void satoko_destroy(satoko_t *)
Definition solver_api.c:132
satoko_t * satoko_create(void)
Definition solver_api.c:88
void satoko_unbookmark(satoko_t *)
Definition solver_api.c:456
void satoko_configure(satoko_t *, satoko_opts_t *)
Definition solver_api.c:196
@ SATOKO_OK
Definition satoko.h:19
@ SATOKO_ERR
Definition satoko.h:18
void satoko_set_stop(satoko_t *, int *)
Definition solver_api.c:645
satoko_opts_t * satoko_options(satoko_t *)
Definition solver_api.c:438
satoko_stats_t * satoko_stats(satoko_t *)
Definition solver_api.c:433
char no_simplify
Definition satoko.h:69
unsigned clause_min_lbd_bin_resol
Definition satoko.h:66
double f_rst
Definition satoko.h:44
long prop_limit
Definition satoko.h:41
float garbage_max_ratio
Definition satoko.h:67
act_t var_act_limit
Definition satoko.h:61
double var_decay
Definition satoko.h:58
unsigned sz_lbd_bqueue
Definition satoko.h:47
unsigned fst_block_rst
Definition satoko.h:46
unsigned var_act_rescale
Definition satoko.h:60
unsigned clause_max_sz_bin_resol
Definition satoko.h:65
unsigned inc_reduce
Definition satoko.h:52
float clause_decay
Definition satoko.h:59
unsigned lbd_freeze_clause
Definition satoko.h:54
unsigned sz_trail_bqueue
Definition satoko.h:48
double b_rst
Definition satoko.h:45
unsigned inc_special_reduce
Definition satoko.h:53
char verbose
Definition satoko.h:68
long conf_limit
Definition satoko.h:40
float learnt_ratio
Definition satoko.h:55
unsigned n_conf_fst_reduce
Definition satoko.h:51
long n_inspects
Definition satoko.h:80
unsigned n_starts
Definition satoko.h:74
long n_conflicts
Definition satoko.h:81
long n_original_lits
Definition satoko.h:84
long n_conflicts_all
Definition satoko.h:82
long n_learnt_lits
Definition satoko.h:85
long n_decisions
Definition satoko.h:77
long n_propagations_all
Definition satoko.h:79
long n_propagations
Definition satoko.h:78
unsigned n_reduce_db
Definition satoko.h:75
sdbl_t act_t
Definition types.h:23