|
@ -34,17 +34,21 @@ namespace storm { |
|
|
|
|
|
|
|
|
// Request a deterministic, complete automaton with state-based acceptance
|
|
|
// Request a deterministic, complete automaton with state-based acceptance
|
|
|
spot::translator trans = spot::translator(); |
|
|
spot::translator trans = spot::translator(); |
|
|
trans.set_type(spot::postprocessor::Generic); |
|
|
|
|
|
|
|
|
trans.set_type(spot::postprocessor::Generic); //Generic
|
|
|
trans.set_pref(spot::postprocessor::Deterministic | spot::postprocessor::SBAcc | spot::postprocessor::Complete); |
|
|
trans.set_pref(spot::postprocessor::Deterministic | spot::postprocessor::SBAcc | spot::postprocessor::Complete); |
|
|
STORM_LOG_INFO("Construct deterministic automaton for "<< spotFormula); |
|
|
STORM_LOG_INFO("Construct deterministic automaton for "<< spotFormula); |
|
|
auto aut = trans.run(spotFormula); |
|
|
auto aut = trans.run(spotFormula); |
|
|
|
|
|
|
|
|
// TODO necessary for MDP LTL-MC
|
|
|
// TODO necessary for MDP LTL-MC
|
|
|
if(!(aut->get_acceptance().is_dnf()) && dnf){ |
|
|
if(!(aut->get_acceptance().is_dnf()) && dnf){ |
|
|
STORM_LOG_INFO("Convert acceptance condition into DNF..."); |
|
|
|
|
|
aut->set_acceptance(aut->get_acceptance().to_dnf()); |
|
|
|
|
|
|
|
|
STORM_LOG_INFO("Convert acceptance condition "<< aut->get_acceptance() << " into DNF..."); |
|
|
|
|
|
// Transform the acceptance condition in disjunctive normal form and merge all the Fin-sets of each clause
|
|
|
|
|
|
aut = to_generalized_rabin(aut,true); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
STORM_LOG_INFO(aut->get_acceptance()); |
|
|
|
|
|
|
|
|
std::stringstream autStream; |
|
|
std::stringstream autStream; |
|
|
// Print reachable states in HOA format, implicit edges (i), state-based acceptance (s)
|
|
|
// Print reachable states in HOA format, implicit edges (i), state-based acceptance (s)
|
|
|
spot::print_hoa(autStream, aut, "is"); |
|
|
spot::print_hoa(autStream, aut, "is"); |
|
|