modernize some Python code

Since we now require Python 3.6, we can use f-strings instead of
format() to make the code more readable.

* doc/org/tut01.org, doc/org/tut02.org, doc/org/tut03.org,
doc/org/tut21.org, doc/org/tut24.org, doc/org/tut90.org,
python/spot/__init__.py, python/spot/jupyter.py, tests/python/acc.py,
tests/python/acc_cond.ipynb, tests/python/complement_semidet.py,
tests/python/decompose.ipynb, tests/python/formulas.ipynb,
tests/python/highlighting.ipynb, tests/python/ipnbdoctest.py,
tests/python/ltlf.py, tests/python/parity.ipynb,
tests/python/product.ipynb, tests/python/relabel.py,
tests/python/satmin.ipynb, tests/python/stutter-inv.ipynb,
tests/python/twagraph-internals.ipynb, tests/python/zlktree.ipynb: Use
f-strings.
This commit is contained in:
Alexandre Duret-Lutz 2024-03-26 20:35:10 +01:00
parent df44f7a5c2
commit 7ac570fa3f
23 changed files with 292 additions and 327 deletions

View file

@ -389,7 +389,8 @@ In C++ you can enable lenient using one of the Boolean arguments of
Formulas have a custom format specification language that allows you
to easily change the way a formula should be output when using the
=format()= method of strings.
=format()= method of strings, or using [[https://docs.python.org/3/tutorial/inputoutput.html#formatted-string-literals][formatted string litterals]].
#+BEGIN_SRC python
import spot

View file

@ -68,7 +68,7 @@ import spot
m = spot.relabeling_map()
g = spot.relabel('"Proc@Here" U ("var > 10" | "var < 4")', spot.Pnn, m)
for newname, oldname in m.items():
print("#define {} ({})".format(newname.to_str(), oldname.to_str('spin', True)))
print(f"#define {newname.to_str()} ({oldname.to_str('spin', True)})")
print(g.to_str('spin', True))
#+END_SRC

View file

@ -159,9 +159,9 @@ The Python equivalent is similar:
# kindstr() prints the name of the operator
# size() return the number of operands of the operators
print("{}, {} children".format(f.kindstr(), f.size()))
print(f"{f.kindstr()}, {f.size()} children")
# [] accesses each operand
print("left: {f[0]}, right: {f[1]}".format(f=f))
print(f"left: {f[0]}, right: {f[1]}")
# you can also iterate over all operands using a for loop
for child in f:
print(" *", child)

View file

@ -557,9 +557,9 @@ Here is the very same example, but written in Python:
print("Stutter Invariant:", aut.prop_stutter_invariant())
for s in range(0, aut.num_states()):
print("State {}:".format(s))
print(f"State {s}:")
for t in aut.out(s):
print(" edge({} -> {})".format(t.src, t.dst))
print(f" edge({t.src} -> {t.dst})")
# bdd_print_formula() is designed to print on a std::ostream, and
# is inconvenient to use in Python. Instead we use
# bdd_format_formula() as this simply returns a string.

View file

@ -192,22 +192,22 @@ Here is the Python version of this code:
#+BEGIN_SRC python
import spot
aut = spot.automaton("tut24.hoa")
def format_dest(s):
if not aut.is_univ_dest(s):
return s
else:
return f'{{ {" ".join(map(str, aut.univ_dests(s)))} }}'
bdict = aut.get_dict()
init = aut.get_init_state_number()
ui = aut.is_univ_dest(init)
print("Initial states: {}{}{}".format("{ " if ui else "",
" ".join(map(str, aut.univ_dests(init))),
" }" if ui else ""))
print(f"Initial states: {format_dest(init)}")
for s in range(0, aut.num_states()):
print("State {}:".format(s))
for t in aut.out(s):
ud = aut.is_univ_dest(t)
print(" edge({} -> {}{}{})".format(t.src,
"{ " if ud else "",
" ".join(map(str, aut.univ_dests(t))),
" }" if ud else ""))
print(f" edge({t.src} -> {format_dest(t.dst)})")
print(" label =", spot.bdd_format_formula(bdict, t.cond))
print(" acc sets =", t.acc)
#+END_SRC

View file

@ -108,12 +108,12 @@ import spot
aut1 = spot.make_twa_graph()
ap1a = aut1.register_ap("a")
ap1b = aut1.register_ap("b")
print("aut1: a={} b={}".format(ap1a, ap1b))
print(f"aut1: a={ap1a} b={ap1b}")
aut2 = spot.make_twa_graph()
ap2c = aut2.register_ap("c")
ap2b = aut2.register_ap("b")
ap2a = aut2.register_ap("a")
print("aut1: a={} b={} c={}".format(ap2a, ap2b, ap2c))
print(f"aut1: a={ap2a} b={ap2b} c={ap2c}")
#+END_SRC
#+RESULTS:
@ -271,7 +271,7 @@ all transition that belong to a certain acceptance set.
self.set.add((src, guard, dst))
def str_trans(self, src, guard, dst):
f = spot.bdd_format_formula(self.dict, guard)
return "({},{},{})".format(src, f, dst)
return f"({src},{f},{dst})"
def __str__(self):
return '{' + ",".join([ self.str_trans(*t) for t in self.set ]) + '}'
@ -353,7 +353,7 @@ automaton registers its variables.
self.set.add((src, guard, dest))
def str_trans(self, src, guard, dest):
f = spot.bdd_format_formula(self.dict, guard)
return "({},{},{})".format(src, f, dest)
return f"({src},{f},{dest})"
def __str__(self):
return '{' + ",".join([ self.str_trans(*t) for t in self.set ]) + '}'

View file

@ -512,7 +512,7 @@ class acd:
.acdrej polygon{fill:red;}
.acdacc polygon{fill:green;}
'''
js = '''
js = f'''
function acdremclasses(sel, classes) {{
document.querySelectorAll(sel).forEach(n=>{{n.classList.remove(...classes)}});}}
function acdaddclasses(sel, classes) {{
@ -545,30 +545,26 @@ function acd{num}_node(node, acc){{
acdaddclasses("#acdaut{num} .acdN" + node,
[acc ? "acdacc" : "acdrej", "acdbold"]);
acdaddclasses("#acd{num} #N" + node, ["acdbold", "acdhigh"]);
}};'''.format(num=num)
}};'''
me = 0
for n in range(self.node_count()):
for e in self.edges_of_node(n):
me = max(e, me)
js += 'acdaddclasses("#acdaut{num} #E{e}", ["acdN{n}"]);\n'\
.format(num=num, e=e, n=n)
js += f'acdaddclasses("#acdaut{num} #E{e}", ["acdN{n}"]);\n'
for e in range(1, me + 1):
js += 'acdonclick("#acdaut{num} #E{e}",'\
'function(){{acd{num}_edge({e});}});\n'\
.format(num=num, e=e)
js += f'acdonclick("#acdaut{num} #E{e}",'\
f'function(){{acd{num}_edge({e});}});\n'
for s in range(self.get_aut().num_states()):
js += 'acdonclick("#acdaut{num} #S{s}",'\
'function(){{acd{num}_state({s});}});\n'\
.format(num=num, s=s)
js += f'acdonclick("#acdaut{num} #S{s}",'\
f'function(){{acd{num}_state({s});}});\n'
for n in range(self.node_count()):
v = int(self.node_acceptance(n))
js += 'acdonclick("#acd{num} #N{n}",'\
'function(){{acd{num}_node({n}, {v});}});\n'\
.format(num=num, n=n, v=v)
js += f'acdonclick("#acd{num} #N{n}",'\
f'function(){{acd{num}_node({n}, {v});}});\n'
html = '<style>{}</style><div>{}</div><div>{}</div><script>{}</script>'\
.format(style,
self.get_aut().show('.i(acdaut{})'.format(num)).data,
self._repr_svg_("acd{}".format(num)),
self.get_aut().show(f'.i(acdaut{num})').data,
self._repr_svg_(f"acd{num}"),
js);
return html
@ -746,7 +742,7 @@ def automaton(filename, **kwargs):
try:
return next(automata(filename, **kwargs))
except StopIteration:
raise RuntimeError("Failed to read automaton from {}".format(filename))
raise RuntimeError(f"Failed to read automaton from {filename}")
def aiger_circuits(*sources, bdd_dict = None):
"""Read aiger circuits from a list of sources.
@ -777,7 +773,7 @@ def aiger_circuit(source, bdd_dict = None):
return next(aiger_circuits(source, bdd_dict = bdd_dict))
except StopIteration:
raise RuntimeError("Failed to read an aiger circuit "
"from {}".format(source))
f"from {source}")
def _postproc_translate_options(obj, default_type, *args):
@ -795,8 +791,7 @@ def _postproc_translate_options(obj, default_type, *args):
def type_set(val):
nonlocal type_, type_name_
if type_ is not None and type_name_ != val:
raise ValueError("type cannot be both {} and {}"
.format(type_name_, val))
raise ValueError(f"type cannot be both {type_name_} and {val}")
elif val == 'generic' or val == 'gen' or val == 'g':
type_ = postprocessor.Generic
elif val == 'tgba': # historical
@ -839,8 +834,8 @@ def _postproc_translate_options(obj, default_type, *args):
def pref_set(val):
nonlocal pref_, pref_name_
if pref_ is not None and pref_name_ != val:
raise ValueError("preference cannot be both {} and {}"
.format(pref_name_, val))
raise ValueError("preference cannot be both "\
f"{pref_name_} and {val}")
elif val == 'small':
pref_ = postprocessor.Small
elif val == 'deterministic':
@ -853,8 +848,8 @@ def _postproc_translate_options(obj, default_type, *args):
def optm_set(val):
nonlocal optm_, optm_name_
if optm_ is not None and optm_name_ != val:
raise ValueError("optimization level cannot be both {} and {}"
.format(optm_name_, val))
raise ValueError("optimization level cannot be both "\
f"{optm_name_} and {val}")
if val == 'high':
optm_ = postprocessor.High
elif val.startswith('med'):
@ -930,10 +925,10 @@ def _postproc_translate_options(obj, default_type, *args):
if lc == 1:
f(compat[0])
elif lc < 1:
raise ValueError("unknown option '{}'".format(arg))
raise ValueError(f"unknown option '{arg}'")
else:
raise ValueError("ambiguous option '{}' is prefix of {}"
.format(arg, str(compat)))
raise ValueError(f"ambiguous option '{arg}' "\
f"is prefix of {str(compat)}")
if type_ is None:
type_ = default_type
@ -1307,7 +1302,7 @@ def sat_minimize(aut, acc=None, colored=False,
if display_log or return_log:
import pandas as pd
with tempfile.NamedTemporaryFile(dir='.', suffix='.satlog') as t:
args += ',log="{}"'.format(t.name)
args += f',log="{t.name}"'
aut = sm(aut, args, state_based)
dfrm = pd.read_csv(t.name, dtype=object)
if display_log:
@ -1397,10 +1392,10 @@ def mp_hierarchy_svg(cl=None):
'B': '110,198',
}
if cl in coords:
highlight = '''<g transform="translate({})">
highlight = f'''<g transform="translate({coords[cl]})">
<line x1="-10" y1="-10" x2="10" y2="10" stroke="red" stroke-width="5" />
<line x1="-10" y1="10" x2="10" y2="-10" stroke="red" stroke-width="5" />
</g>'''.format(coords[cl])
</g>'''
else:
highlight = ''
return '''

