fix several algorithms that incorrectly preserved !weak

This massive set of changes was triggered by issue #546.
In addition to the better handling of !weak, this also adds some
weak properties in a few places.

* spot/twaalgos/product.cc (product_aux): Throw some exception
if an automaton with t or f acceptance has the !weak property.  This
is a cheap sanity check to help detect algorithms that incorrectly
assumed !weak input would necessarily become !weak output.
* spot/twaalgos/hoa.cc (print_hoa): Likewise, also do not assume
that terminal implies very-weak.
* spot/parseaut/parseaut.yy: Add several diagnostics for similar
cases.  E.g., a one-state automaton cannot be declared as !very-weak.
* tests/core/parseaut.test: Check those new diagnostics.
* spot/twa/twa.cc (twa::intersecting_run): Temporary remove the weak
property by setting it to maybe, not to false.
* spot/twaalgos/minimize.cc, spot/twaalgos/parity.cc,
spot/twaalgos/sccfilter.cc, spot/twaalgos/simulation.cc: Account for
the fact that these algorithm may in fact improve the weakness.
* spot/twaalgos/strength.cc: Only look at colors used by the
acceptance condition when deciding weakness.
* spot/twaalgos/synthesis.cc: Declare the strategy as weak.
* bin/randaut.cc: Add weak to automata with t/f acceptance.
* spot/kripke/kripke.hh: Make kripke structures as weak.
* tests/core/acc_word.test, tests/core/alternating.test,
tests/core/complement.test, tests/core/complete.test,
tests/core/ltlsynt.test, tests/core/randomize.test,
tests/core/readsave.test, tests/core/remfin.test,
tests/core/sccsimpl.test, tests/core/strength.test,
tests/core/wdba2.test, tests/ltsmin/kripke.test,
tests/python/automata-io.ipynb, tests/python/automata.ipynb,
tests/python/dbranch.py, tests/python/highlighting.ipynb,
tests/python/kripke.py, tests/python/ltsmin-dve.ipynb,
tests/python/mealy.py, tests/python/simstate.py: Adjust all these test
cases.
* NEWS: Mention the fixes.
This commit is contained in:
Alexandre Duret-Lutz 2023-11-09 22:13:05 +01:00
parent ac05035267
commit 67b5d2aa9a
34 changed files with 287 additions and 164 deletions

12
NEWS
View file

@ -116,6 +116,18 @@ New in spot 2.11.6.dev (not yet released)
presence of unsatisifable or universal acceptance conditions that
were not f or t. (Part of issue #546.)
- Several algorithms were incorrectly dealing with the "!weak"
property. Because they (rightly) assumed that a weak input would
produce a weak output, they also wrongly assumed that a non-weak
output would produce a non-weak output. Unfortunately removing
states or edges in a non-weak automaton can lead a weak automaton.
The incorrect property lead to issue #546. In addition to fixing
several algorithms, product() and print_hoa() will now raise an
exception if automaton with t or f acceptance is declared !weak.
(This cheap check will not catch all automata incorrectly labeled
by !weak, but helps detects some issues nonetheless.)
New in spot 2.11.6 (2023-08-01)
Bug fixes:

View file

@ -385,6 +385,8 @@ main(int argc, char** argv)
if (opt_acceptance)
aut->set_acceptance(accs, code);
if (aut->acc().is_t() || aut->acc().is_f())
aut->prop_weak(true);
if (opt_uniq)
{

View file

@ -1,6 +1,6 @@
// -*- coding: utf-8 -*-
// Copyright (C) 2009, 2010, 2013, 2014, 2016, 2017, 2019, 2020 Laboratoire
// de Recherche et Developpement de l'Epita
// Copyright (C) 2009, 2010, 2013, 2014, 2016, 2017, 2019, 2020, 2023
// Laboratoire de Recherche et Developpement de l'Epita
//
// This file is part of Spot, a model checking library.
//
@ -180,6 +180,7 @@ namespace spot
kripke(const bdd_dict_ptr& d)
: fair_kripke(d)
{
prop_weak(true);
}
virtual ~kripke();

View file

@ -691,6 +691,19 @@ header: format-version header-items
}
if (t != e)
a->prop_terminal(t->second.val);
if (a->acc().is_t() || a->acc().is_f())
{
if (w != e && !w->second.val)
error(w->second.loc, "an automaton with this condition"
" is necessarily weak");
if (iw != e && !iw->second.val)
error(iw->second.loc, "an automaton with this condition"
" is necessarily inherently-weak");
if (vw != e && !vw->second.val
&& (res.states == 0 || res.states == 1))
error(vw->second.loc, "an automaton with 0 or 1 state "
"is necessarily very-weak");
}
auto u = p.find("unambiguous");
if (u != e)
{
@ -2743,6 +2756,17 @@ static void fix_properties(result_& r)
if (r.acc_style == State_Acc ||
(r.acc_style == Mixed_Acc && !r.trans_acc_seen))
r.aut_or_ks->prop_state_acc(true);
if (r.aut_or_ks->acc().is_t() || r.aut_or_ks->acc().is_f())
{
r.aut_or_ks->prop_weak(true);
unsigned ns;
if (r.opts.want_kripke)
ns = r.h->ks->num_states();
else
ns = r.h->aut->num_states();
if (ns == 0 || ns == 1)
r.aut_or_ks->prop_very_weak(true);
}
}
static void check_version(const result_& r)

View file

@ -171,8 +171,8 @@ namespace spot
// for weak automata, otherwise project(g1) would be unable to
// compute the correct marks. See issue #471. It's OK to
// optimize the right part if g2 is weak.
spot::trival g1weak = g1->prop_weak();
std::const_pointer_cast<twa_graph>(g1)->prop_weak(false);
trival g1weak = g1->prop_weak();
std::const_pointer_cast<twa_graph>(g1)->prop_weak(trival::maybe());
auto run = generic_accepting_run(product(g1, g2));
std::const_pointer_cast<twa_graph>(g1)->prop_weak(g1weak);
if (!run)

View file

@ -1,5 +1,5 @@
// -*- coding: utf-8 -*-
// Copyright (C) 2014-2022 Laboratoire de Recherche et
// Copyright (C) 2014-2023 Laboratoire de Recherche et
// Developpement de l'Epita (LRDE).
//
// This file is part of Spot, a model checking library.
@ -507,6 +507,11 @@ namespace spot
}
}
if (SPOT_UNLIKELY(aut->prop_weak().is_false()
&& (aut->acc().is_t() || aut->acc().is_f())))
throw std::runtime_error("print_hoa(): automaton is declared not weak, "
"but the acceptance makes this impossible");
metadata md(aut, implicit_labels, state_labels);
if (acceptance == Hoa_Acceptance_States && !md.has_state_acc)
@ -724,7 +729,7 @@ namespace spot
}
if (aut->prop_terminal())
prop(" terminal");
if (aut->prop_very_weak() && (verbose || aut->prop_terminal() != true))
if (aut->prop_very_weak())
prop(" very-weak");
if (aut->prop_weak() && (verbose || (aut->prop_terminal() != true &&
aut->prop_very_weak() != true)))

