// ************************************************************************** //
//                                                                            //
//    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                                             //
//                                                                            //
// ************************************************************************** //
// The module below demonstrates the difference between conditional statements//
// and conditional expressions. The module below generates the following      //
// guarded actions:                                                           //
//  * True => error = 0<i&a[i-1]                                              //
//  * True => assert i-1<2                                                    //
// Since we initially have i==0, the evaluation of this module fails while    //
// the analogous module CondStat1.qrz works fine. To be precise, the assertion//
// fails, while the rhs of assignment to variable error yields value false.   //
// ************************************************************************** //


module CondExpr1(nat ?i,[2]bool ?a,event !error) {
    error = (i>0 ? (a[i+2] ? true : false) : false);
}
drivenby {
    nothing;
}