View file

@ -51,11 +51,11 @@ def display_inline(*args, per_row=None, show=None):
If the `per_row` argument is given, at most `per_row` arguments are
displayed on each row, each one taking 1/per_row of the line width.
"""
width = res = ''
w = res = ''
if per_row:
width = 'width:{}%;'.format(100//per_row)
w = f'width:{100//per_row}%;'
for arg in args:
dpy = 'inline-block'
dpy = 'display:inline-block'
if show is not None and hasattr(arg, 'show'):
arg = arg.show(show)
if hasattr(arg, '_repr_html_'):
@ -65,9 +65,8 @@ def display_inline(*args, per_row=None, show=None):
elif hasattr(arg, '_repr_latex_'):
rep = arg._repr_latex_()
if not per_row:
dpy = 'inline'
dpy = 'display:inline'
else:
rep = str(arg)
res += ("<div style='vertical-align:text-top;display:{};{}'>{}</div>"
.format(dpy, width, rep))
res += f"<div style='vertical-align:text-top;{dpy};{w}'>{rep}</div>"
display(HTML(res))

View file

@ -22,7 +22,7 @@ tc = TestCase()
a = spot.acc_cond('parity min odd 5')
tc.assertEqual(str(a.fin_unit_one_split()),
'(0, {}, spot.acc_cond(5, "f"))'.format(repr(a)))
f'(0, {a!r}, spot.acc_cond(5, "f"))')
a.set_acceptance('Rabin 3')
tc.assertEqual(str(a.fin_unit_one_split()),

View file

@ -11,7 +11,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -100,7 +99,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -131,7 +129,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -194,7 +191,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -220,7 +216,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -252,7 +247,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -280,7 +274,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -331,7 +324,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -359,7 +351,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -400,7 +391,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -428,7 +418,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -455,7 +444,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -483,7 +471,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -552,7 +539,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -603,7 +589,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -630,7 +615,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -743,7 +727,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -775,11 +758,10 @@
"acc = spot.acc_code('Fin(0) & Inf(1) | Inf(2)')\n",
"print(\"acc =\", acc)\n",
"for x in ([0, 1, 2], [1, 2], [0, 1], [0, 2], [0], [1], [2], []):\n",
" print(\"acc.accepting({}) = {}\".format(x, acc.accepting(x)))"
" print(f\"acc.accepting({x}) = {acc.accepting(x)}\")"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -809,7 +791,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -837,7 +818,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -873,7 +853,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -909,7 +888,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -978,7 +956,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -1049,7 +1026,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -1078,7 +1054,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -1108,7 +1083,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -1138,7 +1112,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -1170,7 +1143,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -1202,7 +1174,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -1235,7 +1206,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -1264,7 +1234,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -1292,7 +1261,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -1320,7 +1288,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -1346,11 +1313,10 @@
"source": [
"print(\"acc =\", acc)\n",
"for x in ([0, 1, 2, 3, 10], [1, 2]):\n",
" print(\"acc.accepting({}) = {}\".format(x, acc.accepting(x)))"
" print(f\"acc.accepting({x}) = {acc.accepting(x)}\")"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -1419,7 +1385,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -1446,7 +1411,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@ -1566,7 +1530,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.5"
"version": "3.11.8"
}
},
"nbformat": 4,

View file

@ -31,8 +31,7 @@ n = 10000
for aut in spot.automata(
"randltl -n-1 a b "
"| ltl2tgba "
"| autfilt --is-semi-deterministic --acceptance-is=Buchi -n{} |"
.format(n)):
f"| autfilt --is-semi-deterministic --acceptance-is=Buchi -n{n} |"):
comp = complement(aut)
semidet_comp = spot.complement_semidet(aut, True)

View file

@ -359,7 +359,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c1623d0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7cffd80> >"
]
},
"execution_count": 2,
@ -583,7 +583,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c162340> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d10240> >"
]
},
"execution_count": 3,
@ -874,7 +874,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c161fe0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d103f0> >"
]
},
"execution_count": 4,
@ -1043,7 +1043,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c162070> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d10600> >"
]
},
"execution_count": 5,
@ -1175,7 +1175,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c162eb0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d10a80> >"
]
},
"execution_count": 6,
@ -1400,7 +1400,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c163390> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d110e0> >"
]
},
"metadata": {},
@ -1681,7 +1681,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c163360> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7cffde0> >"
]
},
"metadata": {},
@ -2008,7 +2008,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c163390> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7cfff60> >"
]
},
"metadata": {},
@ -2775,7 +2775,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c162b50> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d115f0> >"
]
},
"execution_count": 8,
@ -3509,7 +3509,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c162c70> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d10c00> >"
]
},
"metadata": {},
@ -3964,7 +3964,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c163390> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7cfff60> >"
]
},
"metadata": {},
@ -4375,7 +4375,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c162c70> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d10c00> >"
]
},
"metadata": {},
@ -5120,7 +5120,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c163c00> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d10a20> >"
]
},
"execution_count": 10,
@ -5415,7 +5415,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c163b40> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d10b40> >"
]
},
"metadata": {},
@ -5684,7 +5684,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c163a80> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d119e0> >"
]
},
"metadata": {},
@ -5965,7 +5965,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c163e10> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d114d0> >"
]
},
"metadata": {},
@ -6637,7 +6637,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c163150> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d11c20> >"
]
},
"execution_count": 12,
@ -7293,7 +7293,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c162c10> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d12460> >"
]
},
"metadata": {},
@ -7638,7 +7638,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c163e10> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d114d0> >"
]
},
"metadata": {},
@ -7945,7 +7945,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c162c10> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d12460> >"
]
},
"metadata": {},
@ -8612,7 +8612,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c163240> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d12160> >"
]
},
"execution_count": 14,
@ -8823,7 +8823,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c163d50> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d11c80> >"
]
},
"execution_count": 15,
@ -8989,7 +8989,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c17c870> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d120d0> >"
]
},
"metadata": {},
@ -9132,7 +9132,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c1634b0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d11290> >"
]
},
"metadata": {},
@ -9293,7 +9293,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c17c540> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d11e60> >"
]
},
"execution_count": 18,
@ -9557,7 +9557,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c17c570> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d10180> >"
]
},
"execution_count": 19,
@ -9830,7 +9830,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c17db90> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d137b0> >"
]
},
"metadata": {},
@ -10025,7 +10025,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c162c10> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d12460> >"
]
},
"metadata": {},
@ -10279,7 +10279,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c1626d0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d137b0> >"
]
},
"metadata": {},
@ -10315,10 +10315,10 @@
"name": "stdout",
"output_type": "stream",
"text": [
"SCC #0 contains states [1]\n",
"SCC #1 contains states [4]\n",
"SCC #2 contains states [3]\n",
"SCC #3 contains states [0, 2]\n"
"SCC #0 contains states (1,)\n",
"SCC #1 contains states (4,)\n",
"SCC #2 contains states (3,)\n",
"SCC #3 contains states (0, 2)\n"
]
},
{
@ -10642,7 +10642,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c17d410> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d124c0> >"
]
},
"metadata": {},
@ -10915,7 +10915,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c17d3e0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d117d0> >"
]
},
"execution_count": 21,
@ -10927,7 +10927,7 @@
"aut = spot.translate('(Ga -> Gb) W c')\n",
"si = spot.scc_info(aut)\n",
"for scc in range(si.scc_count()):\n",
" print(\"SCC #{} contains states {}\".format(scc, list(si.states_of(scc))))\n",
" print(f\"SCC #{scc} contains states {si.states_of(scc)}\")\n",
"display(aut)\n",
"spot.decompose_scc(si, '0,1')"
]
@ -11089,7 +11089,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f328c17e160> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7faaf7d13420> >"
]
},
"execution_count": 22,
@ -11100,6 +11100,13 @@
"source": [
"spot.decompose_scc(si, 'a2')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
@ -11118,7 +11125,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.7"
"version": "3.11.8"
}
},
"nbformat": 4,

View file

@ -189,14 +189,14 @@
],
"source": [
"for i in ['spot', 'spin', 'lbt', 'wring', 'utf8', 'latex', 'sclatex', 'mathjax']:\n",
" print(\"%-10s%s\" % (i, f.to_str(i)))"
" print(f\"{i:10}{f.to_str(i)}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Formulas output via `format()` can also use some convenient shorthand to select the syntax:"
"Formulas output via `format()` of f-strings can also use some convenient shorthand to select the syntax:"
]
},
{
@ -218,13 +218,13 @@
}
],
"source": [
"print(\"\"\"\\\n",
"Spin: {0:s}\n",
"Spin+parentheses: {0:sp}\n",
"Spot (default): {0}\n",
"Spot+shell quotes: {0:q}\n",
"LBT, right aligned: {0:l:~>40}\n",
"LBT, no M/W/R: {0:[MWR]l}\"\"\".format(f))"
"print(f\"\"\"\\\n",
"Spin: {f:s}\n",
"Spin+parentheses: {f:sp}\n",
"Spot (default): {f}\n",
"Spot+shell quotes: {f:q}\n",
"LBT, right aligned: {f:l:~>40}\n",
"LBT, no M/W/R: {f:[MWR]l}\"\"\")"
]
},
{
@ -1050,7 +1050,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.7"
"version": "3.11.8"
}
},
"nbformat": 4,

View file

@ -330,7 +330,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa7f4156190> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fed1691bbd0> >"
]
},
"execution_count": 4,
@ -525,7 +525,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa; proxy of <Swig Object of type 'std::shared_ptr< spot::twa > *' at 0x7fa7f4155f80> >"
"<spot.twa; proxy of <Swig Object of type 'std::shared_ptr< spot::twa > *' at 0x7fed16a24420> >"
]
},
"execution_count": 5,
@ -718,7 +718,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa7f4156190> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fed1691bbd0> >"
]
},
"execution_count": 6,
@ -830,9 +830,9 @@
],
"source": [
"for i in range(0, a.num_states()):\n",
" print(\"state {}: {}\".format(i, a.get_highlight_state(i)))\n",
" print(f\"state {i}: {a.get_highlight_state(i)}\")\n",
"for i in range(1, a.num_edges() + 1):\n",
" print(\"edge {}: {}\".format(i, a.get_highlight_edge(i)))"
" print(f\"edge {i}: {a.get_highlight_edge(i)}\")"
]
},
{
@ -1023,7 +1023,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa; proxy of <Swig Object of type 'std::shared_ptr< spot::twa > *' at 0x7fa7f4157900> >"
"<spot.twa; proxy of <Swig Object of type 'std::shared_ptr< spot::twa > *' at 0x7fed16a248a0> >"
]
},
"execution_count": 9,
@ -1218,7 +1218,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa; proxy of <Swig Object of type 'std::shared_ptr< spot::twa > *' at 0x7fa7f4157780> >"
"<spot.twa; proxy of <Swig Object of type 'std::shared_ptr< spot::twa > *' at 0x7fed16a25c80> >"
]
},
"execution_count": 10,
@ -1517,7 +1517,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa7f41574b0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fed16a25950> >"
]
},
"execution_count": 11,
@ -1846,7 +1846,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa7f41574b0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fed16a25950> >"
]
},
"execution_count": 14,
@ -2493,7 +2493,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa7f41745d0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fed16a26100> >"
]
},
"metadata": {},
@ -3006,7 +3006,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa7f4156100> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fed16a252c0> >"
]
},
"metadata": {},
@ -3363,7 +3363,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa7f4157480> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fed16a25e00> >"
]
},
"metadata": {},
@ -3536,7 +3536,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa7f4174d80> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fed16a26340> >"
]
},
"metadata": {},
@ -3637,7 +3637,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa7f4174210> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fed16a26100> >"
]
},
"metadata": {},
@ -3804,7 +3804,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa7f4174f30> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fed16a25f80> >"
]
},
"execution_count": 17,
@ -4006,7 +4006,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa7f4174f30> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fed16a25f80> >"
]
},
"metadata": {},
@ -4127,7 +4127,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa7f4174d80> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fed16a26340> >"
]
},
"metadata": {},
@ -4228,7 +4228,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa7f4174210> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fed16a26100> >"
]
},
"metadata": {},
@ -4635,7 +4635,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.impl.twa_product; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_product > *' at 0x7fa7f4176160> >"
"<spot.impl.twa_product; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_product > *' at 0x7fed16a279c0> >"
]
},
"metadata": {},
@ -4796,7 +4796,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa7f4175320> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fed16a25e90> >"
]
},
"metadata": {},
@ -4981,7 +4981,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa7f4176130> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fed16a27990> >"
]
},
"metadata": {},
@ -5284,7 +5284,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa7f4175950> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fed16a27480> >"
]
},
"execution_count": 22,
@ -5586,7 +5586,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa7f4175950> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fed16a27480> >"
]
},
"execution_count": 23,
@ -5883,7 +5883,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fa7f4175950> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fed16a27480> >"
]
},
"metadata": {},
@ -6391,7 +6391,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.7"
"version": "3.11.8"
}
},
"nbformat": 4,

View file

@ -154,7 +154,7 @@ def canonicalize(s, type, ignores):
s, flags=re.DOTALL)
for n, p in enumerate(ignores):
s = re.sub(p, 'IGN{}'.format(n), s)
s = re.sub(p, f'IGN{n}', s)
return s
@ -219,8 +219,7 @@ def compare_outputs(ref, test, ignores=[]):
ok = True
if len(cref) != len(ctest):
print("output length mismatch (expected {}, got {})".format(
len(cref), len(ctest)))
print(f"output length mismatch: expected {len(cref)}, got {len(ctest)}")
ok = False
# There can be several outputs. For instance wnen the cell both
# prints a result (goes to "stdout") and displays an automaton

View file

@ -42,7 +42,7 @@ for f in formulas:
f2 = f1.unabbreviate()
f3 = spot.formula_And([spot.from_ltlf(f1), cst])
f4 = spot.formula_And([spot.from_ltlf(f2), cst])
print("{}\t=>\t{}".format(f1, f3))
print("{}\t=>\t{}".format(f2, f4))
print(f"{f1}\t=>\t{f3}")
print(f"{f2}\t=>\t{f4}")
tc.assertTrue(lcc.equal(f3, f4))
print()

View file

@ -64,8 +64,8 @@
"for kind in ['min', 'max']:\n",
" for style in ['odd', 'even']:\n",
" for sets in range(1, 5):\n",
" name = 'parity {} {} {}'.format(kind, style, sets)\n",
" print('{:17} = {}'.format(name, spot.acc_code(name)))"
" name = f'parity {kind} {style} {sets}'\n",
" print(f'{name:17} = {spot.acc_code(name)}')"
]
},
{
@ -4949,7 +4949,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fc0d6bea0d0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f88de01ed30> >"
]
},
"metadata": {},
@ -5460,7 +5460,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.7"
"version": "3.11.8"
}
},
"nbformat": 4,

View file

@ -779,8 +779,7 @@
],
"source": [
"def show_prod(a1, a2, res):\n",
" s1 = a1.num_sets()\n",
" display_inline(a1, a2.show('.tvb+{}'.format(s1)), res)\n",
" display_inline(a1, a2.show(f'.tvb+{a1.num_sets()}'), res)\n",
"\n",
"show_prod(a1, a2, prod)"
]
@ -1714,7 +1713,7 @@
"\n",
"The one-liner above is wrong for two reasons:\n",
"\n",
" - if `left` and `right` are non-deterministic, their product could be deterministic, so calling prop_universal(False) would be wrong. \n",
" - if `left` and `right` are non-deterministic, their product could be deterministic, so calling `prop_universal(False)` would be wrong. \n",
"\n",
" - the use of the `and` operator on `trival` is misleading in non-Boolean context. The `&` operator would be the correct operator to use if you want to work in threed-valued logic. Compare: "
]
@ -1746,8 +1745,7 @@
"maybe = spot.trival_maybe()\n",
"for u in (no, maybe, yes):\n",
" for v in (no, maybe, yes):\n",
" print(\"{u!s:>5} & {v!s:<5} = {r1!s:<5} {u!s:>5} and {v!s:<5} = {r2!s:<5}\"\n",
" .format(u=u, v=v, r1=(u&v), r2=(u and v)))"
" print(f\"{u!s:>5} & {v!s:<5} = {u&v!s:<5} {u!s:>5} and {v!s:<5} = {u and v !s:<5}\")"
]
},
{
@ -2444,7 +2442,7 @@
"display(p3.show('.1'))\n",
"pairs = p3.get_product_states()\n",
"for s in range(p3.num_states()):\n",
" print(\"{}: {}\".format(s, pairs[s]))"
" print(f\"{s}: {pairs[s]}\")"
]
},
{
@ -2465,7 +2463,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
"87.6 µs ± 982 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n"
"107 µs ± 2.91 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n"
]
}
],
@ -2482,7 +2480,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
"2.14 µs ± 9.61 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n"
"2.23 µs ± 47.3 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n"
]
}
],
@ -2525,7 +2523,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.7"
"version": "3.11.8"
}
},
"nbformat": 4,

View file

@ -25,7 +25,7 @@ m = spot.relabeling_map()
g = spot.relabel_bse(f, spot.Pnn, m)
res = ""
for old, new in m.items():
res += "#define {} {}\n".format(old, new)
res += f"#define {old} {new}\n"
res += str(g)
tc.assertEqual(res, """#define p0 a & b
#define p1 c