View file

@ -556,6 +556,16 @@ namespace spot
// add a quick check inside minimize_dfa.
if (a->prop_terminal())
res->prop_terminal(true);
else if (a->num_states() == 1)
{
// If thie automaton has only one state, check w
for (auto& e: a->out(0))
if (e.cond == bddtrue && a->acc().accepting(e.acc))
{
res->prop_terminal(true);
break;
}
}
return res;
}

View file

@ -1,5 +1,5 @@
// -*- coding: utf-8 -*-
// Copyright (C) 2016, 2018, 2019, 2022 Laboratoire de Recherche et
// Copyright (C) 2016, 2018, 2019, 2022, 2023 Laboratoire de Recherche et
// Développement de l'Epita (LRDE).
//
// This file is part of Spot, a model checking library.
@ -649,6 +649,13 @@ namespace spot
e.acc = acc_cond::mark_t({n});
}
// Reducing the number of colors could turn a non-weak automaton
// into a weak one
if (aut->prop_weak().is_false())
aut->prop_weak(trival::maybe());
if (aut->prop_very_weak().is_false())
aut->prop_very_weak(trival::maybe());
return aut;
}
}

View file

@ -27,6 +27,8 @@
#include <unordered_map>
#include <spot/misc/hash.hh>
using namespace std::string_literals;
namespace spot
{
namespace
@ -102,6 +104,13 @@ namespace spot
enum acc_op { and_acc, or_acc, xor_acc, xnor_acc };
[[noreturn]] static
void report_should_be_weak(const char* what)
{
std::string s = what + " automaton is declared not weak, "
"but the acceptance makes this impossible"s;
throw std::runtime_error(s);
}
static
twa_graph_ptr product_aux(const const_twa_graph_ptr& left,
@ -128,6 +137,13 @@ namespace spot
bool leftweak = left->prop_weak().is_true();
bool rightweak = right->prop_weak().is_true();
if (SPOT_UNLIKELY(!leftweak && left->prop_weak().is_false()
&& (lacc.is_t() || lacc.is_f())))
report_should_be_weak("product: left");
if (SPOT_UNLIKELY(!rightweak && right->prop_weak().is_false()
&& (racc.is_t() || racc.is_f())))
report_should_be_weak("product: right");
// The conjunction of two co-Büchi automata is a co-Büchi automaton.
// The disjunction of two Büchi automata is a Büchi automaton.
//

View file

@ -1,5 +1,5 @@
// -*- coding: utf-8 -*-
// Copyright (C) 2009-2018 Laboratoire de Recherche et Développement
// Copyright (C) 2009-2018, 2023 Laboratoire de Recherche et Développement
// de l'Epita (LRDE).
//
// This file is part of Spot, a model checking library.
@ -428,6 +428,15 @@ namespace spot
res = scc_filter_apply<state_filter
<acc_filter_mask<false, true>>>(aut, given_si);
res->prop_copy(aut, { true, true, false, true, false, true });
if (res->num_edges() != aut->num_edges())
{
if (res->prop_weak().is_false())
res->prop_weak(trival::maybe());
if (res->prop_very_weak().is_false())
res->prop_very_weak(trival::maybe());
}
if (res->prop_weak().is_true() && res->num_states() <= 1)
res->prop_very_weak(true);
return res;
}
@ -496,6 +505,16 @@ namespace spot
if (!given_si)
delete si;
}
else
if (res->num_edges() != aut->num_edges())
{
if (res->prop_weak().is_false())
res->prop_weak(trival::maybe());
if (res->prop_very_weak().is_false())
res->prop_very_weak(trival::maybe());
}
if (res->prop_weak().is_true() && res->num_states() <= 1)
res->prop_very_weak(true);
return res;
}

