ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
msat.h
Go to the documentation of this file.
1
20
21#ifndef ABC__sat__msat__msat_h
22#define ABC__sat__msat__msat_h
23
24
28
32
33
34
36
37
41
43
44// the vector of intergers and of clauses
47typedef struct Msat_VarHeap_t_ Msat_VarHeap_t;
48
49// the return value of the solver
50typedef enum { MSAT_FALSE = -1, MSAT_UNKNOWN = 0, MSAT_TRUE = 1 } Msat_Type_t;
51
52// representation of variables and literals
53// the literal (l) is the variable (v) and the sign (s)
54// s = 0 the variable is positive
55// s = 1 the variable is negative
56#define MSAT_VAR2LIT(v,s) (2*(v)+(s))
57#define MSAT_LITNOT(l) ((l)^1)
58#define MSAT_LITSIGN(l) ((l)&1)
59#define MSAT_LIT2VAR(l) ((l)>>1)
60
64
68
72
73/*=== satRead.c ============================================================*/
74extern int Msat_SolverParseDimacs( FILE * pFile, Msat_Solver_t ** p, int fVerbose );
75/*=== satSolver.c ===========================================================*/
76// adding vars, clauses, simplifying the database, and solving
77extern int Msat_SolverAddVar( Msat_Solver_t * p, int Level );
78extern int Msat_SolverAddClause( Msat_Solver_t * p, Msat_IntVec_t * pLits );
80extern int Msat_SolverSolve( Msat_Solver_t * p, Msat_IntVec_t * pVecAssumps, int nBackTrackLimit, int nTimeLimit );
81// printing stats, assignments, and clauses
85extern void Msat_SolverWriteDimacs( Msat_Solver_t * p, char * pFileName );
86// access to the solver internal data
95extern void Msat_SolverSetVerbosity( Msat_Solver_t * p, int fVerbose );
96extern void Msat_SolverSetProofWriting( Msat_Solver_t * p, int fProof );
101extern float * Msat_SolverReadFactors( Msat_Solver_t * p );
102// returns the solution after incremental solving
108/*=== satSolverSearch.c ===========================================================*/
111/*=== satSolverApi.c ===========================================================*/
112// allocation, cleaning, and freeing the solver
113extern Msat_Solver_t * Msat_SolverAlloc( int nVars, double dClaInc, double dClaDecay, double dVarInc, double dVarDecay, int fVerbose );
114extern void Msat_SolverResize( Msat_Solver_t * pMan, int nVarsAlloc );
115extern void Msat_SolverClean( Msat_Solver_t * p, int nVars );
116extern void Msat_SolverPrepare( Msat_Solver_t * pSat, Msat_IntVec_t * vVars );
117extern void Msat_SolverFree( Msat_Solver_t * p );
118/*=== satVec.c ===========================================================*/
119extern Msat_IntVec_t * Msat_IntVecAlloc( int nCap );
120extern Msat_IntVec_t * Msat_IntVecAllocArray( int * pArray, int nSize );
121extern Msat_IntVec_t * Msat_IntVecAllocArrayCopy( int * pArray, int nSize );
124extern void Msat_IntVecFree( Msat_IntVec_t * p );
125extern void Msat_IntVecFill( Msat_IntVec_t * p, int nSize, int Entry );
126extern int * Msat_IntVecReleaseArray( Msat_IntVec_t * p );
127extern int * Msat_IntVecReadArray( Msat_IntVec_t * p );
128extern int Msat_IntVecReadSize( Msat_IntVec_t * p );
129extern int Msat_IntVecReadEntry( Msat_IntVec_t * p, int i );
131extern void Msat_IntVecWriteEntry( Msat_IntVec_t * p, int i, int Entry );
132extern void Msat_IntVecGrow( Msat_IntVec_t * p, int nCapMin );
133extern void Msat_IntVecShrink( Msat_IntVec_t * p, int nSizeNew );
134extern void Msat_IntVecClear( Msat_IntVec_t * p );
135extern void Msat_IntVecPush( Msat_IntVec_t * p, int Entry );
136extern int Msat_IntVecPushUnique( Msat_IntVec_t * p, int Entry );
137extern void Msat_IntVecPushUniqueOrder( Msat_IntVec_t * p, int Entry, int fIncrease );
138extern int Msat_IntVecPop( Msat_IntVec_t * p );
139extern void Msat_IntVecSort( Msat_IntVec_t * p, int fReverse );
140/*=== satHeap.c ===========================================================*/
142extern void Msat_VarHeapSetActivity( Msat_VarHeap_t * p, double * pActivity );
143extern void Msat_VarHeapStart( Msat_VarHeap_t * p, int * pVars, int nVars, int nVarsAlloc );
144extern void Msat_VarHeapGrow( Msat_VarHeap_t * p, int nSize );
146extern void Msat_VarHeapPrint( FILE * pFile, Msat_VarHeap_t * p );
148extern void Msat_VarHeapCheckOne( Msat_VarHeap_t * p, int iVar );
149extern int Msat_VarHeapContainsVar( Msat_VarHeap_t * p, int iVar );
150extern void Msat_VarHeapInsert( Msat_VarHeap_t * p, int iVar );
151extern void Msat_VarHeapUpdate( Msat_VarHeap_t * p, int iVar );
152extern void Msat_VarHeapDelete( Msat_VarHeap_t * p, int iVar );
154extern int Msat_VarHeapCountNodes( Msat_VarHeap_t * p, double WeightLimit );
157
158
159
161
162
163
164#endif
165
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
Cube * p
Definition exorList.c:222
int Var
Definition exorList.c:228
void Msat_SolverMarkClausesStart(Msat_Solver_t *p)
void Msat_IntVecGrow(Msat_IntVec_t *p, int nCapMin)
Definition msatVec.c:299
void Msat_SolverSetVarTypeA(Msat_Solver_t *p, int Var)
int Msat_SolverAddClause(Msat_Solver_t *p, Msat_IntVec_t *pLits)
void Msat_SolverPrintAssignment(Msat_Solver_t *p)
FUNCTION DEFINITIONS ///.
void Msat_SolverMarkLastClauseTypeA(Msat_Solver_t *p)
Msat_IntVec_t * Msat_IntVecAllocArray(int *pArray, int nSize)
Definition msatVec.c:71
Msat_ClauseVec_t * Msat_SolverReadAdjacents(Msat_Solver_t *p)
struct Msat_VarHeap_t_ Msat_VarHeap_t
Definition msat.h:47
void Msat_SolverSetVerbosity(Msat_Solver_t *p, int fVerbose)
void Msat_VarHeapGrow(Msat_VarHeap_t *p, int nSize)
void Msat_SolverFree(Msat_Solver_t *p)
int Msat_SolverReadClauseNum(Msat_Solver_t *p)
int * Msat_SolverReadAssignsArray(Msat_Solver_t *p)
int Msat_VarHeapCountNodes(Msat_VarHeap_t *p, double WeightLimit)
void Msat_SolverSetVarMap(Msat_Solver_t *p, Msat_IntVec_t *vVarMap)
struct Msat_ClauseVec_t_ Msat_ClauseVec_t
Definition msat.h:46
int Msat_VarHeapContainsVar(Msat_VarHeap_t *p, int iVar)
void Msat_SolverPrintStats(Msat_Solver_t *p)
int Msat_SolverSolve(Msat_Solver_t *p, Msat_IntVec_t *pVecAssumps, int nBackTrackLimit, int nTimeLimit)
int Msat_IntVecPop(Msat_IntVec_t *p)
Definition msatVec.c:425
Msat_VarHeap_t * Msat_VarHeapAlloc()
void Msat_VarHeapCheck(Msat_VarHeap_t *p)
struct Msat_IntVec_t_ Msat_IntVec_t
Definition msat.h:45
Msat_IntVec_t * Msat_IntVecAllocArrayCopy(int *pArray, int nSize)
Definition msatVec.c:92
int Msat_SolverReadSolutions(Msat_Solver_t *p)
void Msat_SolverPrintClauses(Msat_Solver_t *p)
Msat_IntVec_t * Msat_SolverReadConeVars(Msat_Solver_t *p)
int Msat_SolverReadVarNum(Msat_Solver_t *p)
FUNCTION DEFINITIONS ///.
int Msat_IntVecPushUnique(Msat_IntVec_t *p, int Entry)
Definition msatVec.c:374
void Msat_IntVecPushUniqueOrder(Msat_IntVec_t *p, int Entry, int fIncrease)
Definition msatVec.c:395
float * Msat_SolverReadFactors(Msat_Solver_t *p)
int Msat_SolverReadInspects(Msat_Solver_t *p)
Msat_IntVec_t * Msat_SolverReadVarsUsed(Msat_Solver_t *p)
void Msat_VarHeapDelete(Msat_VarHeap_t *p, int iVar)
int Msat_IntVecReadEntryLast(Msat_IntVec_t *p)
Definition msatVec.c:283
int Msat_VarHeapReadMax(Msat_VarHeap_t *p)
typedefABC_NAMESPACE_HEADER_START struct Msat_Solver_t_ Msat_Solver_t
INCLUDES ///.
Definition msat.h:42
void Msat_VarHeapCheckOne(Msat_VarHeap_t *p, int iVar)
void Msat_SolverResize(Msat_Solver_t *pMan, int nVarsAlloc)
int Msat_SolverSimplifyDB(Msat_Solver_t *p)
int Msat_IntVecReadEntry(Msat_IntVec_t *p, int i)
Definition msatVec.c:249
void Msat_IntVecSort(Msat_IntVec_t *p, int fReverse)
Definition msatVec.c:442
Msat_Type_t
Definition msat.h:50
@ MSAT_TRUE
Definition msat.h:50
@ MSAT_FALSE
Definition msat.h:50
@ MSAT_UNKNOWN
Definition msat.h:50
Msat_IntVec_t * Msat_IntVecAlloc(int nCap)
FUNCTION DEFINITIONS ///.
Definition msatVec.c:48
int Msat_SolverParseDimacs(FILE *pFile, Msat_Solver_t **p, int fVerbose)
GLOBAL VARIABLES ///.
Definition msatRead.c:258
void Msat_SolverRemoveMarked(Msat_Solver_t *p)
int * Msat_SolverReadModelArray(Msat_Solver_t *p)
Msat_Solver_t * Msat_SolverAlloc(int nVars, double dClaInc, double dClaDecay, double dVarInc, double dVarDecay, int fVerbose)
int Msat_SolverReadBackTracks(Msat_Solver_t *p)
void Msat_VarHeapStart(Msat_VarHeap_t *p, int *pVars, int nVars, int nVarsAlloc)
Msat_IntVec_t * Msat_IntVecDup(Msat_IntVec_t *pVec)
Definition msatVec.c:114
Msat_IntVec_t * Msat_IntVecDupArray(Msat_IntVec_t *pVec)
Definition msatVec.c:136
int * Msat_IntVecReleaseArray(Msat_IntVec_t *p)
Definition msatVec.c:197
void Msat_VarHeapPrint(FILE *pFile, Msat_VarHeap_t *p)
double Msat_VarHeapReadMaxWeight(Msat_VarHeap_t *p)
void Msat_IntVecFill(Msat_IntVec_t *p, int nSize, int Entry)
Definition msatVec.c:177
void Msat_IntVecShrink(Msat_IntVec_t *p, int nSizeNew)
Definition msatVec.c:318
void Msat_VarHeapUpdate(Msat_VarHeap_t *p, int iVar)
void Msat_SolverRemoveLearned(Msat_Solver_t *p)
void Msat_SolverSetProofWriting(Msat_Solver_t *p, int fProof)
void Msat_VarHeapInsert(Msat_VarHeap_t *p, int iVar)
void Msat_SolverClean(Msat_Solver_t *p, int nVars)
void Msat_VarHeapStop(Msat_VarHeap_t *p)
int Msat_VarHeapGetMax(Msat_VarHeap_t *p)
int Msat_SolverReadVarAllocNum(Msat_Solver_t *p)
void Msat_IntVecFree(Msat_IntVec_t *p)
Definition msatVec.c:160
void Msat_IntVecWriteEntry(Msat_IntVec_t *p, int i, int Entry)
Definition msatVec.c:266
int Msat_IntVecReadSize(Msat_IntVec_t *p)
Definition msatVec.c:233
void Msat_VarHeapSetActivity(Msat_VarHeap_t *p, double *pActivity)
void Msat_IntVecClear(Msat_IntVec_t *p)
Definition msatVec.c:335
void Msat_SolverPrepare(Msat_Solver_t *pSat, Msat_IntVec_t *vVars)
void Msat_IntVecPush(Msat_IntVec_t *p, int Entry)
Definition msatVec.c:351
int Msat_SolverAddVar(Msat_Solver_t *p, int Level)
DECLARATIONS ///.
unsigned Msat_SolverReadTruth(Msat_Solver_t *p)
int * Msat_SolverReadSolutionsArray(Msat_Solver_t *p)
void Msat_SolverWriteDimacs(Msat_Solver_t *p, char *pFileName)
int * Msat_IntVecReadArray(Msat_IntVec_t *p)
Definition msatVec.c:217