View file

@ -450,7 +450,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f61ac1ce910> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fe21cd04240> >"
]
},
"execution_count": 3,
@ -799,7 +799,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f61ac1ce430> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fe21e17b0c0> >"
]
},
"execution_count": 4,
@ -1244,7 +1244,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f61ac1ce940> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fe21cd04090> >"
]
},
"execution_count": 5,
@ -1676,7 +1676,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f61ac1cefa0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fe21cd04c00> >"
]
},
"execution_count": 6,
@ -1938,7 +1938,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f61ac1cee80> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fe21cd04cf0> >"
]
},
"execution_count": 7,
@ -2255,7 +2255,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f61ac1cec40> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fe21cd04a50> >"
]
},
"execution_count": 8,
@ -2546,7 +2546,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f61ac1cebb0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fe21cd04870> >"
]
},
"execution_count": 9,
@ -2618,9 +2618,9 @@
" <td>NaN</td>\n",
" <td>996</td>\n",
" <td>48806</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
@ -2633,7 +2633,7 @@
" <td>2760</td>\n",
" <td>224707</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" </tr>\n",
@ -2646,9 +2646,9 @@
" <td>32</td>\n",
" <td>2008</td>\n",
" <td>155020</td>\n",
" <td>3</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
@ -2662,9 +2662,9 @@
"2 5 4 4 11 32 2008 \n",
"\n",
" clauses enc.user enc.sys sat.user sat.sys \n",
"0 48806 2 0 0 0 \n",
"1 224707 5 0 5 0 \n",
"2 155020 3 0 3 0 "
"0 48806 1 0 1 0 \n",
"1 224707 5 1 5 0 \n",
"2 155020 4 0 2 0 "
]
},
"metadata": {},
@ -2937,7 +2937,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f611de5a370> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fe208005380> >"
]
},
"execution_count": 10,
@ -3005,10 +3005,10 @@
" <td>NaN</td>\n",
" <td>348</td>\n",
" <td>15974</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
@ -3021,7 +3021,7 @@
" <td>73187</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
@ -3049,8 +3049,8 @@
"2 2 4 4 11 32 616 \n",
"\n",
" clauses enc.user enc.sys sat.user sat.sys \n",
"0 15974 0 0 1 0 \n",
"1 73187 2 0 1 0 \n",
"0 15974 1 0 0 0 \n",
"1 73187 2 0 0 0 \n",
"2 37620 1 0 0 0 "
]
},
@ -3324,7 +3324,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f61ac1cf870> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fe21e11bc00> >"
]
},
"execution_count": 11,
@ -3394,9 +3394,9 @@
" <td>40</td>\n",
" <td>2300</td>\n",
" <td>288887</td>\n",
" <td>8</td>\n",
" <td>7</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>8</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
@ -3438,7 +3438,7 @@
"2 2 1 NaN NaN NaN 92 \n",
"\n",
" clauses enc.user enc.sys sat.user sat.sys \n",
"0 288887 8 0 12 0 \n",
"0 288887 7 0 8 0 \n",
"1 18569 1 0 0 0 \n",
"2 2337 0 0 0 0 "
]
@ -3627,7 +3627,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f61ac1cf960> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fe21cd04d80> >"
]
},
"execution_count": 12,
@ -3695,7 +3695,7 @@
" <td>40</td>\n",
" <td>2742</td>\n",
" <td>173183</td>\n",
" <td>4</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
@ -3711,7 +3711,7 @@
" <td>45412</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
@ -3723,7 +3723,7 @@
" <td>NaN</td>\n",
" <td>363</td>\n",
" <td>10496</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
@ -3739,9 +3739,9 @@
"2 4 3 NaN NaN NaN 363 \n",
"\n",
" clauses enc.user enc.sys sat.user sat.sys \n",
"0 173183 4 0 2 0 \n",
"1 45412 1 0 0 0 \n",
"2 10496 1 0 0 0 "
"0 173183 3 0 2 0 \n",
"1 45412 1 0 1 0 \n",
"2 10496 0 0 0 0 "
]
},
"metadata": {},
@ -4006,7 +4006,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f611de5b3c0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fe21cd04690> >"
]
},
"execution_count": 13,
@ -4117,7 +4117,7 @@
" <td>173427</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
@ -4133,7 +4133,7 @@
" clauses enc.user enc.sys sat.user sat.sys \n",
"0 173427 3 0 2 0 \n",
"1 173427 0 0 0 0 \n",
"2 173427 0 0 1 0 "
"2 173427 0 0 0 0 "
]
},
"metadata": {},
@ -4412,7 +4412,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f611de5b600> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fe2080067f0> >"
]
},
"execution_count": 14,
@ -4484,7 +4484,7 @@
" <td>173183</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
@ -4498,7 +4498,7 @@
" <td>173279</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
@ -4526,8 +4526,8 @@
"2 4 3 NaN NaN NaN 2742 \n",
"\n",
" clauses enc.user enc.sys sat.user sat.sys \n",
"0 173183 4 0 2 0 \n",
"1 173279 0 0 0 0 \n",
"0 173183 4 0 1 0 \n",
"1 173279 0 0 1 0 \n",
"2 173327 0 0 0 0 "
]
},
@ -4807,7 +4807,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f611de5bd50> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fe208006c10> >"
]
},
"execution_count": 15,
@ -5108,7 +5108,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f611de5b6f0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fe208006940> >"
]
},
"metadata": {},
@ -5159,7 +5159,7 @@
" <td>40</td>\n",
" <td>2742</td>\n",
" <td>173183</td>\n",
" <td>4</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
@ -5176,7 +5176,7 @@
" <td>173279</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>HOA: v1 States: 4 Start: 0 AP: 3 \"a\" \"c\" \"b\" a...</td>\n",
" </tr>\n",
@ -5206,8 +5206,8 @@
"2 4 3 NaN NaN NaN 2742 \n",
"\n",
" clauses enc.user enc.sys sat.user sat.sys \\\n",
"0 173183 4 0 2 0 \n",
"1 173279 0 0 0 0 \n",
"0 173183 3 0 2 0 \n",
"1 173279 0 0 1 0 \n",
"2 173327 0 0 0 0 \n",
"\n",
" automaton \n",
@ -5544,7 +5544,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f611de94660> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fe208007030> >"
]
},
"metadata": {},
@ -5830,7 +5830,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f611de946f0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fe208006fa0> >"
]
},
"metadata": {},
@ -5840,7 +5840,7 @@
"source": [
"for line, data in log.iterrows():\n",
" if type(data.automaton) is str:\n",
" print(\"automaton from line {}:\".format(line))\n",
" print(f\"automaton from line {line}:\")\n",
" display(spot.automaton(data.automaton + \"\\n\"))"
]
},
@ -6261,7 +6261,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f61ac1cefa0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fe21cd04c00> >"
]
},
"execution_count": 18,
@ -6329,7 +6329,7 @@
" <td>NaN</td>\n",
" <td>687</td>\n",
" <td>21896</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
@ -6343,9 +6343,9 @@
" <td>32</td>\n",
" <td>1905</td>\n",
" <td>100457</td>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
@ -6358,8 +6358,8 @@
"1 6 5 4 12 32 1905 \n",
"\n",
" clauses enc.user enc.sys sat.user sat.sys \n",
"0 21896 1 0 0 0 \n",
"1 100457 2 0 2 0 "
"0 21896 0 0 0 0 \n",
"1 100457 3 0 1 0 "
]
},
"metadata": {},
@ -6638,7 +6638,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f61ac1cf6c0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fe21cd051d0> >"
]
},
"execution_count": 19,
@ -6730,7 +6730,7 @@
" <td>10496</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
@ -6746,7 +6746,7 @@
" clauses enc.user enc.sys sat.user sat.sys \n",
"0 51612 1 0 1 0 \n",
"1 3129 0 0 0 0 \n",
"2 10496 0 0 0 0 "
"2 10496 0 0 1 0 "
]
},
"metadata": {},
@ -7025,7 +7025,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f611de5b960> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fe208006fa0> >"
]
},
"execution_count": 20,
@ -7581,7 +7581,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f611de5b570> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fe2080074e0> >"
]
},
"execution_count": 21,
@ -7610,7 +7610,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.7"
"version": "3.11.8"
}
},
"nbformat": 4,