View file

@ -761,11 +761,19 @@ namespace spot
delete gb;
res->prop_copy(original_,
{ false, // state-based acc forced below
true, // weakness preserved,
true, // weakness preserved
false, true, // determinism improved
true, // completeness preserved
true, // stutter inv.
});
// weakness can actually be improved
if (res->prop_weak().is_false())
res->prop_weak(trival::maybe());
if (res->prop_very_weak().is_false())
res->prop_very_weak(trival::maybe());
if (res->prop_inherently_weak().is_false())
res->prop_inherently_weak(trival::maybe());
// !unambiguous and !semi-deterministic are not preserved
if (!Cosimulation && nb_minato == nb_minterms)
// Note that nb_minato != nb_minterms does not imply

View file

@ -1,6 +1,6 @@
// -*- coding: utf-8 -*-
// Copyright (C) 2010-2011, 2013-2018 Laboratoire de Recherche et
// Développement de l'Epita (LRDE)
// Copyright (C) 2010-2011, 2013-2018, 2023 Laboratoire de Recherche
// et Développement de l'Epita (LRDE)
//
// This file is part of Spot, a model checking library.
//
@ -43,6 +43,8 @@ namespace spot
if (inweak)
si->determine_unknown_acceptance();
acc_cond::mark_t mask = aut->get_acceptance().used_sets();
bool is_inweak = true;
bool is_weak = true;
bool is_single_state_scc = true;
@ -66,9 +68,9 @@ namespace spot
if (first)
{
first = false;
m = t.acc;
m = t.acc & mask;
}
else if (m != t.acc)
else if (m != (t.acc & mask))
{
is_weak = false;
if (!inweak)

View file

@ -1469,6 +1469,9 @@ namespace spot
edge.acc = {};
}
res->set_acceptance(acc_cond::acc_code::t());
res->prop_weak(true);
if (res->prop_terminal().is_false())
res->prop_terminal(trival::maybe());
res->set_named_prop<bdd>("synthesis-outputs", new bdd(output_bdd));
return ret_sol_exists(res);
@ -1478,6 +1481,7 @@ namespace spot
if (!want_strategy)
return ret_sol_exists(nullptr);
auto res = make_twa_graph(dict);
res->prop_weak(true);
bdd output_bdd = bddtrue;
std::set<formula> ins_f = form2props.aps_of(f_g).first;

View file

@ -79,7 +79,7 @@ AP: 2 "b" "a"
acc-name: Buchi
Acceptance: 1 Inf(0)
properties: trans-labels explicit-labels state-acc !complete
properties: deterministic stutter-invariant terminal
properties: deterministic stutter-invariant terminal very-weak
spot.highlight.edges: 1 1 2 1
--BODY--
State: 0 {0}
@ -113,7 +113,7 @@ AP: 2 "a" "b"
acc-name: Buchi
Acceptance: 1 Inf(0)
properties: trans-labels explicit-labels state-acc complete
properties: deterministic stutter-invariant terminal
properties: deterministic stutter-invariant terminal very-weak
spot.highlight.edges: 1 3 2 3 5 3 6 3 7 2 8 2
--BODY--
State: 0 {0}

View file

@ -472,7 +472,7 @@ Start: 0
AP: 1 "a"
acc-name: all
Acceptance: 0 t
properties: trans-labels explicit-labels state-acc deterministic
properties: trans-labels explicit-labels state-acc deterministic weak
--BODY--
State: 0
[!0] 1

View file

@ -1,7 +1,7 @@
#!/bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2015-2019, 2021 Laboratoire de Recherche et Développement de
# l'Epita (LRDE).
# Copyright (C) 2015-2019, 2021, 2023 Laboratoire de Recherche et
# Développement de l'Epita (LRDE).
#
# This file is part of Spot, a model checking library.
#
@ -41,7 +41,7 @@ AP: 0
acc-name: all
Acceptance: 0 t
properties: trans-labels explicit-labels state-acc complete
properties: deterministic
properties: deterministic very-weak
--BODY--
State: 0
[t] 0
@ -74,7 +74,7 @@ AP: 1 "a"
acc-name: co-Buchi
Acceptance: 1 Fin(0)
properties: trans-labels explicit-labels state-acc complete
properties: deterministic weak
properties: deterministic very-weak
--BODY--
State: 0
[0] 2
@ -93,7 +93,7 @@ AP: 1 "a"
acc-name: co-Buchi
Acceptance: 1 Fin(0)
properties: trans-labels explicit-labels state-acc complete
properties: deterministic stutter-invariant weak
properties: deterministic stutter-invariant very-weak
--BODY--
State: 0 {0}
[t] 0

