+/** This function tears down the solver and the entire AST */
+
+void deleteSolver(CSolver *this) {
+ deleteVectorBoolean(this->constraints);
+
+ uint size=getSizeVectorBoolean(this->allBooleans);
+ for(uint i=0;i<size;i++) {
+ deleteBoolean(getVectorBoolean(this->allBooleans, i));
+ }
+
+ deleteVectorBoolean(this->allBooleans);
+
+ size=getSizeVectorSet(this->allSets);
+ for(uint i=0;i<size;i++) {
+ deleteSet(getVectorSet(this->allSets, i));
+ }
+
+ deleteVectorSet(this->allSets);
+
+ size=getSizeVectorElement(this->allElements);
+ for(uint i=0;i<size;i++) {
+ deleteElement(getVectorElement(this->allElements, i));
+ }
+
+ deleteVectorElement(this->allElements);
+ ourfree(this);