Adding SMT Interpreters
[satune.git] / src / Interpreter / smtinterpreter.h
1 #ifndef SMTINTERPRETER_H
2 #define SMTINTERPRETER_H
3
4 #include "classlist.h"
5 #include "signatureenc.h"
6 #include "interpreter.h"
7 #include <iostream>
8 #include <fstream>
9
10 class SMTInterpreter: public Interpreter{
11 public:
12         SMTInterpreter(CSolver *solver);
13         virtual ValuedSignature *getBooleanSignature(uint id);
14         virtual ValuedSignature *getElementSignature(uint id, Signature *ssig);
15         virtual Signature *getSetSignature(uint id, Set *set);
16         virtual ~SMTInterpreter();
17 protected:
18         virtual void dumpFooter();
19         virtual void dumpHeader();
20         virtual void compileRunCommand(char * command , size_t size);
21         virtual int getResult();
22         virtual void dumpAllConstraints(Vector<char *> &facts);
23         virtual string negateConstraint(string constr);
24         virtual string encodeBooleanLogic( BooleanLogic *bl);
25         virtual string encodeBooleanVar( BooleanVar *bv);
26         void extractValue(char *idline, char *valueline);
27         virtual string processElementFunction(ElementFunction *element, ValuedSignature *signature);
28         virtual string operatorPredicateConstraint(CompOp op, ValuedSignature *elemSig1, ValuedSignature *elemSig2);
29 };
30
31 #endif