View file

@ -1,6 +1,6 @@
#! /bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2015-2017, 2022 Laboratoire de Recherche et Développement
# Copyright (C) 2015-2017, 2022, 2023 Laboratoire de Recherche et Développement
# de l'Epita (LRDE).
#
# This file is part of Spot, a model checking library.
@ -151,7 +151,7 @@ AP: 1 "a"
acc-name: Buchi
Acceptance: 1 Inf(0)
properties: trans-labels explicit-labels state-acc complete
properties: deterministic
properties: deterministic weak
--BODY--
State: 0 {0}
[0] 1
@ -169,7 +169,7 @@ AP: 1 "a"
acc-name: none
Acceptance: 0 f
properties: trans-labels explicit-labels state-acc complete
properties: deterministic
properties: deterministic weak
--BODY--
State: 0
[t] 1

View file

@ -611,7 +611,7 @@ Start: 0
AP: 3 "c" "a" "b"
acc-name: all
Acceptance: 0 t
properties: trans-labels explicit-labels state-acc deterministic
properties: trans-labels explicit-labels state-acc deterministic weak
controllable-AP: 0
--BODY--
State: 0

View file

@ -1,6 +1,6 @@
#!/bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2014-2018, 2020-2022 Laboratoire de Recherche et
# Copyright (C) 2014-2018, 2020-2023 Laboratoire de Recherche et
# Développement de l'Epita (LRDE).
#
# This file is part of Spot, a model checking library.
@ -664,7 +664,7 @@ Start: 0
AP: 1 "a"
acc-name: all
Acceptance: 0 t
properties: trans-labels explicit-labels state-acc deterministic
properties: trans-labels explicit-labels state-acc deterministic weak
--BODY--
State: 0
[0] 1
@ -1322,7 +1322,7 @@ AP: 2 "a" "b"
acc-name: all
Acceptance: 0 t
properties: trans-labels explicit-labels state-acc complete
properties: deterministic
properties: deterministic weak
--BODY--
State: 0
[0&!1] 0
@ -1778,7 +1778,7 @@ Start: 0
AP: 1 "a"
Acceptance: 1 t
properties: trans-labels explicit-labels trans-acc complete
properties: deterministic
properties: deterministic weak
--BODY--
State: 0 "F(a)"
[0] 1 {0}
@ -1844,7 +1844,7 @@ AP: 1 "a"
acc-name: all
Acceptance: 0 t
properties: trans-labels explicit-labels state-acc complete
properties: deterministic
properties: deterministic weak
--BODY--
State: 0 "F(a)"
[0] 1
@ -2079,6 +2079,15 @@ properties: complete !weak very-weak
--BODY--
State: 0 0
--END--
HOA: v1
States: 1
Start: 0
AP: 0
Acceptance: 0 t
properties: complete !very-weak
--BODY--
State: 0 0
--END--
EOF
expecterr input <<EOF
@ -2091,14 +2100,18 @@ input:36.36-43: 'properties: terminal' contradicts...
input:36.13-28: ... 'properties: !inherently-weak' given here
input:36.36-43: 'properties: terminal' contradicts...
input:36.30-34: ... 'properties: !weak' given here
input:36.30-34: an automaton with this condition is necessarily weak
input:36.13-28: an automaton with this condition is necessarily inherently-weak
input:46.13-28: 'properties: !inherently-weak' contradicts...
input:46.35-43: ... 'properties: very-weak' given here
input:46.30-33: 'properties: weak' contradicts...
input:46.13-28: ... 'properties: !inherently-weak' given here
input:55.22-26: 'properties: !weak' contradicts...
input:55.28-36: ... 'properties: very-weak' given here
input:55.22-26: an automaton with this condition is necessarily weak
input:51.1-9: state 1 is unused and undefined
input:55.13-20: automaton is incomplete because it has undefined states
input:64.22-31: an automaton with 0 or 1 state is necessarily very-weak
EOF

View file

@ -1,7 +1,7 @@
#!/bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2014, 2015, 2017, 2018 Laboratoire de Recherche et
# Développement de l'Epita (LRDE).
# Copyright (C) 2014, 2015, 2017-2018, 2023 Laboratoire de Recherche
# et Développement de l'Epita (LRDE).
#
# This file is part of Spot, a model checking library.
#
@ -113,7 +113,7 @@ Start: 3
AP: 4 "a" "b" "c" "d"
acc-name: all
Acceptance: 0 t
properties: trans-labels explicit-labels state-acc
properties: trans-labels explicit-labels state-acc weak
--BODY--
State: 0 "s4"
[3] 0

