summaryrefslogtreecommitdiff
path: root/omegalib/omega_lib/include/omega/pres_quant.h
diff options
context:
space:
mode:
authorTuowen Zhao <ztuowen@gmail.com>2016-09-17 03:22:53 +0000
committerTuowen Zhao <ztuowen@gmail.com>2016-09-17 03:22:53 +0000
commit75ff98e4d65862ff5b36b533b4f6e3ea71ede1d5 (patch)
tree498ac06b4cf78568b807fafd2619856afff69c28 /omegalib/omega_lib/include/omega/pres_quant.h
parent29efa7b1a0d089e02a70f73f348f11878955287c (diff)
downloadchill-75ff98e4d65862ff5b36b533b4f6e3ea71ede1d5.tar.gz
chill-75ff98e4d65862ff5b36b533b4f6e3ea71ede1d5.tar.bz2
chill-75ff98e4d65862ff5b36b533b4f6e3ea71ede1d5.zip
cmake build
Diffstat (limited to 'omegalib/omega_lib/include/omega/pres_quant.h')
-rw-r--r--omegalib/omega_lib/include/omega/pres_quant.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/omegalib/omega_lib/include/omega/pres_quant.h b/omegalib/omega_lib/include/omega/pres_quant.h
new file mode 100644
index 0000000..98c30df
--- /dev/null
+++ b/omegalib/omega_lib/include/omega/pres_quant.h
@@ -0,0 +1,63 @@
+#if ! defined _pres_quant_h
+#define _pres_quant_h 1
+
+#include <omega/pres_decl.h>
+
+namespace omega {
+
+//
+// Presburger formula nodes for quantifiers
+//
+
+class F_Exists : public F_Declaration {
+public:
+ inline Node_Type node_type() {return Op_Exists;}
+ Variable_ID declare(Const_String s);
+ Variable_ID declare();
+ Variable_ID declare(Variable_ID v);
+ virtual void push_exists(Variable_ID_Tuple &S);
+
+protected:
+ friend class Formula;
+
+ F_Exists(Formula *, Rel_Body *);
+ F_Exists(Formula *, Rel_Body *, Variable_ID_Tuple &);
+
+private:
+ Formula *copy(Formula *parent, Rel_Body *reln);
+
+ virtual Conjunct *find_available_conjunct();
+ void print(FILE *output_file);
+ void prefix_print(FILE *output_file, int debug = 1);
+ void beautify();
+ void rearrange();
+ DNF* DNFize();
+};
+
+
+class F_Forall : public F_Declaration {
+public:
+ inline Node_Type node_type() {return Op_Forall;}
+ Variable_ID declare(Const_String s);
+ Variable_ID declare();
+ Variable_ID declare(Variable_ID v);
+
+protected:
+ friend class Formula;
+
+ F_Forall(Formula *, Rel_Body *);
+
+private:
+ Formula *copy(Formula *parent, Rel_Body *reln);
+
+ virtual Conjunct *find_available_conjunct();
+ void print(FILE *output_file);
+ void prefix_print(FILE *output_file, int debug = 1);
+ void beautify();
+ void rearrange();
+ DNF* DNFize();
+};
+
+} // namespace
+
+#endif