Inter4ql  5.2
ModuleBelief.h
1 #ifndef __MODULE_BELIEF_H__
2 #define __MODULE_BELIEF_H__
3 
4 #include <vector>
5 #include <string>
6 
7 #include "Functions.h"
8 #include "ModuleGeneric.h"
9 #include "Types.h"
10 #include "Constraints.h"
11 
12 namespace Inter4ql {
13 
14  class Rule;
15  class Domain;
16  class Result;
17  class Relation;
18  class Fact;
19  class BooleanExpression;
22  class ModuleBelief : public ModuleGeneric {
23  public:
30  ModuleBelief(std::string _name,
31  Constraints* _constraints,
32  std::vector<std::string>* _members);
36  ~ModuleBelief();
37 
38  Relation *get_relation(std::string s) const;
39  virtual std::vector<Domain*> *get_domains() const;
40  std::vector<std::string> *get_members() const;
41  std::string get_name() const;
42  std::string print();
43  module_type::type get_module_type() const;
44  variable_type::type get_domain_type(std::string name);
45  void add_domain(Domain *d);
46  void add_relation(Relation *r);
47  void reason();
48  Result ask_for_result(Fact * term) const;
49  Result evaluate_expression_bf(Expression * expr) const override;
50  Result evaluate_expression(Expression * expr) const override;
51 
56  void set_modules(std::vector<ModuleGeneric *> *_modules) override;
61  Constraints* get_constraints() const override { return constraints; };
66  void set_disable_constraints(bool value) const override { disable_constraints = value; };
73  bool check_constraints_local(bool check_rigid, bool check_flexible) const override;
78  std::vector<ModuleGeneric*>* get_member_modules();
83  bool constraints_violated() override;
84  private:
85  bool check_single_valuation(std::vector<QuantifierEntry*>* quantifiers, int index, Result* r,
86  std::map<std::string, Value*>* valuation, std::vector<Inter4ql::Value*>* expected) const;
87 
88  std::vector<std::string> *members;
89  std::vector<ModuleGeneric *> *member_modules;
90  std::string name;
91  Constraints* constraints;
92  std::vector<Domain*> *domains;
93  std::vector<ModuleGeneric *> *modules;
94  std::vector<Fact*> *facts;
95 
96  mutable bool disable_constraints;
97  };
98 }
99 
100 #endif /* __MODULE_BELIEF_H__ */
101 
bool constraints_violated() override
checks whether constraints are violated
Definition: ModuleBelief.cc:291
std::vector< ModuleGeneric * > * get_member_modules()
gets a list of member module objects
Definition: ModuleBelief.cc:191
class that implements a fact
Definition: Fact.h:14
bool check_constraints_local(bool check_rigid, bool check_flexible) const override
evaluates constraints locally, in current module
Definition: ModuleBelief.cc:179
ModuleBelief(std::string _name, Constraints *_constraints, std::vector< std::string > *_members)
constructor
Definition: ModuleBelief.cc:21
void reason()
performs reasoning
Definition: ModuleBelief.cc:145
Definition: Expression.h:10
Result evaluate_expression_bf(Expression *expr) const override
provides bel-free valuations matching given Expression
Definition: ModuleBelief.cc:196
Result ask_for_result(Fact *term) const
provides valuations matching given Fact
Definition: ModuleBelief.cc:150
Definition: Result.h:16
Definition: Application.cc:37
std::string get_name() const
getter for a name of module
Definition: ModuleBelief.cc:100
Domain class - class that points to a data type.
Definition: Domain.h:12
Generic class of module (only virtual methods)
Definition: ModuleGeneric.h:21
Relation * get_relation(std::string s) const
getter for a relation
Definition: ModuleBelief.cc:51
void set_modules(std::vector< ModuleGeneric *> *_modules) override
setter for modules needed in this module
Definition: ModuleBelief.cc:249
virtual std::vector< Domain * > * get_domains() const
getter for domains
Definition: ModuleBelief.cc:96
~ModuleBelief()
destructor
Definition: ModuleBelief.cc:38
Constraints * get_constraints() const override
getter for constraints
Definition: ModuleBelief.h:61
module_type::type get_module_type() const
getter for module type
Definition: ModuleBelief.cc:133
void set_disable_constraints(bool value) const override
allows for disabling constraints check
Definition: ModuleBelief.h:66
Output class handles standard output of interpreter.
Definition: Constraints.h:68
std::string print()
function that returns string with module information
Definition: ModuleBelief.cc:104
type
Enumeration type for types of values.
Definition: Types.h:26
Result evaluate_expression(Expression *expr) const override
provides valuations matching given Expression
Definition: ModuleBelief.cc:222
Implementation of ModuleGeneric for modules with reasoning.
Definition: ModuleBelief.h:22
class that handles relation instance inside modules
Definition: Relation.h:13