Adding a general function for encoding elements
[satune.git] / src / Backend / satencoder.h
1 #ifndef SATENCODER_H
2 #define SATENCODER_H
3
4 #include "classlist.h"
5 #include "structs.h"
6 #include "inc_solver.h"
7 #include "constraint.h"
8
9 struct SATEncoder {
10         uint varcount;
11         CNF * cnf;
12 };
13
14 SATEncoder * allocSATEncoder();
15 void deleteSATEncoder(SATEncoder *This);
16 void encodeAllSATEncoder(CSolver *csolver, SATEncoder *This);
17 Edge getNewVarSATEncoder(SATEncoder *This);
18 void getArrayNewVarsSATEncoder(SATEncoder* encoder, uint num, Edge*carray);
19 Edge encodeConstraintSATEncoder(SATEncoder *This, Boolean *constraint);
20 Edge encodeOrderSATEncoder(SATEncoder *This, BooleanOrder * constraint);
21 void createAllTotalOrderConstraintsSATEncoder(SATEncoder* This, Order* order);
22 Edge getOrderConstraint(HashTableBoolConst *table, OrderPair *pair);
23 Edge generateTransOrderConstraintSATEncoder(SATEncoder *This, Edge constIJ, Edge constJK, Edge constIK);
24 Edge encodeTotalOrderSATEncoder(SATEncoder *This, BooleanOrder * constraint);
25 Edge encodePartialOrderSATEncoder(SATEncoder *This, BooleanOrder * constraint);
26 Edge encodeVarSATEncoder(SATEncoder *This, BooleanVar * constraint);
27 Edge encodeLogicSATEncoder(SATEncoder *This, BooleanLogic * constraint);
28 Edge encodePredicateSATEncoder(SATEncoder * This, BooleanPredicate * constraint);
29 Edge encodeTablePredicateSATEncoder(SATEncoder * This, BooleanPredicate * constraint);
30 Edge encodeEnumTablePredicateSATEncoder(SATEncoder * This, BooleanPredicate * constraint);
31 Edge encodeOperatorPredicateSATEncoder(SATEncoder * This, BooleanPredicate * constraint);
32 Edge encodeEnumOperatorPredicateSATEncoder(SATEncoder * This, BooleanPredicate * constraint);
33
34 Edge getElementValueBinaryIndexConstraint(SATEncoder * This, Element* element, uint64_t value);
35 Edge getElementValueConstraint(SATEncoder* encoder, Element* This, uint64_t value);
36
37 Edge encodeElementSATEncoder(SATEncoder* encoder, Element *This);
38 Edge encodeFunctionElementSATEncoder(SATEncoder* encoder, ElementFunction *This);
39 Edge encodeEnumTableElemFunctionSATEncoder(SATEncoder* encoder, ElementFunction* This);
40 Edge encodeTableElementFunctionSATEncoder(SATEncoder* encoder, ElementFunction* This);
41 Edge encodeOperatorElementFunctionSATEncoder(SATEncoder* encoder,ElementFunction* This);
42 #endif