View file

@ -636,7 +636,7 @@ Start: 1
AP: 2 "p0" "p1"
acc-name: all
Acceptance: 0 t
properties: trans-labels explicit-labels state-acc
properties: trans-labels explicit-labels state-acc weak
--BODY--
State: 0
State: 1
@ -676,7 +676,7 @@ Start: 0
AP: 2 "p0" "p1"
acc-name: all
Acceptance: 0 t
properties: trans-labels explicit-labels state-acc deterministic
properties: trans-labels explicit-labels state-acc deterministic weak
--BODY--
State: 0
[!0&!1] 1
@ -698,7 +698,7 @@ Start: 0
AP: 2 "p0" "p1"
acc-name: all
Acceptance: 0 t
properties: state-labels explicit-labels state-acc deterministic
properties: state-labels explicit-labels state-acc deterministic weak
--BODY--
State: [!0&!1] 0
1
@ -745,7 +745,7 @@ Start: 0
AP: 2 "p0" "p1"
acc-name: all
Acceptance: 0 t
properties: trans-labels explicit-labels state-acc
properties: trans-labels explicit-labels state-acc weak
--BODY--
State: 0
[!0&!1] 1
@ -762,7 +762,7 @@ Start: 0
AP: 2 "p0" "p1"
acc-name: all
Acceptance: 0 t
properties: trans-labels explicit-labels state-acc deterministic
properties: trans-labels explicit-labels state-acc deterministic weak
--BODY--
State: 0
[!0&!1] 1

View file

@ -1,6 +1,6 @@
#!/bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2015-2018, 2020 Laboratoire de Recherche et
# Copyright (C) 2015-2018, 2020, 2023 Laboratoire de Recherche et
# Développement de l'Epita (LRDE).
#
# This file is part of Spot, a model checking library.
@ -370,7 +370,7 @@ AP: 0
acc-name: all
Acceptance: 0 t
properties: trans-labels explicit-labels state-acc complete
properties: deterministic
properties: deterministic very-weak
--BODY--
State: 0
[t] 0
@ -955,7 +955,7 @@ AP: 0
acc-name: all
Acceptance: 0 t
properties: trans-labels explicit-labels state-acc complete
properties: deterministic
properties: deterministic very-weak
--BODY--
State: 0
[t] 0

View file

@ -1,6 +1,6 @@
#!/bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2011, 2013, 2015, 2018, 2019 Laboratoire de Recherche
# Copyright (C) 2011, 2013, 2015, 2018, 2019, 2023 Laboratoire de Recherche
# et Développement de l'Epita
#
# This file is part of Spot, a model checking library.
@ -316,7 +316,7 @@ AP: 1 "p0"
acc-name: Buchi
Acceptance: 1 Inf(0)
properties: trans-labels explicit-labels state-acc complete
properties: deterministic terminal
properties: deterministic terminal very-weak
--BODY--
State: 0 {0}
[t] 0
@ -331,7 +331,7 @@ AP: 1 "p0"
acc-name: Buchi
Acceptance: 1 Inf(0)
properties: trans-labels explicit-labels state-acc complete
properties: deterministic terminal
properties: deterministic terminal very-weak
--BODY--
State: 0 {0}
[t] 0

View file

@ -1,6 +1,6 @@
#!/bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2015, 2016, 2017 Laboratoire de Recherche et Developpement
# Copyright (C) 2015, 2016, 2017, 2023 Laboratoire de Recherche et Developpement
# de l'Epita
#
# This file is part of Spot, a model checking library.
@ -122,7 +122,7 @@ AP: 2 "a" "b"
acc-name: Buchi
Acceptance: 1 Inf(0)
properties: trans-labels explicit-labels state-acc deterministic
properties: terminal
properties: terminal very-weak
--BODY--
State: 0 {0}
[t] 0
@ -710,7 +710,7 @@ AP: 1 "a"
acc-name: co-Buchi
Acceptance: 1 Fin(0)
properties: trans-labels explicit-labels state-acc complete
properties: deterministic terminal
properties: deterministic terminal very-weak
--BODY--
State: 0
[t] 0

View file

@ -68,6 +68,7 @@ AP: 1 "p1"
acc-name: Buchi
Acceptance: 1 Inf(0)
properties: implicit-labels state-acc complete deterministic terminal
properties: very-weak
--BODY--
State: 0 {0}
0 0
@ -108,7 +109,7 @@ AP: 0
acc-name: Buchi
Acceptance: 1 Inf(0)
properties: trans-labels explicit-labels state-acc colored complete
properties: deterministic terminal
properties: deterministic terminal very-weak
--BODY--
State: 0 {0}
[t] 0

View file

@ -1,7 +1,7 @@
#! /bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2011, 2014, 2015, 2016 Laboratoire de Recherche et Developpement
# de l'Epita (LRDE)
# Copyright (C) 2011, 2014-2016, 2023 Laboratoire de Recherche et
# Developpement de l'Epita (LRDE)
#
# This file is part of Spot, a model checking library.
#

View file