View file

@ -215,7 +215,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"You have to be aware of this property being set in your back because if while playing with `is_stutter_invariant()` you the incorrect formula for an automaton by mistake, the automaton will have its property set incorrectly, and running `is_stutter_invariant()` with the correct formula will simply return the cached property.\n",
"You have to be aware of this property being set in your back. If, after calling `is_stutter_invariant()`, you modify the automaton (e.g., adding edges, or changing labels), the modified automaton might then have its property set incorrectly, and running `is_stutter_invariant()` will not recompute a property that is set.\n",
"\n",
"In doubt, you can always reset the property as follows:"
]
@ -351,7 +351,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f47047afc00> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2110141680> >"
]
},
"metadata": {},
@ -418,9 +418,9 @@
" acc, rej, aut = \"rejected\", \"accepted\", pos\n",
" word2 = spot.sl2(waut).intersecting_word(aut)\n",
" word2.simplify()\n",
" print(\"\"\"{} is {} by {}\n",
" print(f\"\"\"{word} is {acc} by {f}\n",
" but if we stutter some of its letters, we get\n",
"{} which is {} by {}\"\"\".format(word, acc, f, word2, rej, f))"
"{word2} which is {rej} by {f}\"\"\")"
]
},
{
@ -804,7 +804,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f47047d0bd0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2110143b70> >"
]
},
"metadata": {},
@ -1165,7 +1165,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f47047d0bd0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2110143b70> >"
]
},
"metadata": {},
@ -1389,7 +1389,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f47047d1590> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2110143d20> >"
]
},
"metadata": {},
@ -1576,7 +1576,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f47047d0ab0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2110142b50> >"
]
},
"metadata": {},
@ -1962,7 +1962,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f47047d2640> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2110142340> >"
]
},
"metadata": {},
@ -2183,7 +2183,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f47047d1d10> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2110142580> >"
]
},
"metadata": {},
@ -2392,7 +2392,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f47047d2370> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f21101417a0> >"
]
},
"metadata": {},
@ -2434,7 +2434,7 @@
"source": [
"sil_vec = spot.stutter_invariant_letters(pos, f)\n",
"for q in range(pos.num_states()):\n",
" print(\"sil_vec[{}] =\".format(q), spot.bdd_format_formula(pos.get_dict(), sil_vec[q]))"
" print(f\"sil_vec[{q}] =\", spot.bdd_format_formula(pos.get_dict(), sil_vec[q]))"
]
},
{
@ -2848,7 +2848,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f47047d13e0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2110142430> >"
]
},
"metadata": {},
@ -3408,7 +3408,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f47047d13e0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2110142430> >"
]
},
"metadata": {},
@ -3649,7 +3649,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.7"
"version": "3.11.8"
}
},
"nbformat": 4,

