8351ae0f632af276b3338913370665e06993225d
[satune.git] / src / ASTTransform / decomposeordertransform.h
1 /*
2  * File:   ordertransform.h
3  * Author: hamed
4  *
5  * Created on August 28, 2017, 10:35 AM
6  */
7
8 #ifndef ORDERTRANSFORM_H
9 #define ORDERTRANSFORM_H
10 #include "classlist.h"
11 #include "transform.h"
12
13
14 class DecomposeOrderTransform : public Transform {
15 public:
16         DecomposeOrderTransform(CSolver *_solver);
17         ~DecomposeOrderTransform();
18         void doTransform();
19
20         CMEMALLOC;
21 private:
22         bool isMustBeTrueNode(OrderNode *node);
23         void bypassMustBeTrueNode(OrderGraph *graph, OrderNode *node, HashsetOrderEdge *edgesRemoved);
24         void decomposeOrder(Order *currOrder, OrderGraph *currGraph, HashsetOrderEdge *edgesRemoved);
25         void removeMustBeTrueNodes(OrderGraph *graph, HashsetOrderEdge *edgesRemoved);
26 };
27
28
29
30 #endif/* ORDERTRANSFORM_H */
31