@ -41,7 +41,7 @@
"acc-name: Buchi\n",
"Acceptance: 1 Inf(0)\n",
"properties: trans-labels explicit-labels state-acc deterministic\n",
"properties: stutter-invariant terminal\n",
"properties: stutter-invariant terminal very-weak\n",
"--BODY--\n",
"State: 0 {0}\n",
"[t] 0\n",
@ -202,7 +202,7 @@
"acc-name: Buchi\r\n",
"Acceptance: 1 Inf(0)\r\n",
"properties: trans-labels explicit-labels state-acc deterministic\r\n",
"properties: stutter-invariant terminal\r\n",
"properties: stutter-invariant terminal very-weak\r\n",
"--BODY--\r\n",
"State: 0 {0}\r\n",
"[t] 0\r\n",

View file

@ -33,11 +33,11 @@
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"460pt\" height=\"329pt\"\n",
" viewBox=\"0.00 0.00 460.00 328.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 324.8)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-324.8 456,-324.8 456,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"204.5\" y=\"-290.6\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
"<svg width=\"460pt\" height=\"312pt\"\n",
" viewBox=\"0.00 0.00 460.00 312.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 308)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-308 456,-308 456,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"204.5\" y=\"-288.8\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
@ -178,7 +178,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a002151e0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f773078f870> >"
]
},
"execution_count": 2,
@ -211,10 +211,10 @@
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"343pt\" height=\"360pt\"\n",
" viewBox=\"0.00 0.00 343.40 360.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(0.9259259259259258 0.9259259259259258) rotate(0) translate(4 386)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-386 368.02,-386 368.02,4 -4,4\"/>\n",
"<svg width=\"358pt\" height=\"360pt\"\n",
" viewBox=\"0.00 0.00 358.10 360.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(0.9615384615384615 0.9615384615384615) rotate(0) translate(4 370)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-370 368.02,-370 368.02,4 -4,4\"/>\n",
"<text text-anchor=\"middle\" x=\"182.01\" y=\"-350.8\" font-family=\"Times,serif\" font-size=\"14.00\">[Büchi]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
@ -607,11 +607,11 @@
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"170pt\" height=\"125pt\"\n",
" viewBox=\"0.00 0.00 170.00 124.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 120.8)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-120.8 166,-120.8 166,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"59.5\" y=\"-86.6\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
"<svg width=\"170pt\" height=\"108pt\"\n",
" viewBox=\"0.00 0.00 170.00 108.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 104)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-104 166,-104 166,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"59.5\" y=\"-84.8\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
"<!-- I -->\n",
"<!-- 1 -->\n",
"<g id=\"node2\" class=\"node\">\n",
@ -657,7 +657,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a000cc3c0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f77307ac6c0> >"
]
},
"execution_count": 6,
@ -683,11 +683,11 @@
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"170pt\" height=\"125pt\"\n",
" viewBox=\"0.00 0.00 170.00 124.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 120.8)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-120.8 166,-120.8 166,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"59.5\" y=\"-86.6\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
"<svg width=\"170pt\" height=\"108pt\"\n",
" viewBox=\"0.00 0.00 170.00 108.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 104)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-104 166,-104 166,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"59.5\" y=\"-84.8\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
"<!-- I -->\n",
"<!-- 1 -->\n",
"<g id=\"node2\" class=\"node\">\n",
@ -733,7 +733,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a000cc690> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f77307ac840> >"
]
},
"execution_count": 7,
@ -816,7 +816,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a000cc2a0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f77307ac930> >"
]
},
"execution_count": 8,
@ -872,11 +872,11 @@
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"252pt\" height=\"217pt\"\n",
" viewBox=\"0.00 0.00 252.00 216.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 212.8)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-212.8 248,-212.8 248,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"100.5\" y=\"-178.6\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
"<svg width=\"252pt\" height=\"200pt\"\n",
" viewBox=\"0.00 0.00 252.00 200.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 196)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-196 248,-196 248,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"100.5\" y=\"-176.8\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
@ -983,11 +983,11 @@
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"586pt\" height=\"320pt\"\n",
" viewBox=\"0.00 0.00 585.88 319.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 315.8)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-315.8 581.88,-315.8 581.88,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"267.44\" y=\"-281.6\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
"<svg width=\"586pt\" height=\"303pt\"\n",
" viewBox=\"0.00 0.00 585.88 303.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 299)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-299 581.88,-299 581.88,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"267.44\" y=\"-279.8\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
"<!-- I -->\n",
"<!-- 6 -->\n",
"<g id=\"node2\" class=\"node\">\n",
@ -1349,7 +1349,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a000d42a0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f77307ad320> >"
]
},
"execution_count": 12,
@ -1463,7 +1463,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a000d4630> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f77307ad500> >"
]
},
"execution_count": 13,
@ -1496,11 +1496,11 @@
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"257pt\" height=\"220pt\"\n",
" viewBox=\"0.00 0.00 257.00 219.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 215.8)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-215.8 253,-215.8 253,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"103\" y=\"-181.6\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
"<svg width=\"257pt\" height=\"203pt\"\n",
" viewBox=\"0.00 0.00 257.00 203.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 199)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-199 253,-199 253,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"103\" y=\"-179.8\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
@ -1594,7 +1594,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a000d4c00> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f77307add70> >"
]
},
"execution_count": 14,
@ -1816,7 +1816,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a000d8510> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f77307ae280> >"
]
},
"metadata": {},
@ -1974,7 +1974,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a000d8420> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f77307ae250> >"
]
},
"metadata": {},
@ -2132,7 +2132,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a000d8300> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f77307adda0> >"
]
},
"metadata": {},
@ -2147,11 +2147,11 @@
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"390pt\" height=\"245pt\"\n",
" viewBox=\"0.00 0.00 390.00 244.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 240.8)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-240.8 386,-240.8 386,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"169.5\" y=\"-206.6\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
"<svg width=\"390pt\" height=\"228pt\"\n",
" viewBox=\"0.00 0.00 390.00 228.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 224)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-224 386,-224 386,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"169.5\" y=\"-204.8\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
@ -2280,7 +2280,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a000d8270> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f77307adbc0> >"
]
},
"metadata": {},
@ -2469,7 +2469,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a00215fc0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f77307adad0> >"
]
},
"execution_count": 19,
@ -2495,11 +2495,11 @@
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"173pt\" height=\"125pt\"\n",
" viewBox=\"0.00 0.00 173.00 124.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 120.8)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-120.8 169,-120.8 169,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"61\" y=\"-86.6\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
"<svg width=\"173pt\" height=\"108pt\"\n",
" viewBox=\"0.00 0.00 173.00 108.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 104)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-104 169,-104 169,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"61\" y=\"-84.8\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
@ -2545,7 +2545,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a000e1420> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f77307ad440> >"
]
},
"execution_count": 20,
@ -2582,13 +2582,6 @@
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"no\n"
]
},
{
"data": {
"text/html": [
@ -3016,7 +3009,6 @@
"# Using +1 in the display options is a convenient way to shift the \n",
"# set numbers in the output, as an aid in reading the product.\n",
"a1 = spot.translate('GF(a <-> Xa)')\n",
"print(a1.prop_weak())\n",
"a2 = spot.translate('a U b & GFc')\n",
"display_inline(a1.show('.t'), a2.show('.t+1'))\n",
"# the product should display pairs of states, unless asked not to (using '1').\n",
@ -3045,11 +3037,11 @@
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"169pt\" height=\"125pt\"\n",
" viewBox=\"0.00 0.00 169.00 124.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 120.8)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-120.8 165,-120.8 165,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"59\" y=\"-86.6\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
"<svg width=\"169pt\" height=\"108pt\"\n",
" viewBox=\"0.00 0.00 169.00 108.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 104)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-104 165,-104 165,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"59\" y=\"-84.8\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
@ -3095,7 +3087,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a000ccd50> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f77307af1e0> >"
]
},
"metadata": {},
@ -3195,7 +3187,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a000ccde0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f77307afa20> >"
]
},
"execution_count": 24,
@ -3268,7 +3260,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a000cce70> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f77307ac750> >"
]
},
"execution_count": 25,
@ -3439,7 +3431,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a00215ab0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f77307aef40> >"
]
},
"execution_count": 27,
@ -3472,11 +3464,11 @@
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"169pt\" height=\"125pt\"\n",
" viewBox=\"0.00 0.00 169.00 124.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 120.8)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-120.8 165,-120.8 165,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"59\" y=\"-86.6\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
"<svg width=\"169pt\" height=\"108pt\"\n",
" viewBox=\"0.00 0.00 169.00 108.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 104)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-104 165,-104 165,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"59\" y=\"-84.8\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
@ -3522,7 +3514,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a000ccd50> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f77307af1e0> >"
]
},
"metadata": {},
@ -3537,11 +3529,11 @@
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"194pt\" height=\"125pt\"\n",
" viewBox=\"0.00 0.00 194.00 124.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 120.8)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-120.8 190,-120.8 190,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"71.5\" y=\"-86.6\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
"<svg width=\"194pt\" height=\"108pt\"\n",
" viewBox=\"0.00 0.00 194.00 108.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 104)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-104 190,-104 190,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"71.5\" y=\"-84.8\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
@ -3587,7 +3579,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a000ccd50> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f77307af1e0> >"
]
},
"metadata": {},
@ -3624,11 +3616,11 @@
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Pages: 1 -->\n",
"<svg width=\"218pt\" height=\"125pt\"\n",
" viewBox=\"0.00 0.00 218.00 124.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 120.8)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-120.8 214,-120.8 214,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"83.5\" y=\"-86.6\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
"<svg width=\"218pt\" height=\"108pt\"\n",
" viewBox=\"0.00 0.00 218.00 108.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 104)\">\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-104 214,-104 214,4 -4,4\"/>\n",
"<text text-anchor=\"start\" x=\"83.5\" y=\"-84.8\" font-family=\"Lato\" font-size=\"14.00\">[Büchi]</text>\n",
"<!-- I -->\n",
"<!-- 0 -->\n",
"<g id=\"node2\" class=\"node\">\n",
@ -3674,7 +3666,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f6a000ccd50> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f77307af1e0> >"
]
},
"execution_count": 29,
@ -3689,11 +3681,18 @@
" e.cond &= c\n",
"a"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@ -3707,7 +3706,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.2"
"version": "3.11.6"
}
},
"nbformat": 4,

