diff --git a/src/NewNet.cpp b/src/NewNet.cpp index 3b7664c5b7229f867b3769ddf8e94f1efed63c5b..c5d3c17c724eba5cf7849edc1fc458f20ee9d59a 100644 --- a/src/NewNet.cpp +++ b/src/NewNet.cpp @@ -135,19 +135,24 @@ NewNet::NewNet(const char *f, const set<string> & f_trans) { * ------------------------------*/ void NewNet::setListObservable(const set<string> & list_t) { int pos_trans(TRANSITIONS T, string trans); + Observable.clear(); for (set<string>::const_iterator i=list_t.begin();i!=list_t.end();i++) { int pos = pos_trans(transitions, *i); - Observable.clear(); if (pos==-1) { cout<<"Error: "<<*i<<" is not a transition!"<<endl; // Check if the proposition corresponds to a place map<string, int>::iterator pi = placeName.find(*i); if (pi!=placeName.end()) cout<<"Place was found!"<<endl; m_formula_place.insert(pi->second); - for (unsigned int i = 0; i < transitions.size(); i++) - if (Observable.find(i) == Observable.end()) { - NonObservable.insert(i); - } + + // Adding adjacent transitions of a place as observable transitions + Place p=places.at(pi->second); + for (auto iter=p.post.begin();iter!=p.post.end();iter++) { + Observable.insert((*iter).first); + } + for (auto iter=p.pre.begin();iter!=p.pre.end();iter++) { + Observable.insert((*iter).first); + } } else { Formula_Trans.insert(pos); @@ -157,6 +162,11 @@ NewNet::NewNet(const char *f, const set<string> & f_trans) { Observable.insert(pos); } } + + cout<<"Diplaying list of observable transitions :"<<endl; + for (auto iter=Observable.begin();iter!=Observable.end();iter++) { + cout<<"Transition position : "<<*iter<<endl; + } }