View file

@ -252,7 +252,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd9b477e340> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f1fdcf63db0> >"
]
},
"execution_count": 3,
@ -784,7 +784,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd9b477e340> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f1fdcf63db0> >"
]
},
"metadata": {},
@ -1043,7 +1043,8 @@
],
"source": [
"for ed in aut.out(0):\n",
" print(\"edges[{e}].src={src}, edges[{e}].dst={dst}\".format(e=aut.edge_number(ed), src=ed.src, dst=ed.dst))"
" en = aut.edge_number(ed)\n",
" print(f\"edges[{en}].src={ed.src}, edges[{en}].dst={ed.dst}\")"
]
},
{
@ -1293,7 +1294,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd9b477e340> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f1fdcf63db0> >"
]
},
"metadata": {},
@ -1759,7 +1760,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd9b477e340> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f1fdcf63db0> >"
]
},
"metadata": {},
@ -1979,7 +1980,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that the `succ_tail` field of the `states` vector is seldom used when reading automata as the linked list of edges ends when `next_succ` (or `succ`) equals `0`. Its main use is during calls to `new_edge()`: new edges are always created at the end of the list (otherwise it would be hard to preserve the order of edges when parsing and automaton and printing it)."
"Note that the `succ_tail` field of the `states` vector is seldom used when reading automata as the linked list of edges ends when `next_succ` (or `succ`) equals `0`. Its main use is during calls to `new_edge()`: new edges are always created at the end of the list (otherwise it would be hard to preserve the order of edges when parsing an automaton and printing it)."
]
},
{
@ -2233,7 +2234,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd9b477e340> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f1fdcf63db0> >"
]
},
"metadata": {},
@ -2604,7 +2605,7 @@
"while it:\n",
" e = it.current()\n",
" toerase = e.acc.has(1)\n",
" print(\"pos={}, acc={}, toerase={}\".format(aut.edge_number(e), e.acc, toerase))\n",
" print(f\"pos={aut.edge_number(e)}, acc={e.acc}, toerase={toerase}\")\n",
" if toerase:\n",
" it.erase()\n",
" else:\n",
@ -2900,7 +2901,8 @@
],
"source": [
"for e in aut.edges(): # iterate over all non-erased edges\n",
" print(\"edges[{e}].src={src}, edges[{e}].dst={dst}\".format(e=aut.edge_number(e), src=e.src, dst=e.dst))"
" en = aut.edge_number(e)\n",
" print(f\"edges[{en}].src={e.src}, edges[{en}].dst={e.dst}\")"
]
},
{
@ -3398,7 +3400,8 @@
],
"source": [
"for e in aut.edges(): # iterate over all non-erased edges\n",
" print(\"edges[{e}].src={src}, edges[{e}].dst={dst}\".format(e=aut.edge_number(e), src=e.src, dst=e.dst))"
" en = aut.edge_number(e)\n",
" print(f\"edges[{en}].src={e.src}, edges[{en}].dst={e.dst}\")"
]
},
{
@ -3954,7 +3957,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd9b477e340> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f1fdcf63db0> >"
]
},
"execution_count": 22,
@ -4768,7 +4771,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd9b477e340> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f1fdcf63db0> >"
]
},
"execution_count": 28,
@ -5552,7 +5555,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd9b477e340> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f1fdcf63db0> >"
]
},
"metadata": {},
@ -6260,7 +6263,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd9b477e340> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f1fdcf63db0> >"
]
},
"metadata": {},
@ -6758,7 +6761,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd9b4794630> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f1fdd05b7e0> >"
]
},
"metadata": {},
@ -7129,7 +7132,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7fd9b4794630> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f1fdd05b7e0> >"
]
},
"metadata": {},
@ -7345,7 +7348,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.7"
"version": "3.11.8"
}
},
"nbformat": 4,