View file

@ -65,7 +65,7 @@ Start: 0
AP: 3 "b" "a" "c"
acc-name: all
Acceptance: 0 t
properties: trans-labels explicit-labels state-acc univ-branch
properties: trans-labels explicit-labels state-acc univ-branch weak
--BODY--
State: 0
[1] 1

View file

@ -506,7 +506,7 @@
"acc-name: Buchi\n",
"Acceptance: 1 Inf(0)\n",
"properties: trans-labels explicit-labels state-acc deterministic\n",
"properties: stutter-invariant terminal\n",
"properties: stutter-invariant terminal very-weak\n",
"--BODY--\n",
"State: 0 {0}\n",
"[t] 0\n",
@ -526,7 +526,7 @@
"acc-name: Buchi\n",
"Acceptance: 1 Inf(0)\n",
"properties: trans-labels explicit-labels state-acc !complete\n",
"properties: deterministic stutter-invariant terminal\n",
"properties: deterministic stutter-invariant terminal very-weak\n",
"spot.highlight.states: 0 0 1 5 2 5\n",
"spot.highlight.edges: 2 1 4 1 5 1 6 2\n",
"--BODY--\n",

View file

@ -1,6 +1,6 @@
# -*- mode: python; coding: utf-8 -*-
# Copyright (C) 2019, 2022 Laboratoire de Recherche et Développement
# de l'Epita (LRDE).
# Copyright (C) 2019, 2022, 2023 Laboratoire de Recherche et
# Développement de l'Epita (LRDE).
#
# This file is part of Spot, a model checking library.
#
@ -45,7 +45,7 @@ Start: 1
AP: 2 "p1" "p2"
acc-name: all
Acceptance: 0 t
properties: state-labels explicit-labels state-acc
properties: state-labels explicit-labels state-acc weak
--BODY--
State: [0&1] 0
0
@ -65,7 +65,7 @@ Start: 1
AP: 2 "p1" "p2"
acc-name: all
Acceptance: 0 t
properties: state-labels explicit-labels state-acc
properties: state-labels explicit-labels state-acc weak
--BODY--
State: [0&1] 0 "s0"
0
@ -83,7 +83,7 @@ Start: 1
AP: 2 "p1" "p2"
acc-name: all
Acceptance: 0 t
properties: state-labels explicit-labels state-acc
properties: state-labels explicit-labels state-acc weak
--BODY--
State: [0&1] 0 "s0"
0

