// ************************************************************************** //
//                                                                            //
//    eses                   eses                                             //
//   eses                     eses                                            //
//  eses    eseses  esesese    eses   Embedded Systems Group                  //
//  ese    ese  ese ese         ese                                           //
//  ese    eseseses eseseses    ese   Department of Computer Science          //
//  eses   eses          ese   eses                                           //
//   eses   eseses  eseseses  eses    University of Kaiserslautern            //
//    eses                   eses                                             //
//                                                                            //
// ************************************************************************** //
// This module is an extreme case in the sense that the data dependencies of  //
// the N different actions executed within the only macro step of the module  //
// form a chain of length N, which is the size of the program. The evaluation //
// of the program requires several reactions to absences.                     //
// ************************************************************************** //


macro N = 5;

module DeepN(event ?i,event [2*N]bool o) {
    if(i) emit(o[0]);
    for(i=0..N-1) 
        if(o[2*i]) emit(o[2*i+1]);
    for(i=0..N-2) 
        if(!o[2*i+1]) emit(o[2*i+2]);
} drivenby d0 {
    i = false;
} drivenby d1 {
    i = true;
}