ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
clause.h
Go to the documentation of this file.
1//===--- clause.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__clause_h
10#define satoko__clause_h
11
12#include "types.h"
13
16
17struct clause {
18 unsigned f_learnt : 1;
19 unsigned f_mark : 1;
20 unsigned f_reallocd : 1;
21 unsigned f_deletable : 1;
22 unsigned lbd : 28;
23 unsigned size;
24 union {
25 unsigned lit;
27 } data[0];
28};
29
30//===------------------------------------------------------------------------===
31// Clause API
32//===------------------------------------------------------------------------===
33static inline int clause_compare(const void *p1, const void *p2)
34{
35 const struct clause *c1 = (const struct clause *)p1;
36 const struct clause *c2 = (const struct clause *)p2;
37
38 if (c1->size > 2 && c2->size == 2)
39 return 1;
40 if (c1->size == 2 && c2->size > 2)
41 return 0;
42 if (c1->size == 2 && c2->size == 2)
43 return 0;
44
45 if (c1->lbd > c2->lbd)
46 return 1;
47 if (c1->lbd < c2->lbd)
48 return 0;
49
50 return c1->data[c1->size].act < c2->data[c2->size].act;
51}
52
53static inline void clause_print(struct clause *clause)
54{
55 unsigned i;
56 printf("{ ");
57 for (i = 0; i < clause->size; i++)
58 printf("%u ", clause->data[i].lit);
59 printf("}\n");
60}
61
62static inline void clause_dump(FILE *file, struct clause *clause, int no_zero_var)
63{
64 unsigned i;
65 for (i = 0; i < clause->size; i++) {
66 int var = (clause->data[i].lit >> 1);
67 char pol = (clause->data[i].lit & 1);
68 fprintf(file, "%d ", pol ? -(var + no_zero_var) : (var + no_zero_var));
69 }
70 if (no_zero_var)
71 fprintf(file, "0\n");
72 else
73 fprintf(file, "\n");
74}
75
77#endif /* satoko__clause_h */
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
unsigned short var
Definition giaNewBdd.h:35
unsigned f_learnt
Definition clause.h:18
union clause::@075032140136325172206014200035176200302203305006 data[0]
unsigned f_mark
Definition clause.h:19
clause_act_t act
Definition clause.h:26
unsigned lbd
Definition clause.h:22
unsigned f_reallocd
Definition clause.h:20
unsigned f_deletable
Definition clause.h:21
unsigned size
Definition clause.h:37
unsigned lit
Definition clause.h:25
Definition file.h:23
unsigned clause_act_t
Definition types.h:36