View file

@ -1773,7 +1773,7 @@
"AP: 3 \"a<1\" \"b>2\" \"dead\"\n",
"acc-name: all\n",
"Acceptance: 0 t\n",
"properties: state-labels explicit-labels state-acc\n",
"properties: state-labels explicit-labels state-acc weak\n",
"--BODY--\n",
"State: [0&!1&!2] 0 \"a=0, b=0, Q=0\"\n",
"1 2\n",

View file

@ -1,6 +1,6 @@
#!/usr/bin/python3
# -*- mode: python; coding: utf-8 -*-
# Copyright (C) 2021, 2022 Laboratoire de Recherche et Développement de
# Copyright (C) 2021-2023 Laboratoire de Recherche et Développement de
# l'EPITA.
#
# This file is part of Spot, a model checking library.
@ -557,7 +557,7 @@ Start: 0
AP: 2 "a" "b"
acc-name: all
Acceptance: 0 t
properties: trans-labels explicit-labels state-acc deterministic
properties: trans-labels explicit-labels state-acc deterministic weak
controllable-AP: 1
--BODY--
State: 0
@ -598,7 +598,7 @@ Start: 0
AP: 2 "a" "b"
acc-name: all
Acceptance: 0 t
properties: trans-labels explicit-labels state-acc deterministic
properties: trans-labels explicit-labels state-acc deterministic weak
controllable-AP: 1
--BODY--
State: 0

View file

@ -1,5 +1,5 @@
# -*- mode: python; coding: utf-8 -*-
# Copyright (C) 2015, 2017-2018, 2020-2022 Laboratoire de Recherche
# Copyright (C) 2015, 2017-2018, 2020-2023 Laboratoire de Recherche
# et Développement de l'Epita
#
# This file is part of Spot, a model checking library.
@ -539,10 +539,10 @@ States: 1
Start: 0
AP: 1 "a"
Acceptance: 1 t
properties: trans-labels explicit-labels state-acc colored
properties: deterministic
properties: trans-labels explicit-labels state-acc deterministic
properties: very-weak
--BODY--
State: 0 {0}
State: 0
[0] 0
--END--''')