// ************************************************************************** // // // // 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 constructive example is due to G. Berry [Berr99]. The guarded actions // of the program i&o1 => o2 and o2&!i => o1 have a unique solution (!o1 & !o2) // that is also constructive. // ************************************************************************** // module P13(event ?i,o1,o2) { if(i) { if(o1) emit(o2); } else { if(o2) emit(o1); } assert(!o1 & !o2); } drivenby drv0 { i = false; } drivenby drv1 { i = true; }