00001
00002
00003
00004
00005
00006
00007
00008 #ifndef ASSUME_H_
00009 #define ASSUME_H_
00010
00011 #include "Instruction.h"
00012
00013 #define ASSUME_ID "assume"
00014
00015 namespace sail {
00016
00021 class Assume: public Instruction {
00022 friend class boost::serialization::access;
00023
00024 template<class Archive>
00025 void serialize(Archive & ar, const unsigned int version)
00026 {
00027 ar & boost::serialization::base_object<sail::Instruction>(*this);
00028 ar & assume_predicate;
00029 }
00030
00031 private:
00032 Symbol* assume_predicate;
00033
00034 public:
00035 Assume();
00036 Assume(Symbol* arg, il::node* original, int line);
00037 virtual ~Assume();
00038 virtual string to_string() const;
00039 virtual string to_string(bool pretty_print) const;
00040 il::node* get_original_node();
00041
00042 virtual bool is_save_instruction();
00043
00044 bool is_synthetic();
00045
00046 Symbol* get_predicate();
00047
00048 virtual bool is_removable();
00049 };
00050
00051 }
00052
00053 #endif