DiaDes  0.1
DIAgnosis of Discrete-Event System
BddModel.hh
Go to the documentation of this file.
1 #ifndef __DIADES__SDMDL__BDDMODEL__HH
2 #define __DIADES__SDMDL__BDDMODEL__HH
3 
14 #include <diades/automata/Event.hh>
15 #include <diades/sdmdl/Formula.hh>
17 
18 
19 
20 namespace Diades
21 {
22  namespace Sdmdl
23  {
24 
27 
32  class BddModel
33  {
34 
35 
36  public:
37  static string typeName() { return "Diades::Sdmdl::BddModel"; }
40  typedef vector<BddComponent> BddComponentVector;
43  private:
45  BddComponentVector _bddComponents;
48  VariableVector _stateVariables;
49  VariableVector _nextStateVariables;
51  VariableVector _varSet;
52  FormulaVector _observables;
53  FormulaVector _isObs;
54  FormulaVector _faults;
55  FormulaVector _isFault;
56  FormulaVector _setOfEvents;
57  FormulaVector _events;
58  vector< vector<size_t> > _supports;
59  vector< vector<bool> > _booleanSupports;
60  mutable FormulaVector _transitions;
64  public:
65 
74  BddModel(const SynchronisationRules & model,
75  const set<Event> & observable,
76  const set<Event> & faults);
77 
78 
83  ~BddModel();
84 
85 
93  {
94  return *_formulas;
95  }
96 
104  const BddComponent & getComponent(BddComponentVector::size_type index) const
105  {
106  require(Exception,index < _bddComponents.size(),
107  Diades::Utils::Msg("BddComponent::getComponent, out-of-range index '%1% >= %2%'") % index % _bddComponents.size());
108  return _bddComponents[index];
109  }
110 
111 
119  BddComponent & getComponent(BddComponentVector::size_type index)
120  {
121  require(Exception,index < _bddComponents.size(),
122  Diades::Utils::Msg("BddComponent::getComponent, out-of-range index '%1% >= %2%'") % index % _bddComponents.size());
123  return _bddComponents[index];
124  }
125 
126 
127 
128 
135  const SlStates & initialStates() const;
136 
137 
138 
145  const SlEvents & events() const
146  {
147  return _setOfEvents[0].get();
148  }
149 
150 
151 
158  const SlTransitions & transitions() const;
159 
160 
170  const SlStates & trigger(const SlStates & sources, const SlEvents & events) const;
171 
172 
183  const SlStates & synchronousTrigger(const SlStates & sources, const SlEvents & events);
184 
185 
186 
194  const VariableVector & stateVariables() const
195  {
196  return _stateVariables;
197  }
198 
207  const VariableVector & nextStateVariables() const
208  {
209  return _nextStateVariables;
210  }
211 
212 
213 
214 
215  private:
220  void encodeStateVariables();
221 
226  void encodeEvents();
227 
228 
234  void setFaults(const set<Event> & faults);
235 
236 
237 
243  void setObservables(const set<Event> & observable);
244 
245 
246 
257  const SlStates & trigger(const SlStates & sources,
258  size_t eventIndex) const;
259 
260 
261  };
262 
263  };
264 };
265 
266 #endif
vector< const Component * > ComponentVector
const VariableVector & stateVariables() const
Definition: BddModel.hh:194
FormulaFactory & formulaFactory()
Definition: BddModel.hh:92
Diades::Automata::SynchronisationRules::ComponentVector ComponentVector
Definition: BddModel.hh:39
const SlTransitions & transitions() const
BddComponent::SlStates SlStates
Definition: BddModel.hh:61
BddModel(const SynchronisationRules &model, const set< Event > &observable, const set< Event > &faults)
vector< BddComponent > BddComponentVector
Definition: BddModel.hh:40
void setObservables(const set< Event > &observable)
FormulaVector _isObs
Definition: BddModel.hh:53
BddComponent::SlEvents SlEvents
Definition: BddModel.hh:63
const SlEvents & events() const
Definition: BddModel.hh:145
const SlStates & trigger(const SlStates &sources, const SlEvents &events) const
FormulaVector _transitions
Definition: BddModel.hh:60
Formula class using BDD.
std::vector< ConstReference > FormulaVector
Definition: Formula.hh:74
vector< vector< bool > > _booleanSupports
Definition: BddModel.hh:59
const SynchronisationRules & _model
Definition: BddModel.hh:44
Formula::FormulaVector FormulaVector
Definition: BddModel.hh:42
static string typeName()
Definition: BddModel.hh:37
Diades::Utils::Exception< BddModel > Exception
Definition: BddModel.hh:38
const VariableVector & nextStateVariables() const
Definition: BddModel.hh:207
FormulaVector _setOfEvents
Definition: BddModel.hh:56
vector< vector< size_t > > _supports
Definition: BddModel.hh:58
DdAutFsm::EventPropertyId Event
Definition: TrimState.cc:139
VariableFactory * _varFactory
Definition: BddModel.hh:46
const BddComponent & getComponent(BddComponentVector::size_type index) const
Definition: BddModel.hh:104
std::vector< Reference > VariableVector
Definition: Variable.hh:33
FormulaVector _faults
Definition: BddModel.hh:54
void setFaults(const set< Event > &faults)
#define require(Exception, expr, message)
Definition: Assertion.hh:90
Namespace of the Diades project.
const SlStates & synchronousTrigger(const SlStates &sources, const SlEvents &events)
VariableVector _nextStateVariables
Definition: BddModel.hh:49
FormulaVector _observables
Definition: BddModel.hh:52
const SlStates & initialStates() const
BddComponentVector _bddComponents
Definition: BddModel.hh:45
BddComponent a class that encodes a component into a set of BDDs.
VariableVector _stateVariables
Definition: BddModel.hh:48
BddComponent & getComponent(BddComponentVector::size_type index)
Definition: BddModel.hh:119
FormulaVector _isFault
Definition: BddModel.hh:55
FormulaFactory * _formulas
Definition: BddModel.hh:47
BddComponent::SlTransitions SlTransitions
Definition: BddModel.hh:62
Variable::VariableVector VariableVector
Definition: BddModel.hh:41
VariableVector _varSet
Definition: BddModel.hh:51
boost::format Msg
Definition: Verbose.hh:42
FormulaVector _events
Definition: BddModel.hh:57