/** Calculate the union of two DA. If the DAs are not compact, they are made compact. * @param da_1 The first DA * @param da_2 the second DA * @param trueloop_check Check for trueloops? * @param detailed_states Generate detailed descriptions of the states? * @return shared_ptr to result DA */ //bool trueloop_check=true,bool detailed_states=false public static DA calculateUnion(DA da_1, DA da_2, bool trueloop_check, bool detailed_states) { //if (!da_1.isCompact()) { // da_1.makeCompact(); //} //if (!da_2.isCompact()) { // da_2.makeCompact(); //} DAUnionAlgorithm dua = new DAUnionAlgorithm(da_1, da_2, trueloop_check, detailed_states); NBA2DA generator = new NBA2DA(detailed_states); generator.convert(dua, dua.getResultDA() as DRA, 0); return(dua.getResultDA()); }
/** Calculate the union of two DA, using stuttering if possible. If the DAs are not compact, they are made compact. * @param da_1 The first DA * @param da_2 the second DA * @param stutter_information information about the symbols where stuttering is allowed * @param trueloop_check Check for trueloops? * @param detailed_states Generate detailed descriptions of the states? */ //bool trueloop_check=true, bool detailed_states=false public static DA calculateUnionStuttered(DA da_1, DA da_2, StutterSensitivenessInformation stutter_information, bool trueloop_check, bool detailed_states) { //if (!da_1.isCompact()) { // da_1.makeCompact(); //} //if (!da_2.isCompact()) { // da_2.makeCompact(); //} //typedef DAUnionAlgorithm<DA_t> algo_t; DAUnionAlgorithm dua = new DAUnionAlgorithm(da_1, da_2, trueloop_check, detailed_states); //<algo_t, DA_t> StutteredNBA2DAUnion generator = new StutteredNBA2DAUnion(detailed_states, stutter_information); generator.convert(dua, dua.getResultDA(), 0); return(dua.getResultDA()); }