Newer
Older
//
// Created by ghofrane on 5/4/22.
//
#ifndef PMC_SOG_CNDFS_H
#define PMC_SOG_CNDFS_H
LDDState *left;
const spot::twa_graph_state* right;
vector<pair<struct myState_t*, int>> new_successors;
bool isAcceptance {false};
bool isConstructed {false};
atomic<bool> blue {false};
atomic<bool> red {false};
atomic<uint8_t> mIdThread;
std::thread* mlThread[MAX_THREADS];
myState_t * mInitStatePtr;
SafeDequeue<struct myState_t*> mSharedPoolTemp;
static spot::bdd_dict_ptr* m_dict_ptr;
void getInitialState();
static void threadHandler(void *context);
// SafeDequeue<myCouple> sharedPool;
SafeDequeue<spot::formula> transitionNames;
SafeDequeue<coupleSuccessor> new_successor;
CNDFS(ModelCheckBaseMT *mcl,const spot::twa_graph_ptr &af,const uint16_t& nbTh);
void dfsBlue(myState_t *state, vector<myState_t*>& Rp,uint8_t idThread);
void dfsRed(myState_t* state, vector<myState_t*>& Rp,uint8_t idThread);
myState_t* buildState(LDDState* left, spot::state* right, bool acc, bool constructed,bool cyan);