View file

@ -387,7 +387,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7f92f048a010> >"
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7f2d01ddfe70> >"
]
},
"execution_count": 2,
@ -985,7 +985,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f92f048b0c0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2d01decab0> >"
]
},
"execution_count": 10,
@ -994,7 +994,7 @@
}
],
"source": [
"a1 = spot.automaton(\"randaut -Q4 --colored -e.7 -A '{}' 2 |\".format(c.get_acceptance()))\n",
"a1 = spot.automaton(f\"randaut -Q4 --colored -e.7 -A '{c.get_acceptance()}' 2 |\")\n",
"a1"
]
},
@ -1809,7 +1809,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f92f048b510> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2d01decd50> >"
]
},
"execution_count": 11,
@ -2131,7 +2131,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f92f048b540> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2d01ded4d0> >"
]
},
"execution_count": 13,
@ -2140,7 +2140,7 @@
}
],
"source": [
"a2 = spot.automaton(\"randaut -Q3 -e.8 --seed=4 -A '{}' 2 |\".format(c.get_acceptance()))\n",
"a2 = spot.automaton(f\"randaut -Q3 -e.8 --seed=4 -A '{c.get_acceptance()}' 2 |\")\n",
"a2"
]
},
@ -2999,7 +2999,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f92f04a4660> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2d01dedc50> >"
]
},
"execution_count": 14,
@ -3709,7 +3709,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7f92f04a6460> >"
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7f2d01defb10> >"
]
},
"metadata": {},
@ -4355,7 +4355,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7f92f04a6490> >"
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7f2d01defb40> >"
]
},
"metadata": {},
@ -4511,7 +4511,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7f92f04a5ad0> >"
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7f2d01def180> >"
]
},
"metadata": {},
@ -4717,7 +4717,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7f92f04a6460> >"
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7f2d01defb10> >"
]
},
"metadata": {},
@ -4777,7 +4777,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7f92f04a6490> >"
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7f2d01defb40> >"
]
},
"metadata": {},
@ -4837,7 +4837,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7f92f04a5ad0> >"
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7f2d01def180> >"
]
},
"metadata": {},
@ -5222,7 +5222,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7f92f04a62b0> >"
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7f2d01deff30> >"
]
},
"execution_count": 18,
@ -6510,7 +6510,7 @@
"</script>"
],
"text/plain": [
"<spot.acd; proxy of <Swig Object of type 'spot::acd *' at 0x7f92f04a6730> >"
"<spot.acd; proxy of <Swig Object of type 'spot::acd *' at 0x7f2d01deefa0> >"
]
},
"execution_count": 20,
@ -7984,7 +7984,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f92f04a6d30> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2d005206c0> >"
]
},
"execution_count": 29,
@ -9202,7 +9202,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f92f04a6fa0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2d005207b0> >"
]
},
"execution_count": 31,
@ -10624,7 +10624,7 @@
"</script>"
],
"text/plain": [
"<spot.acd; proxy of <Swig Object of type 'spot::acd *' at 0x7f92f04a7c60> >"
"<spot.acd; proxy of <Swig Object of type 'spot::acd *' at 0x7f2d00520b40> >"
]
},
"execution_count": 40,
@ -12328,7 +12328,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f92f0104390> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2d00521bc0> >"
]
},
"execution_count": 45,
@ -12687,7 +12687,7 @@
"</script>"
],
"text/plain": [
"<spot.acd; proxy of <Swig Object of type 'spot::acd *' at 0x7f92f0104510> >"
"<spot.acd; proxy of <Swig Object of type 'spot::acd *' at 0x7f2d00522160> >"
]
},
"execution_count": 47,
@ -13081,7 +13081,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f92f0104450> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2d005214d0> >"
]
},
"execution_count": 48,
@ -13418,7 +13418,7 @@
"</script>"
],
"text/plain": [
"<spot.acd; proxy of <Swig Object of type 'spot::acd *' at 0x7f92f01040f0> >"
"<spot.acd; proxy of <Swig Object of type 'spot::acd *' at 0x7f2d00521e60> >"
]
},
"execution_count": 49,
@ -13765,7 +13765,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f92f0104e40> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2d00522310> >"
]
},
"execution_count": 50,
@ -14036,7 +14036,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f92f0104960> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2d00522970> >"
]
},
"execution_count": 51,
@ -14219,7 +14219,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7f92f01050e0> >"
"<spot.zielonka_tree; proxy of <Swig Object of type 'spot::zielonka_tree *' at 0x7f2d00522c40> >"
]
},
"execution_count": 52,
@ -14530,7 +14530,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f92f0104ab0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2d00522ac0> >"
]
},
"execution_count": 53,
@ -14850,7 +14850,7 @@
"</script>"
],
"text/plain": [
"<spot.acd; proxy of <Swig Object of type 'spot::acd *' at 0x7f92f0105500> >"
"<spot.acd; proxy of <Swig Object of type 'spot::acd *' at 0x7f2d00522760> >"
]
},
"execution_count": 55,
@ -15094,7 +15094,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f92f0105710> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2d00523150> >"
]
},
"execution_count": 57,
@ -15367,7 +15367,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f92f0104d20> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2d00523240> >"
]
},
"execution_count": 58,
@ -15738,7 +15738,7 @@
"</script>"
],
"text/plain": [
"<spot.acd; proxy of <Swig Object of type 'spot::acd *' at 0x7f92f01058c0> >"
"<spot.acd; proxy of <Swig Object of type 'spot::acd *' at 0x7f2d00523ab0> >"
]
},
"execution_count": 60,
@ -15966,7 +15966,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f92f01059e0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2d005239c0> >"
]
},
"execution_count": 61,
@ -16205,7 +16205,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f92f01051d0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2d005238a0> >"
]
},
"execution_count": 62,
@ -16744,7 +16744,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f92f01053b0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2d00523720> >"
]
},
"execution_count": 63,
@ -16901,7 +16901,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f92f0106430> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2d00523fc0> >"
]
},
"execution_count": 64,
@ -17068,7 +17068,7 @@
"</svg>\n"
],
"text/plain": [
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f92f01051a0> >"
"<spot.twa_graph; proxy of <Swig Object of type 'std::shared_ptr< spot::twa_graph > *' at 0x7f2d00550090> >"
]
},
"execution_count": 66,
@ -17126,7 +17126,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.7"
"version": "3.11.8"
}
},
"nbformat": 4,