Introduce simplify_mealy
Convenience function dispatching to minimize_mealy and reduce_mealy. Change tests accordingly * spot/twaalgos/mealy_machine.cc, spot/twaalgos/mealy_machine.hh: Here * bin/ltlsynt.cc: Use simplify * spot/twaalgos/synthesis.cc, spot/twaalgos/synthesis.hh: Remove minimization, Update options * tests/core/ltlsynt.test, tests/python/synthesis.ipynb, tests/python/_synthesis.ipynb: Adapt
This commit is contained in:
parent
86de4d4052
commit
97fc3f6c0b
8 changed files with 901 additions and 327 deletions
|
|
@ -408,14 +408,13 @@ namespace
|
||||||
spot::mealy_like ml;
|
spot::mealy_like ml;
|
||||||
ml.success =
|
ml.success =
|
||||||
spot::mealy_like::realizability_code::REALIZABLE_REGULAR;
|
spot::mealy_like::realizability_code::REALIZABLE_REGULAR;
|
||||||
if (opt_print_aiger)
|
// By default this produces a split machine
|
||||||
// we do not care about the type,
|
ml.mealy_like =
|
||||||
// machine to aiger can handle it
|
spot::solved_game_to_mealy(arena, *gi);
|
||||||
ml.mealy_like =
|
// Keep the machine split for aiger
|
||||||
spot::solved_game_to_mealy(arena, *gi);
|
// else -> separated
|
||||||
else
|
spot::simplify_mealy_here(ml.mealy_like, *gi,
|
||||||
ml.mealy_like =
|
opt_print_aiger);
|
||||||
spot::solved_game_to_separated_mealy(arena, *gi);
|
|
||||||
ml.glob_cond = bddfalse;
|
ml.glob_cond = bddfalse;
|
||||||
mealy_machines.push_back(ml);
|
mealy_machines.push_back(ml);
|
||||||
}
|
}
|
||||||
|
|
@ -429,51 +428,10 @@ namespace
|
||||||
assert(m_like.mealy_like && "Expected success but found no mealy!");
|
assert(m_like.mealy_like && "Expected success but found no mealy!");
|
||||||
if (!opt_real)
|
if (!opt_real)
|
||||||
{
|
{
|
||||||
spot::stopwatch sw_direct;
|
// Keep the machine split for aiger
|
||||||
sw_direct.start();
|
// else -> separated
|
||||||
|
spot::simplify_mealy_here(m_like.mealy_like, *gi,
|
||||||
if ((0 < gi->minimize_lvl) && (gi->minimize_lvl < 3))
|
opt_print_aiger);
|
||||||
// Uses reduction or not,
|
|
||||||
// both work with mealy machines (non-separated)
|
|
||||||
reduce_mealy_here(m_like.mealy_like, gi->minimize_lvl == 2);
|
|
||||||
|
|
||||||
auto delta = sw_direct.stop();
|
|
||||||
|
|
||||||
sw_direct.start();
|
|
||||||
// todo better algo here?
|
|
||||||
m_like.mealy_like =
|
|
||||||
split_2step(m_like.mealy_like,
|
|
||||||
spot::get_synthesis_outputs(m_like.mealy_like),
|
|
||||||
false);
|
|
||||||
if (gi->bv)
|
|
||||||
gi->bv->split_time += sw_direct.stop();
|
|
||||||
|
|
||||||
sw_direct.start();
|
|
||||||
if (gi->minimize_lvl >= 3)
|
|
||||||
{
|
|
||||||
sw_direct.start();
|
|
||||||
// actual minimization, works on split mealy
|
|
||||||
m_like.mealy_like = minimize_mealy(m_like.mealy_like,
|
|
||||||
gi->minimize_lvl - 4);
|
|
||||||
delta = sw_direct.stop();
|
|
||||||
}
|
|
||||||
|
|
||||||
// If our goal is to have an aiger,
|
|
||||||
// we can use split or separated machines
|
|
||||||
if (!opt_print_aiger)
|
|
||||||
// Unsplit to have separated mealy
|
|
||||||
m_like.mealy_like = unsplit_mealy(m_like.mealy_like);
|
|
||||||
|
|
||||||
if (gi->bv)
|
|
||||||
gi->bv->strat2aut_time += delta;
|
|
||||||
if (gi->verbose_stream)
|
|
||||||
*gi->verbose_stream << "final strategy has "
|
|
||||||
<< m_like.mealy_like->num_states()
|
|
||||||
<< " states and "
|
|
||||||
<< m_like.mealy_like->num_edges()
|
|
||||||
<< " edges\n"
|
|
||||||
<< "minimization took " << delta
|
|
||||||
<< " seconds\n";
|
|
||||||
}
|
}
|
||||||
SPOT_FALLTHROUGH;
|
SPOT_FALLTHROUGH;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -135,11 +135,12 @@ namespace spot
|
||||||
if (!is_mealy(m))
|
if (!is_mealy(m))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (m->get_named_prop<region_t>("state-player") == nullptr)
|
if (!m->get_named_prop<region_t>("state-player"))
|
||||||
{
|
{
|
||||||
trace << "is_split_mealy(): Split mealy machine must define the named "
|
trace << "is_split_mealy(): Split mealy machine must define the named "
|
||||||
"property \"state-player\"!\n";
|
"property \"state-player\"!\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
auto sp = get_state_players(m);
|
auto sp = get_state_players(m);
|
||||||
|
|
||||||
if (sp.size() != m->num_states())
|
if (sp.size() != m->num_states())
|
||||||
|
|
@ -1027,6 +1028,28 @@ namespace
|
||||||
std::pair<const_twa_graph_ptr, unsigned>
|
std::pair<const_twa_graph_ptr, unsigned>
|
||||||
reorganize_mm(const_twa_graph_ptr mm, const std::vector<bool>& sp)
|
reorganize_mm(const_twa_graph_ptr mm, const std::vector<bool>& sp)
|
||||||
{
|
{
|
||||||
|
// Check if the twa_graph already has the correct form
|
||||||
|
{
|
||||||
|
auto sp = get_state_players(mm);
|
||||||
|
// All player states mus be at the end
|
||||||
|
bool is_ok = true;
|
||||||
|
bool seen_player = false;
|
||||||
|
for (const auto& p : sp)
|
||||||
|
{
|
||||||
|
if (seen_player & !p)
|
||||||
|
{
|
||||||
|
is_ok = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
seen_player |= p;
|
||||||
|
}
|
||||||
|
if (is_ok)
|
||||||
|
return {mm,
|
||||||
|
mm->num_states()
|
||||||
|
- std::accumulate(sp.begin(), sp.end(), 0)};
|
||||||
|
}
|
||||||
|
// We actually need to generate a new graph with the correct
|
||||||
|
// form
|
||||||
// Purge unreachable and reorganize the graph
|
// Purge unreachable and reorganize the graph
|
||||||
std::vector<unsigned> renamed(mm->num_states(), -1u);
|
std::vector<unsigned> renamed(mm->num_states(), -1u);
|
||||||
const unsigned n_old = mm->num_states();
|
const unsigned n_old = mm->num_states();
|
||||||
|
|
@ -3607,7 +3630,7 @@ namespace spot
|
||||||
twa_graph_ptr minimize_mealy(const const_twa_graph_ptr& mm,
|
twa_graph_ptr minimize_mealy(const const_twa_graph_ptr& mm,
|
||||||
int premin)
|
int premin)
|
||||||
{
|
{
|
||||||
assert(is_split_mealy(mm));
|
assert(is_mealy(mm));
|
||||||
|
|
||||||
stopwatch sw;
|
stopwatch sw;
|
||||||
sw.start();
|
sw.start();
|
||||||
|
|
@ -3615,38 +3638,33 @@ namespace spot
|
||||||
if ((premin < -1) || (premin > 1))
|
if ((premin < -1) || (premin > 1))
|
||||||
throw std::runtime_error("premin has to be -1, 0 or 1");
|
throw std::runtime_error("premin has to be -1, 0 or 1");
|
||||||
|
|
||||||
auto orig_spref = get_state_players(mm);
|
|
||||||
|
|
||||||
// Check if finite traces exist
|
|
||||||
// If so, deactivate fast minimization
|
|
||||||
// todo : this is overly conservative
|
|
||||||
// If unreachable states have no outgoing edges we do not care
|
|
||||||
// but testing this as well starts to be expensive...
|
|
||||||
if (premin != -1
|
|
||||||
&& [&]()
|
|
||||||
{
|
|
||||||
for (unsigned s = 0; s < mm->num_states(); ++s)
|
|
||||||
{
|
|
||||||
auto eit = mm->out(s);
|
|
||||||
if (eit.begin() == eit.end())
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}())
|
|
||||||
premin = -1;
|
|
||||||
|
|
||||||
auto do_premin = [&]()->const_twa_graph_ptr
|
auto do_premin = [&]()->const_twa_graph_ptr
|
||||||
{
|
{
|
||||||
if (premin == -1)
|
if (premin == -1)
|
||||||
return mm;
|
{
|
||||||
|
if (!mm->get_named_prop<region_t>("state-player"))
|
||||||
|
return split_2step(mm, false);
|
||||||
|
else
|
||||||
|
return mm;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
bool is_split = mm->get_named_prop<region_t>("state-player");
|
||||||
// We have a split machine -> unsplit then resplit,
|
// We have a split machine -> unsplit then resplit,
|
||||||
// as reduce mealy works on separated
|
// as reduce mealy works on separated
|
||||||
auto mms = unsplit_mealy(mm);
|
twa_graph_ptr mms;
|
||||||
reduce_mealy_here(mms, premin == 1);
|
if (is_split)
|
||||||
split_separated_mealy_here(mms);
|
{
|
||||||
return mms;
|
auto mmi = unsplit_2step(mm);
|
||||||
|
reduce_mealy_here(mmi, premin == 1);
|
||||||
|
split_separated_mealy_here(mmi);
|
||||||
|
return mmi;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
auto mms = reduce_mealy(mm, premin == 1);
|
||||||
|
return split_2step(mms, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -3689,9 +3707,13 @@ namespace spot
|
||||||
auto early_exit = [&]()
|
auto early_exit = [&]()
|
||||||
{
|
{
|
||||||
// Always keep machines split
|
// Always keep machines split
|
||||||
assert(is_split_mealy_specialization(mm, mmw));
|
if (mm->get_named_prop<region_t>("state-player"))
|
||||||
|
assert(is_split_mealy_specialization(mm, mmw));
|
||||||
|
else
|
||||||
|
assert(is_split_mealy_specialization(split_2step(mm, false),
|
||||||
|
mmw));
|
||||||
return std::const_pointer_cast<twa_graph>(mmw);
|
return std::const_pointer_cast<twa_graph>(mmw);
|
||||||
};
|
};
|
||||||
|
|
||||||
// If the partial solution has the same number of
|
// If the partial solution has the same number of
|
||||||
// states as the original automaton -> we are done
|
// states as the original automaton -> we are done
|
||||||
|
|
@ -3897,4 +3919,91 @@ namespace spot
|
||||||
|
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
simplify_mealy_here(twa_graph_ptr& m, int minimize_lvl,
|
||||||
|
bool split_out)
|
||||||
|
{
|
||||||
|
auto si = synthesis_info();
|
||||||
|
si.minimize_lvl = minimize_lvl;
|
||||||
|
return simplify_mealy_here(m, si, split_out);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
simplify_mealy_here(twa_graph_ptr& m, synthesis_info& si,
|
||||||
|
bool split_out)
|
||||||
|
{
|
||||||
|
const auto minimize_lvl = si.minimize_lvl;
|
||||||
|
assert(is_mealy(m)
|
||||||
|
&& "simplify_mealy_here(): m is not a mealy machine!");
|
||||||
|
if (minimize_lvl < 0 || 5 < minimize_lvl)
|
||||||
|
throw std::runtime_error("simplify_mealy_here(): minimize_lvl "
|
||||||
|
"must be between 0 and 5.");
|
||||||
|
|
||||||
|
stopwatch sw;
|
||||||
|
if (si.bv)
|
||||||
|
sw.start();
|
||||||
|
|
||||||
|
bool is_separated = false;
|
||||||
|
if (0 < minimize_lvl && minimize_lvl < 3)
|
||||||
|
{
|
||||||
|
// unsplit if necessary
|
||||||
|
if (m->get_named_prop<region_t>("state-player"))
|
||||||
|
{
|
||||||
|
m = unsplit_mealy(m);
|
||||||
|
is_separated = true;
|
||||||
|
}
|
||||||
|
reduce_mealy_here(m, minimize_lvl == 2);
|
||||||
|
}
|
||||||
|
else if (3 <= minimize_lvl)
|
||||||
|
m = minimize_mealy(m, minimize_lvl - 4);
|
||||||
|
|
||||||
|
// Convert to demanded output format
|
||||||
|
bool is_split = m->get_named_prop<region_t>("state-player");
|
||||||
|
if (minimize_lvl == 0)
|
||||||
|
{
|
||||||
|
if (is_split && !split_out)
|
||||||
|
m = unsplit_mealy(m);
|
||||||
|
else if (!is_split && split_out)
|
||||||
|
m = split_2step(m, false);
|
||||||
|
}
|
||||||
|
else if (0 < minimize_lvl && minimize_lvl < 3 && split_out)
|
||||||
|
{
|
||||||
|
if (is_separated)
|
||||||
|
split_separated_mealy_here(m);
|
||||||
|
else
|
||||||
|
m = split_2step(m, false);
|
||||||
|
}
|
||||||
|
else if (3 <= minimize_lvl && !split_out)
|
||||||
|
m = unsplit_mealy(m);
|
||||||
|
|
||||||
|
if (si.bv)
|
||||||
|
{
|
||||||
|
if (si.verbose_stream)
|
||||||
|
*si.verbose_stream << "simplification took " << sw.stop()
|
||||||
|
<< " seconds\n";
|
||||||
|
si.bv->simplify_strat_time += sw.stop();
|
||||||
|
auto n_s_env = 0u;
|
||||||
|
auto n_e_env = 0u;
|
||||||
|
if (auto sp = m->get_named_prop<region_t>("state-player"))
|
||||||
|
{
|
||||||
|
n_s_env = sp->size() - std::accumulate(sp->begin(),
|
||||||
|
sp->end(),
|
||||||
|
0u);
|
||||||
|
std::for_each(m->edges().begin(), m->edges().end(),
|
||||||
|
[&n_e_env, &sp](const auto& e)
|
||||||
|
{
|
||||||
|
n_e_env += (*sp)[e.src];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
n_s_env = m->num_states();
|
||||||
|
n_e_env = m->num_edges();
|
||||||
|
}
|
||||||
|
si.bv->nb_simpl_strat_states += n_s_env;
|
||||||
|
si.bv->nb_simpl_strat_edges += n_e_env;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,9 @@
|
||||||
|
|
||||||
namespace spot
|
namespace spot
|
||||||
{
|
{
|
||||||
|
// Forward decl
|
||||||
|
struct synthesis_info;
|
||||||
|
|
||||||
/// todo
|
/// todo
|
||||||
/// Comment je faire au mieux pour expliquer mealy dans les doc
|
/// Comment je faire au mieux pour expliquer mealy dans les doc
|
||||||
|
|
||||||
|
|
@ -104,7 +107,7 @@ namespace spot
|
||||||
bool output_assignment = false);
|
bool output_assignment = false);
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
/// \brief Minimizes a split (in)completely specified mealy machine
|
/// \brief Minimizes an (in)completely specified mealy machine
|
||||||
/// The approach is described in \todo TACAS
|
/// The approach is described in \todo TACAS
|
||||||
/// \param premin Use reduce_mealy before applying the
|
/// \param premin Use reduce_mealy before applying the
|
||||||
/// main algorithm if demanded AND
|
/// main algorithm if demanded AND
|
||||||
|
|
@ -138,4 +141,22 @@ namespace spot
|
||||||
SPOT_API twa_graph_ptr
|
SPOT_API twa_graph_ptr
|
||||||
mealy_product(const const_twa_graph_ptr& left,
|
mealy_product(const const_twa_graph_ptr& left,
|
||||||
const const_twa_graph_ptr& right);
|
const const_twa_graph_ptr& right);
|
||||||
|
|
||||||
|
/// \brief Convenience function to call minimize_mealy or reduce_mealy.
|
||||||
|
/// Uses the same convention as ltlsynt for \a minimize_lvl:
|
||||||
|
/// 0: no reduction
|
||||||
|
/// 1: bisimulation based reduction
|
||||||
|
/// 2: bisimulation with output assignment
|
||||||
|
/// 3: SAT minimization
|
||||||
|
/// 4: 1 then 3
|
||||||
|
/// 5: 2 then 3
|
||||||
|
/// Minimizes the given machine \a m inplace, the parameter
|
||||||
|
/// \a split_out defines whether it is split or not
|
||||||
|
SPOT_API void
|
||||||
|
simplify_mealy_here(twa_graph_ptr& m, int minimize_lvl,
|
||||||
|
bool split_out);
|
||||||
|
|
||||||
|
SPOT_API void
|
||||||
|
simplify_mealy_here(twa_graph_ptr& m, synthesis_info& si,
|
||||||
|
bool split_out);
|
||||||
}
|
}
|
||||||
|
|
@ -1051,22 +1051,25 @@ namespace spot
|
||||||
if (!get_state_winner(arena, arena->get_init_state_number()))
|
if (!get_state_winner(arena, arena->get_init_state_number()))
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
// If we use minimizations 0,1 or 2 -> unsplit
|
auto m = apply_strategy(arena, false, false);
|
||||||
const bool do_unsplit = gi.minimize_lvl < 3;
|
|
||||||
auto m = apply_strategy(arena, do_unsplit, false);
|
|
||||||
|
|
||||||
m->prop_universal(true);
|
m->prop_universal(true);
|
||||||
|
|
||||||
if ((0 < gi.minimize_lvl) && (gi.minimize_lvl < 3))
|
|
||||||
reduce_mealy_here(m, gi.minimize_lvl == 2);
|
|
||||||
else if (gi.minimize_lvl >= 3)
|
|
||||||
m = minimize_mealy(m, gi.minimize_lvl - 4);
|
|
||||||
|
|
||||||
if (gi.bv)
|
if (gi.bv)
|
||||||
{
|
{
|
||||||
|
auto sp = get_state_players(m);
|
||||||
|
auto n_s_env = sp.size() - std::accumulate(sp.begin(),
|
||||||
|
sp.end(),
|
||||||
|
0u);
|
||||||
|
auto n_e_env = 0u;
|
||||||
|
std::for_each(m->edges().begin(), m->edges().end(),
|
||||||
|
[&n_e_env, &sp](const auto& e)
|
||||||
|
{
|
||||||
|
n_e_env += sp[e.src];
|
||||||
|
});
|
||||||
gi.bv->strat2aut_time += sw.stop();
|
gi.bv->strat2aut_time += sw.stop();
|
||||||
gi.bv->nb_strat_states += m->num_states();
|
gi.bv->nb_strat_states += n_s_env;
|
||||||
gi.bv->nb_strat_edges += m->num_edges();
|
gi.bv->nb_strat_edges += n_e_env;
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(is_mealy(m));
|
assert(is_mealy(m));
|
||||||
|
|
@ -1200,7 +1203,8 @@ namespace spot
|
||||||
{
|
{
|
||||||
*vs << "direct strategy was found.\n"
|
*vs << "direct strategy was found.\n"
|
||||||
<< "direct strat has " << strat->num_states()
|
<< "direct strat has " << strat->num_states()
|
||||||
<< " states and " << strat->num_sets() << " colors\n";
|
<< " states, " << strat->num_edges()
|
||||||
|
<< " edges and " << strat->num_sets() << " colors\n";
|
||||||
}
|
}
|
||||||
return mealy_like{
|
return mealy_like{
|
||||||
mealy_like::realizability_code::REALIZABLE_REGULAR,
|
mealy_like::realizability_code::REALIZABLE_REGULAR,
|
||||||
|
|
|
||||||
|
|
@ -96,11 +96,14 @@ namespace spot
|
||||||
double paritize_time = 0.0;
|
double paritize_time = 0.0;
|
||||||
double solve_time = 0.0;
|
double solve_time = 0.0;
|
||||||
double strat2aut_time = 0.0;
|
double strat2aut_time = 0.0;
|
||||||
|
double simplify_strat_time = 0.0;
|
||||||
double aig_time = 0.0;
|
double aig_time = 0.0;
|
||||||
unsigned nb_states_arena = 0;
|
unsigned nb_states_arena = 0;
|
||||||
unsigned nb_states_arena_env = 0;
|
unsigned nb_states_arena_env = 0;
|
||||||
unsigned nb_strat_states = 0;
|
unsigned nb_strat_states = 0;
|
||||||
unsigned nb_strat_edges = 0;
|
unsigned nb_strat_edges = 0;
|
||||||
|
unsigned nb_simpl_strat_states = 0;
|
||||||
|
unsigned nb_simpl_strat_edges = 0;
|
||||||
unsigned nb_latches = 0;
|
unsigned nb_latches = 0;
|
||||||
unsigned nb_gates = 0;
|
unsigned nb_gates = 0;
|
||||||
bool realizable = false;
|
bool realizable = false;
|
||||||
|
|
|
||||||
|
|
@ -195,7 +195,7 @@ cat >exp <<EOF
|
||||||
trying to create strategy directly for GFa <-> GFb
|
trying to create strategy directly for GFa <-> GFb
|
||||||
tanslating formula done in X seconds
|
tanslating formula done in X seconds
|
||||||
direct strategy was found.
|
direct strategy was found.
|
||||||
direct strat has 1 states and 0 colors
|
direct strat has 1 states, 2 edges and 0 colors
|
||||||
EOF
|
EOF
|
||||||
ltlsynt --ins='a' --outs='b' -f 'GFa <-> GFb' --verbose --realizability 2> out
|
ltlsynt --ins='a' --outs='b' -f 'GFa <-> GFb' --verbose --realizability 2> out
|
||||||
sed 's/ [0-9.e-]* seconds/ X seconds/g' out > outx
|
sed 's/ [0-9.e-]* seconds/ X seconds/g' out > outx
|
||||||
|
|
@ -205,9 +205,8 @@ cat >exp <<EOF
|
||||||
trying to create strategy directly for GFa <-> GFb
|
trying to create strategy directly for GFa <-> GFb
|
||||||
tanslating formula done in X seconds
|
tanslating formula done in X seconds
|
||||||
direct strategy was found.
|
direct strategy was found.
|
||||||
direct strat has 1 states and 0 colors
|
direct strat has 1 states, 2 edges and 0 colors
|
||||||
final strategy has 1 states and 2 edges
|
simplification took X seconds
|
||||||
minimization took X seconds
|
|
||||||
EOF
|
EOF
|
||||||
ltlsynt --ins=a --outs=b -f 'GFa <-> GFb' --verbose --algo=ps 2> out
|
ltlsynt --ins=a --outs=b -f 'GFa <-> GFb' --verbose --algo=ps 2> out
|
||||||
sed 's/ [0-9.e-]* seconds/ X seconds/g' out > outx
|
sed 's/ [0-9.e-]* seconds/ X seconds/g' out > outx
|
||||||
|
|
@ -217,7 +216,7 @@ cat >exp <<EOF
|
||||||
trying to create strategy directly for (Fa & Fb & Fc & Fd) <-> GFe
|
trying to create strategy directly for (Fa & Fb & Fc & Fd) <-> GFe
|
||||||
tanslating formula done in X seconds
|
tanslating formula done in X seconds
|
||||||
direct strategy was found.
|
direct strategy was found.
|
||||||
direct strat has 16 states and 0 colors
|
direct strat has 16 states, 81 edges and 0 colors
|
||||||
EOF
|
EOF
|
||||||
ltlsynt --ins='a,b,c,d' --outs='e' -f '(Fa & Fb & Fc & Fd) <-> GFe' \
|
ltlsynt --ins='a,b,c,d' --outs='e' -f '(Fa & Fb & Fc & Fd) <-> GFe' \
|
||||||
--verbose --realizability --algo=lar 2> out
|
--verbose --realizability --algo=lar 2> out
|
||||||
|
|
@ -561,9 +560,8 @@ cat >exp <<EOF
|
||||||
trying to create strategy directly for GFa <-> GFb
|
trying to create strategy directly for GFa <-> GFb
|
||||||
tanslating formula done in X seconds
|
tanslating formula done in X seconds
|
||||||
direct strategy was found.
|
direct strategy was found.
|
||||||
direct strat has 1 states and 0 colors
|
direct strat has 1 states, 2 edges and 0 colors
|
||||||
final strategy has 1 states and 2 edges
|
simplification took X seconds
|
||||||
minimization took X seconds
|
|
||||||
trying to create strategy directly for Gc
|
trying to create strategy directly for Gc
|
||||||
direct strategy might exist but was not found.
|
direct strategy might exist but was not found.
|
||||||
translating formula done in X seconds
|
translating formula done in X seconds
|
||||||
|
|
@ -574,6 +572,7 @@ split inputs and outputs done in X seconds
|
||||||
automaton has 2 states
|
automaton has 2 states
|
||||||
solving game with acceptance: Streett 1
|
solving game with acceptance: Streett 1
|
||||||
game solved in X seconds
|
game solved in X seconds
|
||||||
|
simplification took X seconds
|
||||||
EOF
|
EOF
|
||||||
ltlsynt -f '(GFa <-> GFb) && (Gc)' --outs=b,c --verbose 2> out
|
ltlsynt -f '(GFa <-> GFb) && (Gc)' --outs=b,c --verbose 2> out
|
||||||
sed 's/ [0-9.e-]* seconds/ X seconds/g' out > outx
|
sed 's/ [0-9.e-]* seconds/ X seconds/g' out > outx
|
||||||
|
|
@ -588,9 +587,8 @@ cat >exp <<EOF
|
||||||
trying to create strategy directly for $f
|
trying to create strategy directly for $f
|
||||||
tanslating formula done in X seconds
|
tanslating formula done in X seconds
|
||||||
direct strategy was found.
|
direct strategy was found.
|
||||||
direct strat has 1 states and 0 colors
|
direct strat has 1 states, 2 edges and 0 colors
|
||||||
final strategy has 1 states and 2 edges
|
simplification took X seconds
|
||||||
minimization took X seconds
|
|
||||||
EOF
|
EOF
|
||||||
ltlsynt -f "$f" --outs=b,c --verbose --decompose=0 --verify 2> out
|
ltlsynt -f "$f" --outs=b,c --verbose --decompose=0 --verify 2> out
|
||||||
sed 's/ [0-9.e-]* seconds/ X seconds/g' out > outx
|
sed 's/ [0-9.e-]* seconds/ X seconds/g' out > outx
|
||||||
|
|
@ -615,9 +613,8 @@ cat >exp <<EOF
|
||||||
trying to create strategy directly for (GFb <-> GFa) & G((a & c) | (!a & !c))
|
trying to create strategy directly for (GFb <-> GFa) & G((a & c) | (!a & !c))
|
||||||
tanslating formula done in X seconds
|
tanslating formula done in X seconds
|
||||||
direct strategy was found.
|
direct strategy was found.
|
||||||
direct strat has 1 states and 0 colors
|
direct strat has 1 states, 2 edges and 0 colors
|
||||||
final strategy has 1 states and 2 edges
|
simplification took X seconds
|
||||||
minimization took X seconds
|
|
||||||
EOF
|
EOF
|
||||||
ltlsynt -f '(GFb <-> GFa) && (G((a&c)|(!a&!c)))' --outs=b,c --verbose\
|
ltlsynt -f '(GFb <-> GFa) && (G((a&c)|(!a&!c)))' --outs=b,c --verbose\
|
||||||
--verify --decompose=0 2> out
|
--verify --decompose=0 2> out
|
||||||
|
|
@ -630,9 +627,8 @@ cat >exp <<EOF
|
||||||
trying to create strategy directly for Fa <-> FGb
|
trying to create strategy directly for Fa <-> FGb
|
||||||
tanslating formula done in X seconds
|
tanslating formula done in X seconds
|
||||||
direct strategy was found.
|
direct strategy was found.
|
||||||
direct strat has 2 states and 0 colors
|
direct strat has 2 states, 3 edges and 0 colors
|
||||||
final strategy has 2 states and 3 edges
|
simplification took X seconds
|
||||||
minimization took X seconds
|
|
||||||
EOF
|
EOF
|
||||||
ltlsynt -f "Fa <-> FGb" --outs=b,c --verbose --decompose=0 --verify 2> out
|
ltlsynt -f "Fa <-> FGb" --outs=b,c --verbose --decompose=0 --verify 2> out
|
||||||
sed 's/ [0-9.e-]* seconds/ X seconds/g' out > outx
|
sed 's/ [0-9.e-]* seconds/ X seconds/g' out > outx
|
||||||
|
|
@ -651,6 +647,7 @@ split inputs and outputs done in X seconds
|
||||||
automaton has 9 states
|
automaton has 9 states
|
||||||
solving game with acceptance: Streett 1
|
solving game with acceptance: Streett 1
|
||||||
game solved in X seconds
|
game solved in X seconds
|
||||||
|
simplification took X seconds
|
||||||
AIG circuit was created in X seconds and has 0 latches and 0 gates
|
AIG circuit was created in X seconds and has 0 latches and 0 gates
|
||||||
EOF
|
EOF
|
||||||
ltlsynt -f "Ga <-> Gb" --outs=b --verbose --decompose=0 --verify --aiger 2> out
|
ltlsynt -f "Ga <-> Gb" --outs=b --verbose --decompose=0 --verify --aiger 2> out
|
||||||
|
|
@ -668,6 +665,7 @@ split inputs and outputs done in X seconds
|
||||||
automaton has 4 states
|
automaton has 4 states
|
||||||
solving game with acceptance: Streett 1
|
solving game with acceptance: Streett 1
|
||||||
game solved in X seconds
|
game solved in X seconds
|
||||||
|
simplification took X seconds
|
||||||
trying to create strategy directly for (a | x) -> x
|
trying to create strategy directly for (a | x) -> x
|
||||||
direct strategy might exist but was not found.
|
direct strategy might exist but was not found.
|
||||||
translating formula done in X seconds
|
translating formula done in X seconds
|
||||||
|
|
@ -678,6 +676,7 @@ split inputs and outputs done in X seconds
|
||||||
automaton has 4 states
|
automaton has 4 states
|
||||||
solving game with acceptance: Streett 1
|
solving game with acceptance: Streett 1
|
||||||
game solved in X seconds
|
game solved in X seconds
|
||||||
|
simplification took X seconds
|
||||||
AIG circuit was created in X seconds and has 0 latches and 0 gates
|
AIG circuit was created in X seconds and has 0 latches and 0 gates
|
||||||
EOF
|
EOF
|
||||||
ltlsynt -f '((a|x) & (b | y) & b) => (x & y)' --outs="x,y" --aiger=ite\
|
ltlsynt -f '((a|x) & (b | y) & b) => (x & y)' --outs="x,y" --aiger=ite\
|
||||||
|
|
@ -697,6 +696,7 @@ split inputs and outputs done in X seconds
|
||||||
automaton has 2 states
|
automaton has 2 states
|
||||||
solving game with acceptance: Streett 1
|
solving game with acceptance: Streett 1
|
||||||
game solved in X seconds
|
game solved in X seconds
|
||||||
|
simplification took X seconds
|
||||||
trying to create strategy directly for Gy
|
trying to create strategy directly for Gy
|
||||||
direct strategy might exist but was not found.
|
direct strategy might exist but was not found.
|
||||||
translating formula done in X seconds
|
translating formula done in X seconds
|
||||||
|
|
@ -707,6 +707,7 @@ split inputs and outputs done in X seconds
|
||||||
automaton has 2 states
|
automaton has 2 states
|
||||||
solving game with acceptance: Streett 1
|
solving game with acceptance: Streett 1
|
||||||
game solved in X seconds
|
game solved in X seconds
|
||||||
|
simplification took X seconds
|
||||||
AIG circuit was created in X seconds and has 0 latches and 0 gates
|
AIG circuit was created in X seconds and has 0 latches and 0 gates
|
||||||
EOF
|
EOF
|
||||||
ltlsynt -f 'G!(!x | !y)' --outs="x, y" --aiger=ite --verify --verbose 2> out
|
ltlsynt -f 'G!(!x | !y)' --outs="x, y" --aiger=ite --verify --verbose 2> out
|
||||||
|
|
@ -760,6 +761,7 @@ split inputs and outputs done in X seconds
|
||||||
automaton has 5 states
|
automaton has 5 states
|
||||||
solving game with acceptance: Streett 1
|
solving game with acceptance: Streett 1
|
||||||
game solved in X seconds
|
game solved in X seconds
|
||||||
|
simplification took X seconds
|
||||||
AIG circuit was created in X seconds and has 0 latches and 0 gates
|
AIG circuit was created in X seconds and has 0 latches and 0 gates
|
||||||
EOF
|
EOF
|
||||||
ltlsynt -f '(a & b) U (b & c)' --outs=b,c --decompose=yes --aiger --verbose\
|
ltlsynt -f '(a & b) U (b & c)' --outs=b,c --decompose=yes --aiger --verbose\
|
||||||
|
|
@ -780,6 +782,7 @@ split inputs and outputs done in X seconds
|
||||||
automaton has 4 states
|
automaton has 4 states
|
||||||
solving game with acceptance: Streett 1
|
solving game with acceptance: Streett 1
|
||||||
game solved in X seconds
|
game solved in X seconds
|
||||||
|
simplification took X seconds
|
||||||
trying to create strategy directly for a -> c
|
trying to create strategy directly for a -> c
|
||||||
direct strategy might exist but was not found.
|
direct strategy might exist but was not found.
|
||||||
translating formula done in X seconds
|
translating formula done in X seconds
|
||||||
|
|
@ -790,6 +793,7 @@ split inputs and outputs done in X seconds
|
||||||
automaton has 4 states
|
automaton has 4 states
|
||||||
solving game with acceptance: Streett 1
|
solving game with acceptance: Streett 1
|
||||||
game solved in X seconds
|
game solved in X seconds
|
||||||
|
simplification took X seconds
|
||||||
trying to create strategy directly for a -> d
|
trying to create strategy directly for a -> d
|
||||||
direct strategy might exist but was not found.
|
direct strategy might exist but was not found.
|
||||||
translating formula done in X seconds
|
translating formula done in X seconds
|
||||||
|
|
@ -800,6 +804,7 @@ split inputs and outputs done in X seconds
|
||||||
automaton has 4 states
|
automaton has 4 states
|
||||||
solving game with acceptance: Streett 1
|
solving game with acceptance: Streett 1
|
||||||
game solved in X seconds
|
game solved in X seconds
|
||||||
|
simplification took X seconds
|
||||||
AIG circuit was created in X seconds and has 0 latches and 0 gates
|
AIG circuit was created in X seconds and has 0 latches and 0 gates
|
||||||
EOF
|
EOF
|
||||||
ltlsynt -f 'a => (b & c & d)' --outs=b,c,d, --decompose=yes\
|
ltlsynt -f 'a => (b & c & d)' --outs=b,c,d, --decompose=yes\
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 1,
|
"execution_count": 1,
|
||||||
|
"id": "c54c43ba",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
|
|
@ -12,6 +13,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
|
"id": "0576f64a",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"source": [
|
"source": [
|
||||||
"Additional testing for synthesis"
|
"Additional testing for synthesis"
|
||||||
|
|
@ -19,6 +21,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
|
"id": "e25b7989",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"source": [
|
"source": [
|
||||||
"Testing the different methods to solve"
|
"Testing the different methods to solve"
|
||||||
|
|
@ -27,6 +30,7 @@
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 2,
|
"execution_count": 2,
|
||||||
|
"id": "007107a6",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
|
|
@ -50,6 +54,7 @@
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 3,
|
"execution_count": 3,
|
||||||
|
"id": "a7859f19",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
|
|
@ -57,43 +62,72 @@
|
||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"HOA: v1\n",
|
"HOA: v1\n",
|
||||||
"States: 7\n",
|
"States: 21\n",
|
||||||
"Start: 0\n",
|
"Start: 0\n",
|
||||||
"AP: 3 \"i1\" \"i0\" \"o0\"\n",
|
"AP: 3 \"i1\" \"i0\" \"o0\"\n",
|
||||||
"acc-name: all\n",
|
"acc-name: all\n",
|
||||||
"Acceptance: 0 t\n",
|
"Acceptance: 0 t\n",
|
||||||
"properties: trans-labels explicit-labels state-acc deterministic\n",
|
"properties: trans-labels explicit-labels state-acc deterministic\n",
|
||||||
|
"spot-state-player: 0 0 1 0 1 0 1 0 1 0 1 1 1 1 0 1 1 1 1 1 1\n",
|
||||||
"controllable-AP: 2\n",
|
"controllable-AP: 2\n",
|
||||||
"--BODY--\n",
|
"--BODY--\n",
|
||||||
"State: 0\n",
|
"State: 0\n",
|
||||||
"[!0&!1] 1\n",
|
"[!0&!1] 2\n",
|
||||||
"[!0&1] 2\n",
|
"[!0&1] 4\n",
|
||||||
"[0&!1] 3\n",
|
"[0&!1] 6\n",
|
||||||
"[0&1] 4\n",
|
"[0&1] 8\n",
|
||||||
"State: 1\n",
|
"State: 1\n",
|
||||||
"[0&1&!2] 4\n",
|
"[0&1] 13\n",
|
||||||
"[0&!1&!2] 3\n",
|
"[0&!1] 18\n",
|
||||||
"[!0&1&!2] 2\n",
|
"[!0&1] 19\n",
|
||||||
"[!0&!1&!2] 1\n",
|
"[!0&!1] 20\n",
|
||||||
"State: 2\n",
|
"State: 2\n",
|
||||||
"[0&!2] 4\n",
|
"[t] 1\n",
|
||||||
"[!0&!2] 2\n",
|
|
||||||
"State: 3\n",
|
"State: 3\n",
|
||||||
"[!0&1&2] 5\n",
|
"[0] 13\n",
|
||||||
"[0&1&2] 4\n",
|
"[!0] 19\n",
|
||||||
"[!0&!1&2] 6\n",
|
|
||||||
"[0&!1&2] 3\n",
|
|
||||||
"State: 4\n",
|
"State: 4\n",
|
||||||
"[!0&2] 5\n",
|
"[t] 3\n",
|
||||||
"[0&2] 4\n",
|
|
||||||
"State: 5\n",
|
"State: 5\n",
|
||||||
"[!0&!2] 5\n",
|
"[!0&1] 10\n",
|
||||||
"[0&!2] 4\n",
|
"[0&1] 11\n",
|
||||||
|
"[!0&!1] 15\n",
|
||||||
|
"[0&!1] 16\n",
|
||||||
"State: 6\n",
|
"State: 6\n",
|
||||||
"[!0&1&!2] 5\n",
|
"[t] 5\n",
|
||||||
"[0&1&!2] 4\n",
|
"State: 7\n",
|
||||||
"[!0&!1&!2] 6\n",
|
"[!0] 10\n",
|
||||||
"[0&!1&!2] 3\n",
|
"[0] 11\n",
|
||||||
|
"State: 8\n",
|
||||||
|
"[t] 7\n",
|
||||||
|
"State: 9\n",
|
||||||
|
"[!0] 12\n",
|
||||||
|
"[0] 13\n",
|
||||||
|
"State: 10\n",
|
||||||
|
"[2] 9\n",
|
||||||
|
"State: 11\n",
|
||||||
|
"[2] 7\n",
|
||||||
|
"State: 12\n",
|
||||||
|
"[!2] 9\n",
|
||||||
|
"State: 13\n",
|
||||||
|
"[!2] 7\n",
|
||||||
|
"State: 14\n",
|
||||||
|
"[!0&1] 12\n",
|
||||||
|
"[0&1] 13\n",
|
||||||
|
"[!0&!1] 17\n",
|
||||||
|
"[0&!1] 18\n",
|
||||||
|
"State: 15\n",
|
||||||
|
"[2] 14\n",
|
||||||
|
"State: 16\n",
|
||||||
|
"[2] 5\n",
|
||||||
|
"State: 17\n",
|
||||||
|
"[!2] 14\n",
|
||||||
|
"State: 18\n",
|
||||||
|
"[!2] 5\n",
|
||||||
|
"State: 19\n",
|
||||||
|
"[!2] 3\n",
|
||||||
|
"State: 20\n",
|
||||||
|
"[!2] 1\n",
|
||||||
"--END--\n",
|
"--END--\n",
|
||||||
"HOA: v1\n",
|
"HOA: v1\n",
|
||||||
"States: 7\n",
|
"States: 7\n",
|
||||||
|
|
@ -141,163 +175,137 @@
|
||||||
"acc-name: all\n",
|
"acc-name: all\n",
|
||||||
"Acceptance: 0 t\n",
|
"Acceptance: 0 t\n",
|
||||||
"properties: trans-labels explicit-labels state-acc deterministic\n",
|
"properties: trans-labels explicit-labels state-acc deterministic\n",
|
||||||
"spot-state-player: 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n",
|
"spot-state-player: 0 0 1 0 1 0 1 0 1 0 1 1 1 1 0 1 1 1 1 1 1\n",
|
||||||
"controllable-AP: 2\n",
|
"controllable-AP: 2\n",
|
||||||
"--BODY--\n",
|
"--BODY--\n",
|
||||||
"State: 0\n",
|
"State: 0\n",
|
||||||
"[!0&!1] 7\n",
|
"[!0&!1] 2\n",
|
||||||
"[!0&1] 8\n",
|
"[!0&1] 4\n",
|
||||||
"[0&!1] 9\n",
|
"[0&!1] 6\n",
|
||||||
"[0&1] 10\n",
|
"[0&1] 8\n",
|
||||||
"State: 1\n",
|
"State: 1\n",
|
||||||
"[0&1] 11\n",
|
"[0&1] 13\n",
|
||||||
"[0&!1] 12\n",
|
"[0&!1] 18\n",
|
||||||
"[!0&1] 13\n",
|
"[!0&1] 19\n",
|
||||||
"[!0&!1] 14\n",
|
"[!0&!1] 20\n",
|
||||||
"State: 2\n",
|
"State: 2\n",
|
||||||
"[0] 11\n",
|
"[t] 1\n",
|
||||||
"[!0] 13\n",
|
|
||||||
"State: 3\n",
|
"State: 3\n",
|
||||||
"[!0&1] 15\n",
|
"[0] 13\n",
|
||||||
"[0&1] 16\n",
|
"[!0] 19\n",
|
||||||
|
"State: 4\n",
|
||||||
|
"[t] 3\n",
|
||||||
|
"State: 5\n",
|
||||||
|
"[!0&1] 10\n",
|
||||||
|
"[0&1] 11\n",
|
||||||
|
"[!0&!1] 15\n",
|
||||||
|
"[0&!1] 16\n",
|
||||||
|
"State: 6\n",
|
||||||
|
"[t] 5\n",
|
||||||
|
"State: 7\n",
|
||||||
|
"[!0] 10\n",
|
||||||
|
"[0] 11\n",
|
||||||
|
"State: 8\n",
|
||||||
|
"[t] 7\n",
|
||||||
|
"State: 9\n",
|
||||||
|
"[!0] 12\n",
|
||||||
|
"[0] 13\n",
|
||||||
|
"State: 10\n",
|
||||||
|
"[2] 9\n",
|
||||||
|
"State: 11\n",
|
||||||
|
"[2] 7\n",
|
||||||
|
"State: 12\n",
|
||||||
|
"[!2] 9\n",
|
||||||
|
"State: 13\n",
|
||||||
|
"[!2] 7\n",
|
||||||
|
"State: 14\n",
|
||||||
|
"[!0&1] 12\n",
|
||||||
|
"[0&1] 13\n",
|
||||||
"[!0&!1] 17\n",
|
"[!0&!1] 17\n",
|
||||||
"[0&!1] 18\n",
|
"[0&!1] 18\n",
|
||||||
"State: 4\n",
|
|
||||||
"[!0] 15\n",
|
|
||||||
"[0] 16\n",
|
|
||||||
"State: 5\n",
|
|
||||||
"[!0] 19\n",
|
|
||||||
"[0] 11\n",
|
|
||||||
"State: 6\n",
|
|
||||||
"[!0&1] 19\n",
|
|
||||||
"[0&1] 11\n",
|
|
||||||
"[!0&!1] 20\n",
|
|
||||||
"[0&!1] 12\n",
|
|
||||||
"State: 7\n",
|
|
||||||
"[t] 1\n",
|
|
||||||
"State: 8\n",
|
|
||||||
"[t] 2\n",
|
|
||||||
"State: 9\n",
|
|
||||||
"[t] 3\n",
|
|
||||||
"State: 10\n",
|
|
||||||
"[t] 4\n",
|
|
||||||
"State: 11\n",
|
|
||||||
"[!2] 4\n",
|
|
||||||
"State: 12\n",
|
|
||||||
"[!2] 3\n",
|
|
||||||
"State: 13\n",
|
|
||||||
"[!2] 2\n",
|
|
||||||
"State: 14\n",
|
|
||||||
"[!2] 1\n",
|
|
||||||
"State: 15\n",
|
"State: 15\n",
|
||||||
"[2] 5\n",
|
"[2] 14\n",
|
||||||
"State: 16\n",
|
"State: 16\n",
|
||||||
"[2] 4\n",
|
"[2] 5\n",
|
||||||
"State: 17\n",
|
"State: 17\n",
|
||||||
"[2] 6\n",
|
"[!2] 14\n",
|
||||||
"State: 18\n",
|
"State: 18\n",
|
||||||
"[2] 3\n",
|
|
||||||
"State: 19\n",
|
|
||||||
"[!2] 5\n",
|
"[!2] 5\n",
|
||||||
|
"State: 19\n",
|
||||||
|
"[!2] 3\n",
|
||||||
"State: 20\n",
|
"State: 20\n",
|
||||||
"[!2] 6\n",
|
"[!2] 1\n",
|
||||||
"--END--\n",
|
"--END--\n",
|
||||||
"HOA: v1\n",
|
"HOA: v1\n",
|
||||||
"States: 2\n",
|
"States: 21\n",
|
||||||
"Start: 1\n",
|
"Start: 0\n",
|
||||||
"AP: 3 \"i1\" \"i0\" \"o0\"\n",
|
"AP: 3 \"i1\" \"i0\" \"o0\"\n",
|
||||||
"acc-name: all\n",
|
"acc-name: all\n",
|
||||||
"Acceptance: 0 t\n",
|
"Acceptance: 0 t\n",
|
||||||
"properties: trans-labels explicit-labels state-acc deterministic\n",
|
"properties: trans-labels explicit-labels state-acc deterministic\n",
|
||||||
|
"spot-state-player: 0 0 1 0 1 0 1 0 1 0 1 1 1 1 0 1 1 1 1 1 1\n",
|
||||||
"controllable-AP: 2\n",
|
"controllable-AP: 2\n",
|
||||||
"--BODY--\n",
|
"--BODY--\n",
|
||||||
"State: 0\n",
|
"State: 0\n",
|
||||||
"[0&1&!2] 1\n",
|
"[!0&!1] 2\n",
|
||||||
"[0&!1&!2] 1\n",
|
|
||||||
"[!0&1&!2] 0\n",
|
|
||||||
"[!0&!1&!2] 0\n",
|
|
||||||
"State: 1\n",
|
|
||||||
"[!0&1&2] 0\n",
|
|
||||||
"[0&1&2] 1\n",
|
|
||||||
"[!0&!1&2] 0\n",
|
|
||||||
"[0&!1&2] 1\n",
|
|
||||||
"--END--\n",
|
|
||||||
"HOA: v1\n",
|
|
||||||
"States: 2\n",
|
|
||||||
"Start: 1\n",
|
|
||||||
"AP: 3 \"i1\" \"i0\" \"o0\"\n",
|
|
||||||
"acc-name: all\n",
|
|
||||||
"Acceptance: 0 t\n",
|
|
||||||
"properties: trans-labels explicit-labels state-acc deterministic\n",
|
|
||||||
"controllable-AP: 2\n",
|
|
||||||
"--BODY--\n",
|
|
||||||
"State: 0\n",
|
|
||||||
"[0&1&!2] 1\n",
|
|
||||||
"[0&!1&!2] 1\n",
|
|
||||||
"[!0&1&!2] 0\n",
|
|
||||||
"[!0&!1&!2] 0\n",
|
|
||||||
"State: 1\n",
|
|
||||||
"[!0&1&2] 0\n",
|
|
||||||
"[0&1&2] 1\n",
|
|
||||||
"[!0&!1&2] 0\n",
|
|
||||||
"[0&!1&2] 1\n",
|
|
||||||
"--END--\n",
|
|
||||||
"HOA: v1\n",
|
|
||||||
"States: 6\n",
|
|
||||||
"Start: 1\n",
|
|
||||||
"AP: 3 \"i1\" \"i0\" \"o0\"\n",
|
|
||||||
"acc-name: all\n",
|
|
||||||
"Acceptance: 0 t\n",
|
|
||||||
"properties: trans-labels explicit-labels state-acc deterministic\n",
|
|
||||||
"spot-state-player: 0 0 1 1 1 1\n",
|
|
||||||
"controllable-AP: 2\n",
|
|
||||||
"--BODY--\n",
|
|
||||||
"State: 0\n",
|
|
||||||
"[0&1] 2\n",
|
|
||||||
"[0&!1] 2\n",
|
|
||||||
"[!0&1] 3\n",
|
|
||||||
"[!0&!1] 3\n",
|
|
||||||
"State: 1\n",
|
|
||||||
"[!0&1] 4\n",
|
"[!0&1] 4\n",
|
||||||
"[0&1] 5\n",
|
"[0&!1] 6\n",
|
||||||
"[!0&!1] 4\n",
|
"[0&1] 8\n",
|
||||||
"[0&!1] 5\n",
|
|
||||||
"State: 2\n",
|
|
||||||
"[!2] 1\n",
|
|
||||||
"State: 3\n",
|
|
||||||
"[!2] 0\n",
|
|
||||||
"State: 4\n",
|
|
||||||
"[2] 0\n",
|
|
||||||
"State: 5\n",
|
|
||||||
"[2] 1\n",
|
|
||||||
"--END--\n",
|
|
||||||
"HOA: v1\n",
|
|
||||||
"States: 6\n",
|
|
||||||
"Start: 1\n",
|
|
||||||
"AP: 3 \"i1\" \"i0\" \"o0\"\n",
|
|
||||||
"acc-name: all\n",
|
|
||||||
"Acceptance: 0 t\n",
|
|
||||||
"properties: trans-labels explicit-labels state-acc deterministic\n",
|
|
||||||
"spot-state-player: 0 0 1 1 1 1\n",
|
|
||||||
"controllable-AP: 2\n",
|
|
||||||
"--BODY--\n",
|
|
||||||
"State: 0\n",
|
|
||||||
"[0] 2\n",
|
|
||||||
"[!0] 3\n",
|
|
||||||
"State: 1\n",
|
"State: 1\n",
|
||||||
"[0] 4\n",
|
"[0&1] 13\n",
|
||||||
"[!0] 5\n",
|
"[0&!1] 18\n",
|
||||||
|
"[!0&1] 19\n",
|
||||||
|
"[!0&!1] 20\n",
|
||||||
"State: 2\n",
|
"State: 2\n",
|
||||||
"[!2] 1\n",
|
"[t] 1\n",
|
||||||
"State: 3\n",
|
"State: 3\n",
|
||||||
"[!2] 0\n",
|
"[0] 13\n",
|
||||||
|
"[!0] 19\n",
|
||||||
"State: 4\n",
|
"State: 4\n",
|
||||||
"[2] 1\n",
|
"[t] 3\n",
|
||||||
"State: 5\n",
|
"State: 5\n",
|
||||||
"[2] 0\n",
|
"[!0&1] 10\n",
|
||||||
|
"[0&1] 11\n",
|
||||||
|
"[!0&!1] 15\n",
|
||||||
|
"[0&!1] 16\n",
|
||||||
|
"State: 6\n",
|
||||||
|
"[t] 5\n",
|
||||||
|
"State: 7\n",
|
||||||
|
"[!0] 10\n",
|
||||||
|
"[0] 11\n",
|
||||||
|
"State: 8\n",
|
||||||
|
"[t] 7\n",
|
||||||
|
"State: 9\n",
|
||||||
|
"[!0] 12\n",
|
||||||
|
"[0] 13\n",
|
||||||
|
"State: 10\n",
|
||||||
|
"[2] 9\n",
|
||||||
|
"State: 11\n",
|
||||||
|
"[2] 7\n",
|
||||||
|
"State: 12\n",
|
||||||
|
"[!2] 9\n",
|
||||||
|
"State: 13\n",
|
||||||
|
"[!2] 7\n",
|
||||||
|
"State: 14\n",
|
||||||
|
"[!0&1] 12\n",
|
||||||
|
"[0&1] 13\n",
|
||||||
|
"[!0&!1] 17\n",
|
||||||
|
"[0&!1] 18\n",
|
||||||
|
"State: 15\n",
|
||||||
|
"[2] 14\n",
|
||||||
|
"State: 16\n",
|
||||||
|
"[2] 5\n",
|
||||||
|
"State: 17\n",
|
||||||
|
"[!2] 14\n",
|
||||||
|
"State: 18\n",
|
||||||
|
"[!2] 5\n",
|
||||||
|
"State: 19\n",
|
||||||
|
"[!2] 3\n",
|
||||||
|
"State: 20\n",
|
||||||
|
"[!2] 1\n",
|
||||||
"--END--\n",
|
"--END--\n",
|
||||||
"HOA: v1\n",
|
"HOA: v1\n",
|
||||||
"States: 2\n",
|
"States: 7\n",
|
||||||
"Start: 0\n",
|
"Start: 0\n",
|
||||||
"AP: 3 \"i1\" \"i0\" \"o0\"\n",
|
"AP: 3 \"i1\" \"i0\" \"o0\"\n",
|
||||||
"acc-name: all\n",
|
"acc-name: all\n",
|
||||||
|
|
@ -306,36 +314,277 @@
|
||||||
"controllable-AP: 2\n",
|
"controllable-AP: 2\n",
|
||||||
"--BODY--\n",
|
"--BODY--\n",
|
||||||
"State: 0\n",
|
"State: 0\n",
|
||||||
"[0&2] 0\n",
|
"[!0&!1] 1\n",
|
||||||
"[!0&2] 1\n",
|
"[!0&1] 2\n",
|
||||||
|
"[0&!1] 3\n",
|
||||||
|
"[0&1] 4\n",
|
||||||
"State: 1\n",
|
"State: 1\n",
|
||||||
"[0&!2] 0\n",
|
"[0&1&!2] 4\n",
|
||||||
"[!0&!2] 1\n",
|
"[0&!1&!2] 3\n",
|
||||||
|
"[!0&1&!2] 2\n",
|
||||||
|
"[!0&!1&!2] 1\n",
|
||||||
|
"State: 2\n",
|
||||||
|
"[0&!2] 4\n",
|
||||||
|
"[!0&!2] 2\n",
|
||||||
|
"State: 3\n",
|
||||||
|
"[!0&1&2] 5\n",
|
||||||
|
"[0&1&2] 4\n",
|
||||||
|
"[!0&!1&2] 6\n",
|
||||||
|
"[0&!1&2] 3\n",
|
||||||
|
"State: 4\n",
|
||||||
|
"[!0&2] 5\n",
|
||||||
|
"[0&2] 4\n",
|
||||||
|
"State: 5\n",
|
||||||
|
"[!0&!2] 5\n",
|
||||||
|
"[0&!2] 4\n",
|
||||||
|
"State: 6\n",
|
||||||
|
"[!0&1&!2] 5\n",
|
||||||
|
"[0&1&!2] 4\n",
|
||||||
|
"[!0&!1&!2] 6\n",
|
||||||
|
"[0&!1&!2] 3\n",
|
||||||
"--END--\n",
|
"--END--\n",
|
||||||
"HOA: v1\n",
|
"HOA: v1\n",
|
||||||
"States: 6\n",
|
"States: 21\n",
|
||||||
"Start: 1\n",
|
"Start: 0\n",
|
||||||
"AP: 3 \"i1\" \"i0\" \"o0\"\n",
|
"AP: 3 \"i1\" \"i0\" \"o0\"\n",
|
||||||
"acc-name: all\n",
|
"acc-name: all\n",
|
||||||
"Acceptance: 0 t\n",
|
"Acceptance: 0 t\n",
|
||||||
"properties: trans-labels explicit-labels state-acc deterministic\n",
|
"properties: trans-labels explicit-labels state-acc deterministic\n",
|
||||||
"spot-state-player: 0 0 1 1 1 1\n",
|
"spot-state-player: 0 0 1 0 1 0 1 0 1 0 1 1 1 1 0 1 1 1 1 1 1\n",
|
||||||
"controllable-AP: 2\n",
|
"controllable-AP: 2\n",
|
||||||
"--BODY--\n",
|
"--BODY--\n",
|
||||||
"State: 0\n",
|
"State: 0\n",
|
||||||
"[0] 2\n",
|
"[!0&!1] 2\n",
|
||||||
"[!0] 3\n",
|
"[!0&1] 4\n",
|
||||||
|
"[0&!1] 6\n",
|
||||||
|
"[0&1] 8\n",
|
||||||
"State: 1\n",
|
"State: 1\n",
|
||||||
"[0] 4\n",
|
"[0&1] 13\n",
|
||||||
"[!0] 5\n",
|
"[0&!1] 18\n",
|
||||||
|
"[!0&1] 19\n",
|
||||||
|
"[!0&!1] 20\n",
|
||||||
"State: 2\n",
|
"State: 2\n",
|
||||||
"[!2] 1\n",
|
"[t] 1\n",
|
||||||
"State: 3\n",
|
"State: 3\n",
|
||||||
"[!2] 0\n",
|
"[0] 13\n",
|
||||||
|
"[!0] 19\n",
|
||||||
"State: 4\n",
|
"State: 4\n",
|
||||||
"[2] 1\n",
|
"[t] 3\n",
|
||||||
"State: 5\n",
|
"State: 5\n",
|
||||||
"[2] 0\n",
|
"[!0&1] 10\n",
|
||||||
|
"[0&1] 11\n",
|
||||||
|
"[!0&!1] 15\n",
|
||||||
|
"[0&!1] 16\n",
|
||||||
|
"State: 6\n",
|
||||||
|
"[t] 5\n",
|
||||||
|
"State: 7\n",
|
||||||
|
"[!0] 10\n",
|
||||||
|
"[0] 11\n",
|
||||||
|
"State: 8\n",
|
||||||
|
"[t] 7\n",
|
||||||
|
"State: 9\n",
|
||||||
|
"[!0] 12\n",
|
||||||
|
"[0] 13\n",
|
||||||
|
"State: 10\n",
|
||||||
|
"[2] 9\n",
|
||||||
|
"State: 11\n",
|
||||||
|
"[2] 7\n",
|
||||||
|
"State: 12\n",
|
||||||
|
"[!2] 9\n",
|
||||||
|
"State: 13\n",
|
||||||
|
"[!2] 7\n",
|
||||||
|
"State: 14\n",
|
||||||
|
"[!0&1] 12\n",
|
||||||
|
"[0&1] 13\n",
|
||||||
|
"[!0&!1] 17\n",
|
||||||
|
"[0&!1] 18\n",
|
||||||
|
"State: 15\n",
|
||||||
|
"[2] 14\n",
|
||||||
|
"State: 16\n",
|
||||||
|
"[2] 5\n",
|
||||||
|
"State: 17\n",
|
||||||
|
"[!2] 14\n",
|
||||||
|
"State: 18\n",
|
||||||
|
"[!2] 5\n",
|
||||||
|
"State: 19\n",
|
||||||
|
"[!2] 3\n",
|
||||||
|
"State: 20\n",
|
||||||
|
"[!2] 1\n",
|
||||||
|
"--END--\n",
|
||||||
|
"HOA: v1\n",
|
||||||
|
"States: 21\n",
|
||||||
|
"Start: 0\n",
|
||||||
|
"AP: 3 \"i1\" \"i0\" \"o0\"\n",
|
||||||
|
"acc-name: all\n",
|
||||||
|
"Acceptance: 0 t\n",
|
||||||
|
"properties: trans-labels explicit-labels state-acc deterministic\n",
|
||||||
|
"spot-state-player: 0 0 1 0 1 0 1 0 1 0 1 1 1 1 0 1 1 1 1 1 1\n",
|
||||||
|
"controllable-AP: 2\n",
|
||||||
|
"--BODY--\n",
|
||||||
|
"State: 0\n",
|
||||||
|
"[!0&!1] 2\n",
|
||||||
|
"[!0&1] 4\n",
|
||||||
|
"[0&!1] 6\n",
|
||||||
|
"[0&1] 8\n",
|
||||||
|
"State: 1\n",
|
||||||
|
"[0&1] 13\n",
|
||||||
|
"[0&!1] 18\n",
|
||||||
|
"[!0&1] 19\n",
|
||||||
|
"[!0&!1] 20\n",
|
||||||
|
"State: 2\n",
|
||||||
|
"[t] 1\n",
|
||||||
|
"State: 3\n",
|
||||||
|
"[0] 13\n",
|
||||||
|
"[!0] 19\n",
|
||||||
|
"State: 4\n",
|
||||||
|
"[t] 3\n",
|
||||||
|
"State: 5\n",
|
||||||
|
"[!0&1] 10\n",
|
||||||
|
"[0&1] 11\n",
|
||||||
|
"[!0&!1] 15\n",
|
||||||
|
"[0&!1] 16\n",
|
||||||
|
"State: 6\n",
|
||||||
|
"[t] 5\n",
|
||||||
|
"State: 7\n",
|
||||||
|
"[!0] 10\n",
|
||||||
|
"[0] 11\n",
|
||||||
|
"State: 8\n",
|
||||||
|
"[t] 7\n",
|
||||||
|
"State: 9\n",
|
||||||
|
"[!0] 12\n",
|
||||||
|
"[0] 13\n",
|
||||||
|
"State: 10\n",
|
||||||
|
"[2] 9\n",
|
||||||
|
"State: 11\n",
|
||||||
|
"[2] 7\n",
|
||||||
|
"State: 12\n",
|
||||||
|
"[!2] 9\n",
|
||||||
|
"State: 13\n",
|
||||||
|
"[!2] 7\n",
|
||||||
|
"State: 14\n",
|
||||||
|
"[!0&1] 12\n",
|
||||||
|
"[0&1] 13\n",
|
||||||
|
"[!0&!1] 17\n",
|
||||||
|
"[0&!1] 18\n",
|
||||||
|
"State: 15\n",
|
||||||
|
"[2] 14\n",
|
||||||
|
"State: 16\n",
|
||||||
|
"[2] 5\n",
|
||||||
|
"State: 17\n",
|
||||||
|
"[!2] 14\n",
|
||||||
|
"State: 18\n",
|
||||||
|
"[!2] 5\n",
|
||||||
|
"State: 19\n",
|
||||||
|
"[!2] 3\n",
|
||||||
|
"State: 20\n",
|
||||||
|
"[!2] 1\n",
|
||||||
|
"--END--\n",
|
||||||
|
"HOA: v1\n",
|
||||||
|
"States: 7\n",
|
||||||
|
"Start: 0\n",
|
||||||
|
"AP: 3 \"i1\" \"i0\" \"o0\"\n",
|
||||||
|
"acc-name: all\n",
|
||||||
|
"Acceptance: 0 t\n",
|
||||||
|
"properties: trans-labels explicit-labels state-acc deterministic\n",
|
||||||
|
"controllable-AP: 2\n",
|
||||||
|
"--BODY--\n",
|
||||||
|
"State: 0\n",
|
||||||
|
"[!0&!1] 1\n",
|
||||||
|
"[!0&1] 2\n",
|
||||||
|
"[0&!1] 3\n",
|
||||||
|
"[0&1] 4\n",
|
||||||
|
"State: 1\n",
|
||||||
|
"[0&1&!2] 4\n",
|
||||||
|
"[0&!1&!2] 3\n",
|
||||||
|
"[!0&1&!2] 2\n",
|
||||||
|
"[!0&!1&!2] 1\n",
|
||||||
|
"State: 2\n",
|
||||||
|
"[0&!2] 4\n",
|
||||||
|
"[!0&!2] 2\n",
|
||||||
|
"State: 3\n",
|
||||||
|
"[!0&1&2] 5\n",
|
||||||
|
"[0&1&2] 4\n",
|
||||||
|
"[!0&!1&2] 6\n",
|
||||||
|
"[0&!1&2] 3\n",
|
||||||
|
"State: 4\n",
|
||||||
|
"[!0&2] 5\n",
|
||||||
|
"[0&2] 4\n",
|
||||||
|
"State: 5\n",
|
||||||
|
"[!0&!2] 5\n",
|
||||||
|
"[0&!2] 4\n",
|
||||||
|
"State: 6\n",
|
||||||
|
"[!0&1&!2] 5\n",
|
||||||
|
"[0&1&!2] 4\n",
|
||||||
|
"[!0&!1&!2] 6\n",
|
||||||
|
"[0&!1&!2] 3\n",
|
||||||
|
"--END--\n",
|
||||||
|
"HOA: v1\n",
|
||||||
|
"States: 21\n",
|
||||||
|
"Start: 0\n",
|
||||||
|
"AP: 3 \"i1\" \"i0\" \"o0\"\n",
|
||||||
|
"acc-name: all\n",
|
||||||
|
"Acceptance: 0 t\n",
|
||||||
|
"properties: trans-labels explicit-labels state-acc deterministic\n",
|
||||||
|
"spot-state-player: 0 0 1 0 1 0 1 0 1 0 1 1 1 1 0 1 1 1 1 1 1\n",
|
||||||
|
"controllable-AP: 2\n",
|
||||||
|
"--BODY--\n",
|
||||||
|
"State: 0\n",
|
||||||
|
"[!0&!1] 2\n",
|
||||||
|
"[!0&1] 4\n",
|
||||||
|
"[0&!1] 6\n",
|
||||||
|
"[0&1] 8\n",
|
||||||
|
"State: 1\n",
|
||||||
|
"[0&1] 13\n",
|
||||||
|
"[0&!1] 18\n",
|
||||||
|
"[!0&1] 19\n",
|
||||||
|
"[!0&!1] 20\n",
|
||||||
|
"State: 2\n",
|
||||||
|
"[t] 1\n",
|
||||||
|
"State: 3\n",
|
||||||
|
"[0] 13\n",
|
||||||
|
"[!0] 19\n",
|
||||||
|
"State: 4\n",
|
||||||
|
"[t] 3\n",
|
||||||
|
"State: 5\n",
|
||||||
|
"[!0&1] 10\n",
|
||||||
|
"[0&1] 11\n",
|
||||||
|
"[!0&!1] 15\n",
|
||||||
|
"[0&!1] 16\n",
|
||||||
|
"State: 6\n",
|
||||||
|
"[t] 5\n",
|
||||||
|
"State: 7\n",
|
||||||
|
"[!0] 10\n",
|
||||||
|
"[0] 11\n",
|
||||||
|
"State: 8\n",
|
||||||
|
"[t] 7\n",
|
||||||
|
"State: 9\n",
|
||||||
|
"[!0] 12\n",
|
||||||
|
"[0] 13\n",
|
||||||
|
"State: 10\n",
|
||||||
|
"[2] 9\n",
|
||||||
|
"State: 11\n",
|
||||||
|
"[2] 7\n",
|
||||||
|
"State: 12\n",
|
||||||
|
"[!2] 9\n",
|
||||||
|
"State: 13\n",
|
||||||
|
"[!2] 7\n",
|
||||||
|
"State: 14\n",
|
||||||
|
"[!0&1] 12\n",
|
||||||
|
"[0&1] 13\n",
|
||||||
|
"[!0&!1] 17\n",
|
||||||
|
"[0&!1] 18\n",
|
||||||
|
"State: 15\n",
|
||||||
|
"[2] 14\n",
|
||||||
|
"State: 16\n",
|
||||||
|
"[2] 5\n",
|
||||||
|
"State: 17\n",
|
||||||
|
"[!2] 14\n",
|
||||||
|
"State: 18\n",
|
||||||
|
"[!2] 5\n",
|
||||||
|
"State: 19\n",
|
||||||
|
"[!2] 3\n",
|
||||||
|
"State: 20\n",
|
||||||
|
"[!2] 1\n",
|
||||||
"--END--\n"
|
"--END--\n"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -345,7 +594,7 @@
|
||||||
"mm0 = spot.solved_game_to_mealy(game, si)\n",
|
"mm0 = spot.solved_game_to_mealy(game, si)\n",
|
||||||
"msep0 = spot.solved_game_to_separated_mealy(game, si)\n",
|
"msep0 = spot.solved_game_to_separated_mealy(game, si)\n",
|
||||||
"msplit0 = spot.solved_game_to_split_mealy(game, si)\n",
|
"msplit0 = spot.solved_game_to_split_mealy(game, si)\n",
|
||||||
"assert(spot.is_separated_mealy(mm0)) #Not imposed by the functions pre or post, but results of current impl, change if necessary\n",
|
"assert(spot.is_mealy(mm0))\n",
|
||||||
"assert(spot.is_separated_mealy(msep0))\n",
|
"assert(spot.is_separated_mealy(msep0))\n",
|
||||||
"assert(spot.is_split_mealy(msplit0))\n",
|
"assert(spot.is_split_mealy(msplit0))\n",
|
||||||
"print(mm0.to_str(\"hoa\"))\n",
|
"print(mm0.to_str(\"hoa\"))\n",
|
||||||
|
|
@ -355,7 +604,7 @@
|
||||||
"mm2 = spot.solved_game_to_mealy(game, si)\n",
|
"mm2 = spot.solved_game_to_mealy(game, si)\n",
|
||||||
"msep2 = spot.solved_game_to_separated_mealy(game, si)\n",
|
"msep2 = spot.solved_game_to_separated_mealy(game, si)\n",
|
||||||
"msplit2 = spot.solved_game_to_split_mealy(game, si)\n",
|
"msplit2 = spot.solved_game_to_split_mealy(game, si)\n",
|
||||||
"assert(spot.is_separated_mealy(mm2)) #Not imposed by the functions pre or post, but results of current impl, change if necessary\n",
|
"assert(spot.is_mealy(mm2))\n",
|
||||||
"assert(spot.is_separated_mealy(msep2))\n",
|
"assert(spot.is_separated_mealy(msep2))\n",
|
||||||
"assert(spot.is_split_mealy(msplit2))\n",
|
"assert(spot.is_split_mealy(msplit2))\n",
|
||||||
"print(mm2.to_str(\"hoa\"))\n",
|
"print(mm2.to_str(\"hoa\"))\n",
|
||||||
|
|
@ -365,7 +614,7 @@
|
||||||
"mm3 = spot.solved_game_to_mealy(game, si)\n",
|
"mm3 = spot.solved_game_to_mealy(game, si)\n",
|
||||||
"msep3 = spot.solved_game_to_separated_mealy(game, si)\n",
|
"msep3 = spot.solved_game_to_separated_mealy(game, si)\n",
|
||||||
"msplit3 = spot.solved_game_to_split_mealy(game, si)\n",
|
"msplit3 = spot.solved_game_to_split_mealy(game, si)\n",
|
||||||
"assert(spot.is_split_mealy(mm3)) #Not imposed by the functions pre or post, but results of current impl, change if necessary\n",
|
"assert(spot.is_mealy(mm3))\n",
|
||||||
"assert(spot.is_separated_mealy(msep3))\n",
|
"assert(spot.is_separated_mealy(msep3))\n",
|
||||||
"assert(spot.is_split_mealy(msplit3))\n",
|
"assert(spot.is_split_mealy(msplit3))\n",
|
||||||
"print(mm3.to_str(\"hoa\"))\n",
|
"print(mm3.to_str(\"hoa\"))\n",
|
||||||
|
|
@ -376,31 +625,48 @@
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 4,
|
"execution_count": 4,
|
||||||
|
"id": "fb57ac53",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"mus0 = spot.unsplit_mealy(msplit0)\n",
|
"mus0 = spot.unsplit_mealy(msplit0)\n",
|
||||||
"mus2 = spot.unsplit_mealy(msplit2)\n",
|
"mus2 = spot.unsplit_mealy(msplit2)\n",
|
||||||
"mus3 = spot.unsplit_mealy(msplit3)\n",
|
"mus3 = spot.unsplit_mealy(msplit3)"
|
||||||
"mmus3 = spot.unsplit_mealy(mm3)"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 5,
|
"execution_count": 5,
|
||||||
|
"id": "40fc65b5",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"assert(mm0.equivalent_to(msep0))\n",
|
"assert(mus0.equivalent_to(msep0))"
|
||||||
"assert(mm0.equivalent_to(mus0))\n",
|
]
|
||||||
"assert(mm2.equivalent_to(msep2))\n",
|
},
|
||||||
"assert(mm2.equivalent_to(mus2))\n",
|
{
|
||||||
"assert(mmus3.equivalent_to(msep3))\n",
|
"cell_type": "code",
|
||||||
"assert(mmus3.equivalent_to(mus3))"
|
"execution_count": 6,
|
||||||
|
"id": "f6d8b29c",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"assert(mus2.equivalent_to(msep2))"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 7,
|
||||||
|
"id": "db8d47f2",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"assert(mus3.equivalent_to(msep3))"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
|
"id": "c19beeb0",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"source": [
|
"source": [
|
||||||
"Testing related to #495"
|
"Testing related to #495"
|
||||||
|
|
@ -408,7 +674,8 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 6,
|
"execution_count": 8,
|
||||||
|
"id": "3736cd1b",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
|
|
@ -470,10 +737,10 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fee3716f7b0> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7458055570> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 6,
|
"execution_count": 8,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"output_type": "execute_result"
|
"output_type": "execute_result"
|
||||||
}
|
}
|
||||||
|
|
@ -486,7 +753,8 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 7,
|
"execution_count": 9,
|
||||||
|
"id": "da6a7802",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
|
|
@ -552,10 +820,10 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fee3716f7b0> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7458055570> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 7,
|
"execution_count": 9,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"output_type": "execute_result"
|
"output_type": "execute_result"
|
||||||
}
|
}
|
||||||
|
|
@ -567,7 +835,8 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 8,
|
"execution_count": 10,
|
||||||
|
"id": "987219a4",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
|
|
@ -675,10 +944,10 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fee3716f630> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f74580553c0> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 8,
|
"execution_count": 10,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"output_type": "execute_result"
|
"output_type": "execute_result"
|
||||||
}
|
}
|
||||||
|
|
@ -691,7 +960,8 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 9,
|
"execution_count": 11,
|
||||||
|
"id": "958d81f2",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
|
|
@ -772,10 +1042,10 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fee36703f60> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f743a5ca6c0> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 9,
|
"execution_count": 11,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"output_type": "execute_result"
|
"output_type": "execute_result"
|
||||||
}
|
}
|
||||||
|
|
@ -798,7 +1068,8 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 10,
|
"execution_count": 12,
|
||||||
|
"id": "078bb43e",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
|
|
@ -939,10 +1210,10 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fee3716f930> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7458059f90> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 10,
|
"execution_count": 12,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"output_type": "execute_result"
|
"output_type": "execute_result"
|
||||||
}
|
}
|
||||||
|
|
@ -955,7 +1226,8 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 11,
|
"execution_count": 13,
|
||||||
|
"id": "05b4a138",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
|
|
@ -1147,10 +1419,10 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fee3716fa20> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7458055870> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 11,
|
"execution_count": 13,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"output_type": "execute_result"
|
"output_type": "execute_result"
|
||||||
}
|
}
|
||||||
|
|
@ -1164,7 +1436,7 @@
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"kernelspec": {
|
"kernelspec": {
|
||||||
"display_name": "Python 3",
|
"display_name": "Python 3 (ipykernel)",
|
||||||
"language": "python",
|
"language": "python",
|
||||||
"name": "python3"
|
"name": "python3"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,8 @@
|
||||||
"source": [
|
"source": [
|
||||||
"import spot\n",
|
"import spot\n",
|
||||||
"spot.setup()\n",
|
"spot.setup()\n",
|
||||||
"from spot.jupyter import display_inline"
|
"from spot.jupyter import display_inline\n",
|
||||||
|
"import time"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -696,7 +697,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f05083f22a0> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7a0c2640c0> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -1668,7 +1669,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.jupyter.SVG object>"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7a0c264e40> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -1855,7 +1856,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.jupyter.SVG object>"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7a0c264d50> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -1992,7 +1993,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.jupyter.SVG object>"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7a0c2643c0> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -2085,7 +2086,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.jupyter.SVG object>"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7a0c264a20> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -2178,7 +2179,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.jupyter.SVG object>"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7a0c264ea0> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -2315,7 +2316,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.jupyter.SVG object>"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7a0c2646f0> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -2342,8 +2343,9 @@
|
||||||
"for i in range(6):\n",
|
"for i in range(6):\n",
|
||||||
" print(\"simplification lvl \", descr[i])\n",
|
" print(\"simplification lvl \", descr[i])\n",
|
||||||
" si.minimize_lvl = i\n",
|
" si.minimize_lvl = i\n",
|
||||||
" mealy = spot.solved_game_to_separated_mealy(game, si)\n",
|
" mealy = spot.solved_game_to_mealy(game, si)\n",
|
||||||
" display(mealy.show())"
|
" spot.simplify_mealy_here(mealy, si.minimize_lvl, False)\n",
|
||||||
|
" display(mealy)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -2714,7 +2716,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.aig; proxy of <Swig Object of type 'spot::aig_ptr *' at 0x7f05083a6900> >"
|
"<spot.aig; proxy of <Swig Object of type 'spot::aig_ptr *' at 0x7f7a0c2640f0> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -3027,7 +3029,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f05082c7a20> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7a0c009f00> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -3042,6 +3044,203 @@
|
||||||
"<!-- Generated by graphviz version 2.43.0 (0)\n",
|
"<!-- Generated by graphviz version 2.43.0 (0)\n",
|
||||||
" -->\n",
|
" -->\n",
|
||||||
"<!-- Pages: 1 -->\n",
|
"<!-- Pages: 1 -->\n",
|
||||||
|
"<svg width=\"380pt\" height=\"151pt\"\n",
|
||||||
|
" viewBox=\"0.00 0.00 380.00 151.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
|
||||||
|
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 147)\">\n",
|
||||||
|
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-147 376,-147 376,4 -4,4\"/>\n",
|
||||||
|
"<text text-anchor=\"start\" x=\"183\" y=\"-127.8\" font-family=\"Lato\" font-size=\"14.00\">t</text>\n",
|
||||||
|
"<text text-anchor=\"start\" x=\"175\" y=\"-112.8\" font-family=\"Lato\" font-size=\"14.00\">[all]</text>\n",
|
||||||
|
"<!-- I -->\n",
|
||||||
|
"<!-- 0 -->\n",
|
||||||
|
"<g id=\"node2\" class=\"node\">\n",
|
||||||
|
"<title>0</title>\n",
|
||||||
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-60\" rx=\"18\" ry=\"18\"/>\n",
|
||||||
|
"<text text-anchor=\"middle\" x=\"56\" y=\"-56.3\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- I->0 -->\n",
|
||||||
|
"<g id=\"edge1\" class=\"edge\">\n",
|
||||||
|
"<title>I->0</title>\n",
|
||||||
|
"<path fill=\"none\" stroke=\"black\" d=\"M1.15,-60C2.79,-60 17.15,-60 30.63,-60\"/>\n",
|
||||||
|
"<polygon fill=\"black\" stroke=\"black\" points=\"37.94,-60 30.94,-63.15 34.44,-60 30.94,-60 30.94,-60 30.94,-60 34.44,-60 30.94,-56.85 37.94,-60 37.94,-60\"/>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- 2 -->\n",
|
||||||
|
"<g id=\"node3\" class=\"node\">\n",
|
||||||
|
"<title>2</title>\n",
|
||||||
|
"<polygon fill=\"#ffffaa\" stroke=\"black\" points=\"153,-105 126,-87 153,-69 180,-87 153,-105\"/>\n",
|
||||||
|
"<text text-anchor=\"middle\" x=\"153\" y=\"-83.3\" font-family=\"Lato\" font-size=\"14.00\">2</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- 0->2 -->\n",
|
||||||
|
"<g id=\"edge2\" class=\"edge\">\n",
|
||||||
|
"<title>0->2</title>\n",
|
||||||
|
"<path fill=\"none\" stroke=\"black\" d=\"M73.55,-64.7C88.25,-68.88 109.95,-75.05 126.8,-79.84\"/>\n",
|
||||||
|
"<polygon fill=\"black\" stroke=\"black\" points=\"133.7,-81.8 126.1,-82.91 130.33,-80.84 126.96,-79.88 126.96,-79.88 126.96,-79.88 130.33,-80.84 127.82,-76.85 133.7,-81.8 133.7,-81.8\"/>\n",
|
||||||
|
"<text text-anchor=\"start\" x=\"94\" y=\"-77.8\" font-family=\"Lato\" font-size=\"14.00\">i0</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- 4 -->\n",
|
||||||
|
"<g id=\"node4\" class=\"node\">\n",
|
||||||
|
"<title>4</title>\n",
|
||||||
|
"<polygon fill=\"#ffffaa\" stroke=\"black\" points=\"153,-51 126,-33 153,-15 180,-33 153,-51\"/>\n",
|
||||||
|
"<text text-anchor=\"middle\" x=\"153\" y=\"-29.3\" font-family=\"Lato\" font-size=\"14.00\">4</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- 0->4 -->\n",
|
||||||
|
"<g id=\"edge3\" class=\"edge\">\n",
|
||||||
|
"<title>0->4</title>\n",
|
||||||
|
"<path fill=\"none\" stroke=\"black\" d=\"M73.55,-55.3C88.25,-51.12 109.95,-44.95 126.8,-40.16\"/>\n",
|
||||||
|
"<polygon fill=\"black\" stroke=\"black\" points=\"133.7,-38.2 127.82,-43.15 130.33,-39.16 126.96,-40.12 126.96,-40.12 126.96,-40.12 130.33,-39.16 126.1,-37.09 133.7,-38.2 133.7,-38.2\"/>\n",
|
||||||
|
"<text text-anchor=\"start\" x=\"92\" y=\"-52.8\" font-family=\"Lato\" font-size=\"14.00\">!i0</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- 1 -->\n",
|
||||||
|
"<g id=\"node5\" class=\"node\">\n",
|
||||||
|
"<title>1</title>\n",
|
||||||
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"255\" cy=\"-87\" rx=\"18\" ry=\"18\"/>\n",
|
||||||
|
"<text text-anchor=\"middle\" x=\"255\" y=\"-83.3\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- 2->1 -->\n",
|
||||||
|
"<g id=\"edge5\" class=\"edge\">\n",
|
||||||
|
"<title>2->1</title>\n",
|
||||||
|
"<path fill=\"none\" stroke=\"black\" d=\"M180.01,-87C195.43,-87 214.83,-87 229.9,-87\"/>\n",
|
||||||
|
"<polygon fill=\"black\" stroke=\"black\" points=\"236.92,-87 229.92,-90.15 233.42,-87 229.92,-87 229.92,-87 229.92,-87 233.42,-87 229.91,-83.85 236.92,-87 236.92,-87\"/>\n",
|
||||||
|
"<text text-anchor=\"start\" x=\"200\" y=\"-90.8\" font-family=\"Lato\" font-size=\"14.00\">o0</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- 3 -->\n",
|
||||||
|
"<g id=\"node7\" class=\"node\">\n",
|
||||||
|
"<title>3</title>\n",
|
||||||
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"255\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n",
|
||||||
|
"<text text-anchor=\"middle\" x=\"255\" y=\"-14.3\" font-family=\"Lato\" font-size=\"14.00\">3</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- 4->3 -->\n",
|
||||||
|
"<g id=\"edge7\" class=\"edge\">\n",
|
||||||
|
"<title>4->3</title>\n",
|
||||||
|
"<path fill=\"none\" stroke=\"black\" d=\"M175.7,-29.75C191.64,-27.35 213.3,-24.1 229.8,-21.63\"/>\n",
|
||||||
|
"<polygon fill=\"black\" stroke=\"black\" points=\"236.98,-20.55 230.52,-24.71 233.52,-21.07 230.06,-21.59 230.06,-21.59 230.06,-21.59 233.52,-21.07 229.59,-18.48 236.98,-20.55 236.98,-20.55\"/>\n",
|
||||||
|
"<text text-anchor=\"start\" x=\"198\" y=\"-29.8\" font-family=\"Lato\" font-size=\"14.00\">!o0</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- 5 -->\n",
|
||||||
|
"<g id=\"node6\" class=\"node\">\n",
|
||||||
|
"<title>5</title>\n",
|
||||||
|
"<polygon fill=\"#ffffaa\" stroke=\"black\" points=\"345,-105 318,-87 345,-69 372,-87 345,-105\"/>\n",
|
||||||
|
"<text text-anchor=\"middle\" x=\"345\" y=\"-83.3\" font-family=\"Lato\" font-size=\"14.00\">5</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- 1->5 -->\n",
|
||||||
|
"<g id=\"edge4\" class=\"edge\">\n",
|
||||||
|
"<title>1->5</title>\n",
|
||||||
|
"<path fill=\"none\" stroke=\"black\" d=\"M273.39,-87C284.02,-87 297.98,-87 310.68,-87\"/>\n",
|
||||||
|
"<polygon fill=\"black\" stroke=\"black\" points=\"317.97,-87 310.97,-90.15 314.47,-87 310.97,-87 310.97,-87 310.97,-87 314.47,-87 310.97,-83.85 317.97,-87 317.97,-87\"/>\n",
|
||||||
|
"<text text-anchor=\"middle\" x=\"295.5\" y=\"-90.8\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- 5->1 -->\n",
|
||||||
|
"<g id=\"edge8\" class=\"edge\">\n",
|
||||||
|
"<title>5->1</title>\n",
|
||||||
|
"<path fill=\"none\" stroke=\"black\" d=\"M331.15,-77.81C320.54,-71.35 305.02,-64.44 291,-68 286.14,-69.23 281.22,-71.3 276.67,-73.62\"/>\n",
|
||||||
|
"<polygon fill=\"black\" stroke=\"black\" points=\"270.31,-77.13 274.91,-70.99 273.37,-75.44 276.44,-73.74 276.44,-73.74 276.44,-73.74 273.37,-75.44 277.96,-76.5 270.31,-77.13 270.31,-77.13\"/>\n",
|
||||||
|
"<text text-anchor=\"middle\" x=\"295.5\" y=\"-71.8\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- 3->4 -->\n",
|
||||||
|
"<g id=\"edge6\" class=\"edge\">\n",
|
||||||
|
"<title>3->4</title>\n",
|
||||||
|
"<path fill=\"none\" stroke=\"black\" d=\"M238.68,-9.71C227.37,-4.67 211.63,0.09 198,-4 188.42,-6.87 178.99,-12.59 171.34,-18.19\"/>\n",
|
||||||
|
"<polygon fill=\"black\" stroke=\"black\" points=\"165.36,-22.8 168.98,-16.03 168.13,-20.66 170.9,-18.52 170.9,-18.52 170.9,-18.52 168.13,-20.66 172.82,-21.02 165.36,-22.8 165.36,-22.8\"/>\n",
|
||||||
|
"<text text-anchor=\"middle\" x=\"208.5\" y=\"-7.8\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"</svg>\n"
|
||||||
|
],
|
||||||
|
"text/plain": [
|
||||||
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7a0c009180> >"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "display_data"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/html": [
|
||||||
|
"<div style='vertical-align:text-top;display:inline-block;'><?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
|
||||||
|
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
|
||||||
|
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
|
||||||
|
"<!-- Generated by graphviz version 2.43.0 (0)\n",
|
||||||
|
" -->\n",
|
||||||
|
"<!-- Pages: 1 -->\n",
|
||||||
|
"<svg width=\"282pt\" height=\"149pt\"\n",
|
||||||
|
" viewBox=\"0.00 0.00 282.00 148.80\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
|
||||||
|
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 144.8)\">\n",
|
||||||
|
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-144.8 278,-144.8 278,4 -4,4\"/>\n",
|
||||||
|
"<text text-anchor=\"start\" x=\"134\" y=\"-125.6\" font-family=\"Lato\" font-size=\"14.00\">t</text>\n",
|
||||||
|
"<text text-anchor=\"start\" x=\"126\" y=\"-110.6\" font-family=\"Lato\" font-size=\"14.00\">[all]</text>\n",
|
||||||
|
"<!-- I -->\n",
|
||||||
|
"<!-- 0 -->\n",
|
||||||
|
"<g id=\"node2\" class=\"node\">\n",
|
||||||
|
"<title>0</title>\n",
|
||||||
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"56\" cy=\"-57.8\" rx=\"18\" ry=\"18\"/>\n",
|
||||||
|
"<text text-anchor=\"middle\" x=\"56\" y=\"-54.1\" font-family=\"Lato\" font-size=\"14.00\">0</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- I->0 -->\n",
|
||||||
|
"<g id=\"edge1\" class=\"edge\">\n",
|
||||||
|
"<title>I->0</title>\n",
|
||||||
|
"<path fill=\"none\" stroke=\"black\" d=\"M1.15,-57.8C2.79,-57.8 17.15,-57.8 30.63,-57.8\"/>\n",
|
||||||
|
"<polygon fill=\"black\" stroke=\"black\" points=\"37.94,-57.8 30.94,-60.95 34.44,-57.8 30.94,-57.8 30.94,-57.8 30.94,-57.8 34.44,-57.8 30.94,-54.65 37.94,-57.8 37.94,-57.8\"/>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- 2 -->\n",
|
||||||
|
"<g id=\"node3\" class=\"node\">\n",
|
||||||
|
"<title>2</title>\n",
|
||||||
|
"<polygon fill=\"#ffffaa\" stroke=\"black\" points=\"154,-102.8 127,-84.8 154,-66.8 181,-84.8 154,-102.8\"/>\n",
|
||||||
|
"<text text-anchor=\"middle\" x=\"154\" y=\"-81.1\" font-family=\"Lato\" font-size=\"14.00\">2</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- 0->2 -->\n",
|
||||||
|
"<g id=\"edge2\" class=\"edge\">\n",
|
||||||
|
"<title>0->2</title>\n",
|
||||||
|
"<path fill=\"none\" stroke=\"black\" d=\"M72.35,-65.83C78.35,-68.69 85.37,-71.72 92,-73.8 102.08,-76.96 113.4,-79.31 123.53,-81.02\"/>\n",
|
||||||
|
"<polygon fill=\"black\" stroke=\"black\" points=\"130.65,-82.14 123.25,-84.16 127.2,-81.59 123.74,-81.05 123.74,-81.05 123.74,-81.05 127.2,-81.59 124.23,-77.94 130.65,-82.14 130.65,-82.14\"/>\n",
|
||||||
|
"<text text-anchor=\"start\" x=\"94.5\" y=\"-81.6\" font-family=\"Lato\" font-size=\"14.00\">i0</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- 3 -->\n",
|
||||||
|
"<g id=\"node4\" class=\"node\">\n",
|
||||||
|
"<title>3</title>\n",
|
||||||
|
"<polygon fill=\"#ffffaa\" stroke=\"black\" points=\"154,-37.8 127,-19.8 154,-1.8 181,-19.8 154,-37.8\"/>\n",
|
||||||
|
"<text text-anchor=\"middle\" x=\"154\" y=\"-16.1\" font-family=\"Lato\" font-size=\"14.00\">3</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- 0->3 -->\n",
|
||||||
|
"<g id=\"edge3\" class=\"edge\">\n",
|
||||||
|
"<title>0->3</title>\n",
|
||||||
|
"<path fill=\"none\" stroke=\"black\" d=\"M70.17,-46.43C76.42,-41.57 84.21,-36.23 92,-32.8 101.9,-28.44 113.37,-25.5 123.67,-23.54\"/>\n",
|
||||||
|
"<polygon fill=\"black\" stroke=\"black\" points=\"130.58,-22.33 124.23,-26.64 127.13,-22.93 123.69,-23.54 123.69,-23.54 123.69,-23.54 127.13,-22.93 123.15,-20.43 130.58,-22.33 130.58,-22.33\"/>\n",
|
||||||
|
"<text text-anchor=\"start\" x=\"92.5\" y=\"-36.6\" font-family=\"Lato\" font-size=\"14.00\">!i0</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- 2->0 -->\n",
|
||||||
|
"<g id=\"edge5\" class=\"edge\">\n",
|
||||||
|
"<title>2->0</title>\n",
|
||||||
|
"<path fill=\"none\" stroke=\"black\" d=\"M142.06,-74.55C133.71,-67.48 121.55,-58.67 109,-54.8 100.09,-52.05 89.92,-52.01 80.95,-52.93\"/>\n",
|
||||||
|
"<polygon fill=\"black\" stroke=\"black\" points=\"73.75,-53.9 80.27,-49.84 77.22,-53.43 80.69,-52.96 80.69,-52.96 80.69,-52.96 77.22,-53.43 81.11,-56.09 73.75,-53.9 73.75,-53.9\"/>\n",
|
||||||
|
"<text text-anchor=\"start\" x=\"92\" y=\"-58.6\" font-family=\"Lato\" font-size=\"14.00\">o0</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- 1 -->\n",
|
||||||
|
"<g id=\"node5\" class=\"node\">\n",
|
||||||
|
"<title>1</title>\n",
|
||||||
|
"<ellipse fill=\"#ffffaa\" stroke=\"black\" cx=\"256\" cy=\"-19.8\" rx=\"18\" ry=\"18\"/>\n",
|
||||||
|
"<text text-anchor=\"middle\" x=\"256\" y=\"-16.1\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- 3->1 -->\n",
|
||||||
|
"<g id=\"edge6\" class=\"edge\">\n",
|
||||||
|
"<title>3->1</title>\n",
|
||||||
|
"<path fill=\"none\" stroke=\"black\" d=\"M181.01,-19.8C196.43,-19.8 215.83,-19.8 230.9,-19.8\"/>\n",
|
||||||
|
"<polygon fill=\"black\" stroke=\"black\" points=\"237.92,-19.8 230.92,-22.95 234.42,-19.8 230.92,-19.8 230.92,-19.8 230.92,-19.8 234.42,-19.8 230.91,-16.65 237.92,-19.8 237.92,-19.8\"/>\n",
|
||||||
|
"<text text-anchor=\"start\" x=\"199\" y=\"-23.6\" font-family=\"Lato\" font-size=\"14.00\">!o0</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- 1->3 -->\n",
|
||||||
|
"<g id=\"edge4\" class=\"edge\">\n",
|
||||||
|
"<title>1->3</title>\n",
|
||||||
|
"<path fill=\"none\" stroke=\"black\" d=\"M240.28,-10.26C234.25,-6.88 227.04,-3.51 220,-1.8 205.12,1.8 188.48,-2.97 175.76,-8.51\"/>\n",
|
||||||
|
"<polygon fill=\"black\" stroke=\"black\" points=\"169.13,-11.61 174.13,-5.79 172.3,-10.13 175.47,-8.64 175.47,-8.64 175.47,-8.64 172.3,-10.13 176.81,-11.5 169.13,-11.61 169.13,-11.61\"/>\n",
|
||||||
|
"<text text-anchor=\"middle\" x=\"209.5\" y=\"-5.6\" font-family=\"Lato\" font-size=\"14.00\">1</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"</svg>\n",
|
||||||
|
"</div><div style='vertical-align:text-top;display:inline-block;'><?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
|
||||||
|
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
|
||||||
|
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
|
||||||
|
"<!-- Generated by graphviz version 2.43.0 (0)\n",
|
||||||
|
" -->\n",
|
||||||
|
"<!-- Pages: 1 -->\n",
|
||||||
"<svg width=\"229pt\" height=\"85pt\"\n",
|
"<svg width=\"229pt\" height=\"85pt\"\n",
|
||||||
" viewBox=\"0.00 0.00 228.50 85.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
|
" viewBox=\"0.00 0.00 228.50 85.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
|
||||||
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 81)\">\n",
|
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0) translate(4 81)\">\n",
|
||||||
|
|
@ -3099,10 +3298,11 @@
|
||||||
"<text text-anchor=\"start\" x=\"196\" y=\"-61.3\" font-family=\"Lato\" font-size=\"14.00\">!o0</text>\n",
|
"<text text-anchor=\"start\" x=\"196\" y=\"-61.3\" font-family=\"Lato\" font-size=\"14.00\">!o0</text>\n",
|
||||||
"</g>\n",
|
"</g>\n",
|
||||||
"</g>\n",
|
"</g>\n",
|
||||||
"</svg>\n"
|
"</svg>\n",
|
||||||
|
"</div>"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f05083f2300> >"
|
"<IPython.core.display.HTML object>"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -3179,7 +3379,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.aig; proxy of <Swig Object of type 'spot::aig_ptr *' at 0x7f05083f28d0> >"
|
"<spot.aig; proxy of <Swig Object of type 'spot::aig_ptr *' at 0x7f7a0c009ea0> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -3191,8 +3391,10 @@
|
||||||
"spot.solve_game(game)\n",
|
"spot.solve_game(game)\n",
|
||||||
"spot.highlight_strategy(game)\n",
|
"spot.highlight_strategy(game)\n",
|
||||||
"display(game)\n",
|
"display(game)\n",
|
||||||
"mealy = spot.solved_game_to_separated_mealy(game)\n",
|
"mealy = spot.solved_game_to_mealy(game)\n",
|
||||||
"display(mealy)\n",
|
"display(mealy)\n",
|
||||||
|
"spot.simplify_mealy_here(mealy, 2, True)\n",
|
||||||
|
"display_inline(mealy, spot.unsplit_mealy(mealy))\n",
|
||||||
"aig = spot.mealy_machine_to_aig(mealy, \"isop\")\n",
|
"aig = spot.mealy_machine_to_aig(mealy, \"isop\")\n",
|
||||||
"display(aig)"
|
"display(aig)"
|
||||||
]
|
]
|
||||||
|
|
@ -3306,7 +3508,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.aig; proxy of <Swig Object of type 'spot::aig_ptr *' at 0x7f05083a64b0> >"
|
"<spot.aig; proxy of <Swig Object of type 'spot::aig_ptr *' at 0x7f7a0c009690> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -3738,7 +3940,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.aig; proxy of <Swig Object of type 'spot::aig_ptr *' at 0x7f05083f2fc0> >"
|
"<spot.aig; proxy of <Swig Object of type 'spot::aig_ptr *' at 0x7f7a0c3edc30> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -3803,7 +4005,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f05082c7ba0> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7a0c009de0> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -3916,7 +4118,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.aig; proxy of <Swig Object of type 'spot::aig_ptr *' at 0x7f05082cff00> >"
|
"<spot.aig; proxy of <Swig Object of type 'spot::aig_ptr *' at 0x7f7a0c00fe70> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -4096,7 +4298,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.aig; proxy of <Swig Object of type 'spot::aig_ptr *' at 0x7f05082c7660> >"
|
"<spot.aig; proxy of <Swig Object of type 'spot::aig_ptr *' at 0x7f7a0c009a80> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
|
|
@ -4220,7 +4422,7 @@
|
||||||
"</svg>\n"
|
"</svg>\n"
|
||||||
],
|
],
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f05082c7690> >"
|
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f7a0c2640c0> >"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 16,
|
"execution_count": 16,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue