-/** When everything is done, the client calls this function and then csolver starts to encode*/
-void startEncoding(CSolver*);
+ /** This is a vector of all boolean structs that we have allocated. */
+ Vector<Boolean *> allBooleans;
+
+ /** This is a vector of all set structs that we have allocated. */
+ Vector<Set *> allSets;
+
+ /** This is a vector of all element structs that we have allocated. */
+ Vector<Element *> allElements;
+
+ /** This is a vector of all predicate structs that we have allocated. */
+ Vector<Predicate *> allPredicates;
+
+ /** This is a vector of all table structs that we have allocated. */
+ Vector<Table *> allTables;
+
+ /** This is a vector of all order structs that we have allocated. */
+ Vector<Order *> allOrders;
+
+ /** This is a vector of all function structs that we have allocated. */
+ Vector<Function *> allFunctions;
+
+ Boolean * boolTrue;
+ Boolean * boolFalse;
+
+ /** These two tables are used for deduplicating entries. */
+ BooleanMatchMap boolMap;
+ ElementMatchMap elemMap;
+
+ SATEncoder *satEncoder;
+ bool unsat;
+ Tuner *tuner;
+
+ long long elapsedTime;
+};