Commit 2a308182 authored by Alexandre Duret-Lutz's avatar Alexandre Duret-Lutz
Browse files

dot: make "a" the default

Fixes #319.

* spot/twaalgos/dot.cc: Enable "a" by default.
* bin/common_aoutput.cc, NEWS: Document it.
* doc/org/autfilt.org, doc/org/concepts.org, doc/org/dstar2tgba.org,
doc/org/hierarchy.org, doc/org/ltl2tgba.org, doc/org/oaut.org,
doc/org/randaut.org, doc/org/satmin.org, doc/org/tut23.org,
doc/org/tut24.org, doc/org/tut30.org, doc/org/tut31.org: Adjust or
simplify the documentation.
* tests/core/det.test, tests/core/dstar.test, tests/core/monitor.test,
tests/core/neverclaimread.test, tests/core/readsave.test,
tests/core/tgbagraph.test, tests/core/wdba.test,
tests/python/_autparserr.ipynb, tests/python/automata-io.ipynb,
tests/python/automata.ipynb, tests/python/highlighting.ipynb
tests/python/ltsmin-dve.ipynb, tests/python/ltsmin-pml.ipynb,
tests/python/product.ipynb, tests/python/testingaut.ipynb,
tests/python/word.ipynb: Adjust test cases.
parent 15fdac60
Pipeline #930 passed with stages
in 232 minutes and 52 seconds
...@@ -2,6 +2,13 @@ New in spot 2.5.1.dev (not yet released) ...@@ -2,6 +2,13 @@ New in spot 2.5.1.dev (not yet released)
Library: Library:
- Option "a" of print_dot(), for printing the acceptance condition,
is now enabled by default. Option "A", introduced in Spot 2.4,
can be used to hide the acceptance condition in case you do not
want it. This change of course affects the --dot option of all
the command-line tools, as well as the various way to display
automata using the Python bindings.
- cleanup_parity() and cleanup_parity_here() are smarter and now - cleanup_parity() and cleanup_parity_here() are smarter and now
remove from the acceptance condition the parity colors that are remove from the acceptance condition the parity colors that are
not used in the automaton. not used in the automaton.
......
// -*- coding: utf-8 -*- // -*- coding: utf-8 -*-
// Copyright (C) 2012-2017 Laboratoire de Recherche et Développement // Copyright (C) 2012-2018 Laboratoire de Recherche et Développement
// de l'Epita (LRDE). // de l'Epita (LRDE).
// //
// This file is part of Spot, a model checking library. // This file is part of Spot, a model checking library.
...@@ -92,7 +92,7 @@ static const argp_option options[] = ...@@ -92,7 +92,7 @@ static const argp_option options[] =
OPTION_ARG_OPTIONAL, OPTION_ARG_OPTIONAL,
"GraphViz's format. Add letters for " "GraphViz's format. Add letters for "
"(1) force numbered states, " "(1) force numbered states, "
"(a) show acceptance condition, " "(a) show acceptance condition (default), "
"(A) hide acceptance condition, " "(A) hide acceptance condition, "
"(b) acceptance sets as bullets, " "(b) acceptance sets as bullets, "
"(B) bullets except for Büchi/co-Büchi automata, " "(B) bullets except for Büchi/co-Büchi automata, "
......
...@@ -49,7 +49,7 @@ autfilt example.hoa --dot ...@@ -49,7 +49,7 @@ autfilt example.hoa --dot
#+END_SRC #+END_SRC
#+BEGIN_SRC sh :results verbatim :exports results #+BEGIN_SRC sh :results verbatim :exports results
SPOT_DOTEXTRA= autfilt example.hoa --dot= SPOT_DOTEXTRA= autfilt example.hoa --dot
#+END_SRC #+END_SRC
#+RESULTS: #+RESULTS:
...@@ -469,13 +469,12 @@ State: 2 ...@@ -469,13 +469,12 @@ State: 2
EOF EOF
#+END_SRC #+END_SRC
(Note: the '=.=' argument passed to =--dot= below hides default (Note: that the =--dot= option used below uses some default options
options discussed [[file:oaut.org::#default-dot][on another page]], while the '=a=' causes the discussed [[file:oaut.org::#default-dot][on another page]].)
acceptance condition to be displayed.)
#+NAME: autfilt-ex1 #+NAME: autfilt-ex1
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
autfilt aut-ex1.hoa --dot=.a autfilt aut-ex1.hoa --dot
#+END_SRC #+END_SRC
#+RESULTS: autfilt-ex1 #+RESULTS: autfilt-ex1
...@@ -516,7 +515,7 @@ Using =-S= will "push" the acceptance membership of the transitions to the state ...@@ -516,7 +515,7 @@ Using =-S= will "push" the acceptance membership of the transitions to the state
#+NAME: autfilt-ex2 #+NAME: autfilt-ex2
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
autfilt -S aut-ex1.hoa --dot=.a autfilt -S aut-ex1.hoa --dot=
#+END_SRC #+END_SRC
#+RESULTS: autfilt-ex2 #+RESULTS: autfilt-ex2
...@@ -578,7 +577,7 @@ Using =--cnf-acceptance= simply rewrites the acceptance condition in Conjunctive ...@@ -578,7 +577,7 @@ Using =--cnf-acceptance= simply rewrites the acceptance condition in Conjunctive
#+NAME: autfilt-ex3 #+NAME: autfilt-ex3
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
autfilt --cnf-acceptance aut-ex1.hoa --dot=.a autfilt --cnf-acceptance aut-ex1.hoa --dot
#+END_SRC #+END_SRC
#+RESULTS: autfilt-ex3 #+RESULTS: autfilt-ex3
...@@ -622,7 +621,7 @@ altered copies of strongly-connected components. ...@@ -622,7 +621,7 @@ altered copies of strongly-connected components.
#+NAME: autfilt-ex4 #+NAME: autfilt-ex4
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
autfilt --remove-fin aut-ex1.hoa --dot=.a autfilt --remove-fin aut-ex1.hoa --dot
#+END_SRC #+END_SRC
#+RESULTS: autfilt-ex4 #+RESULTS: autfilt-ex4
...@@ -668,7 +667,7 @@ reflect the fact that these sets can never be visited. ...@@ -668,7 +667,7 @@ reflect the fact that these sets can never be visited.
#+NAME: autfilt-ex5 #+NAME: autfilt-ex5
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
autfilt --mask-acc=1,2 aut-ex1.hoa --dot=.a autfilt --mask-acc=1,2 aut-ex1.hoa --dot
#+END_SRC #+END_SRC
#+RESULTS: autfilt-ex5 #+RESULTS: autfilt-ex5
...@@ -715,7 +714,7 @@ Here are the results of these three options on our example: ...@@ -715,7 +714,7 @@ Here are the results of these three options on our example:
#+NAME: autfilt-ex6a #+NAME: autfilt-ex6a
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
autfilt --remove-ap=a aut-ex1.hoa --dot=.a autfilt --remove-ap=a aut-ex1.hoa --dot
#+END_SRC #+END_SRC
#+RESULTS: autfilt-ex6a #+RESULTS: autfilt-ex6a
...@@ -754,7 +753,7 @@ $txt ...@@ -754,7 +753,7 @@ $txt
#+NAME: autfilt-ex6b #+NAME: autfilt-ex6b
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
autfilt --remove-ap=a=0 aut-ex1.hoa --dot=.a autfilt --remove-ap=a=0 aut-ex1.hoa --dot
#+END_SRC #+END_SRC
#+RESULTS: autfilt-ex6b #+RESULTS: autfilt-ex6b
...@@ -787,7 +786,7 @@ $txt ...@@ -787,7 +786,7 @@ $txt
#+NAME: autfilt-ex6c #+NAME: autfilt-ex6c
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
autfilt --remove-ap=a=1 aut-ex1.hoa --dot=.a autfilt --remove-ap=a=1 aut-ex1.hoa --dot
#+END_SRC #+END_SRC
#+RESULTS: autfilt-ex6c #+RESULTS: autfilt-ex6c
......
...@@ -222,7 +222,7 @@ State: 0 0 0 1 1 ...@@ -222,7 +222,7 @@ State: 0 0 0 1 1
State: 1 1 0 0 0 State: 1 1 0 0 0
--END-- --END--
EOF EOF
autfilt --merge concept-te.hoa -d autfilt --merge concept-te.hoa -d.A
#+END_SRC #+END_SRC
#+BEGIN_SRC dot :file concept-te1.svg :var txt=te1 :exports results #+BEGIN_SRC dot :file concept-te1.svg :var txt=te1 :exports results
$txt $txt
...@@ -244,7 +244,7 @@ following transition structure: ...@@ -244,7 +244,7 @@ following transition structure:
#+NAME: te2 #+NAME: te2
#+BEGIN_SRC sh :results verbatim :exports none #+BEGIN_SRC sh :results verbatim :exports none
autfilt concept-te.hoa -d autfilt concept-te.hoa -d.A
#+END_SRC #+END_SRC
#+BEGIN_SRC dot :file concept-te2.svg :var txt=te2 :exports results #+BEGIN_SRC dot :file concept-te2.svg :var txt=te2 :exports results
$txt $txt
...@@ -545,7 +545,7 @@ by Spot: ...@@ -545,7 +545,7 @@ by Spot:
#+NAME: twa-example1 #+NAME: twa-example1
#+BEGIN_SRC sh :results verbatim :exports none #+BEGIN_SRC sh :results verbatim :exports none
ltlfilt -l -f 'GFa | FGb' | ltl2dstar --output-format=hoa - - | autfilt --merge -d.a ltlfilt -l -f 'GFa | FGb' | ltl2dstar --output-format=hoa - - | autfilt --merge -d
#+END_SRC #+END_SRC
#+BEGIN_SRC dot :file concept-twa1.svg :var txt=twa-example1 :exports results #+BEGIN_SRC dot :file concept-twa1.svg :var txt=twa-example1 :exports results
$txt $txt
...@@ -822,7 +822,7 @@ Acc-Sig: +0 +1 ...@@ -822,7 +822,7 @@ Acc-Sig: +0 +1
#+NAME: dstar-example1 #+NAME: dstar-example1
#+BEGIN_SRC sh :results verbatim :exports none #+BEGIN_SRC sh :results verbatim :exports none
echo '| F G p0 G F p1' | ltl2dstar --output-format=native - - | autfilt -d.a echo '| F G p0 G F p1' | ltl2dstar --output-format=native - - | autfilt -d
#+END_SRC #+END_SRC
#+BEGIN_SRC dot :file concept-dstar.svg :var txt=dstar-example1 :exports results #+BEGIN_SRC dot :file concept-dstar.svg :var txt=dstar-example1 :exports results
$txt $txt
...@@ -881,7 +881,7 @@ State: 3 {1 3} ...@@ -881,7 +881,7 @@ State: 3 {1 3}
#+NAME: hoa1 #+NAME: hoa1
#+BEGIN_SRC sh :results verbatim :exports none #+BEGIN_SRC sh :results verbatim :exports none
ltldo ltl2dstar -f 'FGp0 | GFp1' -d.a ltldo ltl2dstar -f 'FGp0 | GFp1' -d
#+END_SRC #+END_SRC
#+BEGIN_SRC dot :file concept-hoa.svg :var txt=hoa1 :exports results #+BEGIN_SRC dot :file concept-hoa.svg :var txt=hoa1 :exports results
$txt $txt
......
...@@ -83,7 +83,7 @@ Acc-Sig: ...@@ -83,7 +83,7 @@ Acc-Sig:
Let's display this automaton with =autfilt=: Let's display this automaton with =autfilt=:
#+NAME: fagfb #+NAME: fagfb
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
autfilt fagfb --dot=.a autfilt fagfb --dot
#+END_SRC #+END_SRC
#+RESULTS: fagfb #+RESULTS: fagfb
...@@ -121,11 +121,6 @@ $txt ...@@ -121,11 +121,6 @@ $txt
#+RESULTS: #+RESULTS:
[[file:fagfb.svg]] [[file:fagfb.svg]]
We used =--dot=a= to display Spot's representation of the acceptance
condition (which uses the same convention as in the [[file:hoa.org][HOA format]]). The
extra dot is because we use some [[file:oaut.org][environment variables]] to produce a
more colorful output by default in these pages.
=dstar2tgba= can now be used to convert this DRA into a TGBA, a BA, or =dstar2tgba= can now be used to convert this DRA into a TGBA, a BA, or
a Monitor, using the same options as [[file:ltl2tgba.org][=ltl2tgba=]]. a Monitor, using the same options as [[file:ltl2tgba.org][=ltl2tgba=]].
...@@ -204,45 +199,9 @@ Here is the translation of =GFa | GFb= to a 4-state Streett automaton: ...@@ -204,45 +199,9 @@ Here is the translation of =GFa | GFb= to a 4-state Streett automaton:
#+NAME: gfafgb #+NAME: gfafgb
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
ltlfilt -f 'GFa & GFb' -l | ltl2dstar --automata=streett --ltl2nba=spin:ltl2tgba@-Ds - gfagfb ltlfilt -f 'GFa & GFb' -l | ltl2dstar --automata=streett --ltl2nba=spin:ltl2tgba@-Ds - gfagfb
autfilt --dot=.a gfagfb autfilt --dot gfagfb
#+END_SRC #+END_SRC
#+RESULTS: gfafgb
#+begin_example
digraph G {
rankdir=LR
label=<(Fin(<font color="#5DA5DA">⓿</font>) | Inf(<font color="#F17CB0">❶</font>)) &amp; (Fin(<font color="#FAA43A">❷</font>) | Inf(<font color="#B276B2">❸</font>))>
labelloc="t"
node [shape="circle"]
fontname="Lato"
node [fontname="Lato"]
edge [fontname="Lato"]
node[style=filled, fillcolor="#ffffa0"] edge[arrowhead=vee, arrowsize=.7]
I [label="", style=invis, width=0]
I -> 0
0 [label=<0<br/><font color="#F17CB0">❶</font><font color="#B276B2">❸</font>>]
0 -> 0 [label=<a &amp; b>]
0 -> 1 [label=<!a &amp; b>]
0 -> 2 [label=<a &amp; !b>]
0 -> 3 [label=<!a &amp; !b>]
1 [label=<1<br/><font color="#5DA5DA">⓿</font><font color="#B276B2">❸</font>>]
1 -> 0 [label=<a &amp; b>]
1 -> 1 [label=<!a &amp; b>]
1 -> 2 [label=<a &amp; !b>]
1 -> 3 [label=<!a &amp; !b>]
2 [label=<2<br/><font color="#F17CB0">❶</font><font color="#FAA43A">❷</font>>]
2 -> 0 [label=<a &amp; b>]
2 -> 1 [label=<!a &amp; b>]
2 -> 2 [label=<a &amp; !b>]
2 -> 3 [label=<!a &amp; !b>]
3 [label=<3<br/><font color="#5DA5DA">⓿</font><font color="#FAA43A">❷</font>>]
3 -> 0 [label=<a &amp; b>]
3 -> 1 [label=<!a &amp; b>]
3 -> 2 [label=<a &amp; !b>]
3 -> 3 [label=<!a &amp; !b>]
}
#+end_example
#+BEGIN_SRC dot :file gfafgb.svg :var txt=gfafgb :exports results #+BEGIN_SRC dot :file gfafgb.svg :var txt=gfafgb :exports results
$txt $txt
#+END_SRC #+END_SRC
......
...@@ -362,7 +362,7 @@ for the obligation property =a <-> GXa=: ...@@ -362,7 +362,7 @@ for the obligation property =a <-> GXa=:
#+NAME: hier-oblig-3 #+NAME: hier-oblig-3
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
ltldo 'ltl2dstar --automata=streett' -f 'a <-> GXa' -d.a ltldo 'ltl2dstar --automata=streett' -f 'a <-> GXa' -d
#+END_SRC #+END_SRC
#+BEGIN_SRC dot :file hier-oblig-3.svg :var txt=hier-oblig-3 :exports results #+BEGIN_SRC dot :file hier-oblig-3.svg :var txt=hier-oblig-3 :exports results
$txt $txt
...@@ -602,7 +602,7 @@ a /recurrence/ property), is to chain a few algorithms implemented in Spot: ...@@ -602,7 +602,7 @@ a /recurrence/ property), is to chain a few algorithms implemented in Spot:
#+NAME: hier-recurrence-4 #+NAME: hier-recurrence-4
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
ltl2tgba -G -D 'G(Gb | Fa)' -d.a ltl2tgba -G -D 'G(Gb | Fa)' -d
#+END_SRC #+END_SRC
#+BEGIN_SRC dot :file hier-recurrence-4.svg :var txt=hier-recurrence-4 :exports results #+BEGIN_SRC dot :file hier-recurrence-4.svg :var txt=hier-recurrence-4 :exports results
$txt $txt
...@@ -618,7 +618,7 @@ a /recurrence/ property), is to chain a few algorithms implemented in Spot: ...@@ -618,7 +618,7 @@ a /recurrence/ property), is to chain a few algorithms implemented in Spot:
#+NAME: hier-recurrence-5 #+NAME: hier-recurrence-5
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
ltl2tgba -G -D 'G(Gb | Fa)' | ltl2tgba -G -D 'G(Gb | Fa)' |
autfilt --generalized-rabin -d.a autfilt --generalized-rabin -d
#+END_SRC #+END_SRC
#+BEGIN_SRC dot :file hier-recurrence-5.svg :var txt=hier-recurrence-5 :exports results #+BEGIN_SRC dot :file hier-recurrence-5.svg :var txt=hier-recurrence-5 :exports results
$txt $txt
...@@ -637,7 +637,7 @@ a /recurrence/ property), is to chain a few algorithms implemented in Spot: ...@@ -637,7 +637,7 @@ a /recurrence/ property), is to chain a few algorithms implemented in Spot:
#+NAME: hier-recurrence-6 #+NAME: hier-recurrence-6
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
ltl2tgba -G -D 'G(Gb | Fa)' | ltl2tgba -G -D 'G(Gb | Fa)' |
autfilt -S --generalized-rabin -d.a autfilt -S --generalized-rabin -d
#+END_SRC #+END_SRC
#+BEGIN_SRC dot :file hier-recurrence-6.svg :var txt=hier-recurrence-6 :exports results #+BEGIN_SRC dot :file hier-recurrence-6.svg :var txt=hier-recurrence-6 :exports results
...@@ -661,7 +661,7 @@ a /recurrence/ property), is to chain a few algorithms implemented in Spot: ...@@ -661,7 +661,7 @@ a /recurrence/ property), is to chain a few algorithms implemented in Spot:
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
ltl2tgba -G -D 'G(Gb | Fa)' | ltl2tgba -G -D 'G(Gb | Fa)' |
autfilt -S --generalized-rabin | autfilt -S --generalized-rabin |
autfilt -B -D -d.a autfilt -B -D -d
#+END_SRC #+END_SRC
#+BEGIN_SRC dot :file hier-recurrence-7.svg :var txt=hier-recurrence-7 :exports results #+BEGIN_SRC dot :file hier-recurrence-7.svg :var txt=hier-recurrence-7 :exports results
...@@ -680,7 +680,7 @@ helps producing a smaller automaton. Here is what we get without it: ...@@ -680,7 +680,7 @@ helps producing a smaller automaton. Here is what we get without it:
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
ltl2tgba -G -D 'G(Gb | Fa)' | ltl2tgba -G -D 'G(Gb | Fa)' |
autfilt --generalized-rabin | autfilt --generalized-rabin |
autfilt -B -D -d.a autfilt -B -D -d
#+END_SRC #+END_SRC
#+BEGIN_SRC dot :file hier-recurrence-8.svg :var txt=hier-recurrence-8 :exports results #+BEGIN_SRC dot :file hier-recurrence-8.svg :var txt=hier-recurrence-8 :exports results
...@@ -701,7 +701,7 @@ persistence formula is =FGa=, and using =-D= on this is hopeless. ...@@ -701,7 +701,7 @@ persistence formula is =FGa=, and using =-D= on this is hopeless.
#+NAME: hier-persistence-1 #+NAME: hier-persistence-1
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
ltl2tgba -D FGa -d.a ltl2tgba -D FGa -d
#+END_SRC #+END_SRC
#+BEGIN_SRC dot :file hier-persistence-1.svg :var txt=hier-persistence-1 :exports results #+BEGIN_SRC dot :file hier-persistence-1.svg :var txt=hier-persistence-1 :exports results
$txt $txt
...@@ -721,7 +721,7 @@ complementation ourselves: ...@@ -721,7 +721,7 @@ complementation ourselves:
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
ltlfilt --negate -f FGa | ltlfilt --negate -f FGa |
ltl2tgba -D | ltl2tgba -D |
autfilt --complement -d.a autfilt --complement -d
#+END_SRC #+END_SRC
#+BEGIN_SRC dot :file hier-persistence-2.svg :var txt=hier-persistence-2 :exports results #+BEGIN_SRC dot :file hier-persistence-2.svg :var txt=hier-persistence-2 :exports results
$txt $txt
...@@ -780,7 +780,7 @@ generalized Büchi automaton: ...@@ -780,7 +780,7 @@ generalized Büchi automaton:
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
ltlfilt --negate -f 'F(G!a | G(b U a))' | ltlfilt --negate -f 'F(G!a | G(b U a))' |
ltl2tgba -D | ltl2tgba -D |
autfilt --highlight-nondet=5 -d.a autfilt --highlight-nondet=5 -d
#+END_SRC #+END_SRC
#+BEGIN_SRC dot :file hier-persistence-4.svg :var txt=hier-persistence-4 :exports results #+BEGIN_SRC dot :file hier-persistence-4.svg :var txt=hier-persistence-4 :exports results
$txt $txt
...@@ -798,7 +798,7 @@ deterministic Büchi: ...@@ -798,7 +798,7 @@ deterministic Büchi:
ltlfilt --negate -f 'F(G!a | G(b U a))' | ltlfilt --negate -f 'F(G!a | G(b U a))' |
ltl2tgba -G -D | ltl2tgba -G -D |
autfilt --generalized-rabin | autfilt --generalized-rabin |
autfilt --tgba -D -d.a autfilt --tgba -D -d
#+END_SRC #+END_SRC
#+BEGIN_SRC dot :file hier-persistence-5.svg :var txt=hier-persistence-5 :exports results #+BEGIN_SRC dot :file hier-persistence-5.svg :var txt=hier-persistence-5 :exports results
$txt $txt
...@@ -816,8 +816,9 @@ ltlfilt --negate -f 'F(G!a | G(b U a))' | ...@@ -816,8 +816,9 @@ ltlfilt --negate -f 'F(G!a | G(b U a))' |
ltl2tgba -G -D | ltl2tgba -G -D |
autfilt --generalized-rabin | autfilt --generalized-rabin |
autfilt --tgba -D | autfilt --tgba -D |
autfilt --complement -d.ab autfilt --complement -d
#+END_SRC #+END_SRC
#+BEGIN_SRC dot :file hier-persistence-6.svg :var txt=hier-persistence-6 :exports results #+BEGIN_SRC dot :file hier-persistence-6.svg :var txt=hier-persistence-6 :exports results
$txt $txt
#+END_SRC #+END_SRC
......
...@@ -147,7 +147,7 @@ $txt ...@@ -147,7 +147,7 @@ $txt
#+RESULTS: #+RESULTS:
[[file:dotex2.svg]] [[file:dotex2.svg]]
The above TGBA has two acceptance sets: ⓿ and ❶. The position of The above TGBA has two acceptance sets: ⓿ and ❶. The definition of
these acceptance sets ensures that atomic propositions =a= and =b= must these acceptance sets ensures that atomic propositions =a= and =b= must
be true infinitely often. be true infinitely often.
...@@ -733,7 +733,7 @@ expectations. ...@@ -733,7 +733,7 @@ expectations.
#+NAME: ltl2tgba-fga #+NAME: ltl2tgba-fga
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
ltl2tgba "FGa" -D -d.a ltl2tgba "FGa" -D -d
#+END_SRC #+END_SRC
#+BEGIN_SRC dot :file ltl2tgba-fga.svg :var txt=ltl2tgba-fga :exports results #+BEGIN_SRC dot :file ltl2tgba-fga.svg :var txt=ltl2tgba-fga :exports results
...@@ -747,7 +747,7 @@ ltl2tgba "FGa" -D -d.a ...@@ -747,7 +747,7 @@ ltl2tgba "FGa" -D -d.a
#+NAME: ltl2tgba-fga-D #+NAME: ltl2tgba-fga-D
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
ltl2tgba "FGa" -G -D -d.a ltl2tgba "FGa" -G -D -d
#+END_SRC #+END_SRC
#+BEGIN_SRC dot :file ltl2tgba-fga-D.svg :var txt=ltl2tgba-fga-D :exports results #+BEGIN_SRC dot :file ltl2tgba-fga-D.svg :var txt=ltl2tgba-fga-D :exports results
...@@ -771,7 +771,7 @@ For instance the following deterministic automaton ...@@ -771,7 +771,7 @@ For instance the following deterministic automaton
#+NAME: ltl2tgba-det1 #+NAME: ltl2tgba-det1
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
ltl2tgba "F(a W FGb)" -G -D -d.a ltl2tgba "F(a W FGb)" -G -D -d
#+END_SRC #+END_SRC
#+BEGIN_SRC dot :file ltl2tgba-det1.svg :var txt=ltl2tgba-det1 :exports results #+BEGIN_SRC dot :file ltl2tgba-det1.svg :var txt=ltl2tgba-det1 :exports results
...@@ -785,7 +785,7 @@ would be larger if SCC-based optimizations were disabled: ...@@ -785,7 +785,7 @@ would be larger if SCC-based optimizations were disabled:
#+NAME: ltl2tgba-det2 #+NAME: ltl2tgba-det2
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
ltl2tgba "F(a W FGb)" -x '!det-scc' -G -D -d.a ltl2tgba "F(a W FGb)" -x '!det-scc' -G -D -d
#+END_SRC #+END_SRC
#+BEGIN_SRC dot :file ltl2tgba-det2.svg :var txt=ltl2tgba-det2 :exports results #+BEGIN_SRC dot :file ltl2tgba-det2.svg :var txt=ltl2tgba-det2 :exports results
...@@ -831,7 +831,7 @@ acceptance (another name for =parity min odd 2=): ...@@ -831,7 +831,7 @@ acceptance (another name for =parity min odd 2=):
#+NAME: ltl2tgba-dp1 #+NAME: ltl2tgba-dp1
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
ltl2tgba "FGa" -D -P -d.a ltl2tgba "FGa" -D -P -d
#+END_SRC #+END_SRC
#+BEGIN_SRC dot :file ltl2tgba-dp1.svg :var txt=ltl2tgba-dp1 :exports results #+BEGIN_SRC dot :file ltl2tgba-dp1.svg :var txt=ltl2tgba-dp1 :exports results
...@@ -846,7 +846,7 @@ for =parity min even 1=): ...@@ -846,7 +846,7 @@ for =parity min even 1=):
#+NAME: ltl2tgba-dp2 #+NAME: ltl2tgba-dp2
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
ltl2tgba "GFa & GFb" -D -P -d.a ltl2tgba "GFa & GFb" -D -P -d
#+END_SRC #+END_SRC
#+BEGIN_SRC dot :file ltl2tgba-dp2.svg :var txt=ltl2tgba-dp2 :exports results #+BEGIN_SRC dot :file ltl2tgba-dp2.svg :var txt=ltl2tgba-dp2 :exports results
...@@ -861,7 +861,7 @@ we can specify it as an argument to the =--parity= option. For instance ...@@ -861,7 +861,7 @@ we can specify it as an argument to the =--parity= option. For instance
#+NAME: ltl2tgba-dp3 #+NAME: ltl2tgba-dp3
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
ltl2tgba "GFa & GFb" -D -P'min odd' -d.a ltl2tgba "GFa & GFb" -D -P'min odd' -d
#+END_SRC #+END_SRC
#+BEGIN_SRC dot :file ltl2tgba-dp3.svg :var txt=ltl2tgba-dp3 :exports results #+BEGIN_SRC dot :file ltl2tgba-dp3.svg :var txt=ltl2tgba-dp3 :exports results
...@@ -879,7 +879,7 @@ requested) should belong to exactly one acceptance set. ...@@ -879,7 +879,7 @@ requested) should belong to exactly one acceptance set.
#+NAME: ltl2tgba-dp4 #+NAME: ltl2tgba-dp4
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
ltl2tgba "GFa & GFb" -D -p -d.a ltl2tgba "GFa & GFb" -D -p -d
#+END_SRC #+END_SRC
#+BEGIN_SRC dot :file ltl2tgba-dp4.svg :var txt=ltl2tgba-dp4 :exports results #+BEGIN_SRC dot :file ltl2tgba-dp4.svg :var txt=ltl2tgba-dp4 :exports results
...@@ -891,7 +891,7 @@ ltl2tgba "GFa & GFb" -D -p -d.a ...@@ -891,7 +891,7 @@ ltl2tgba "GFa & GFb" -D -p -d.a
#+NAME: ltl2tgba-dp5 #+NAME: ltl2tgba-dp5
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
ltl2tgba "GFa & GFb" -D -p'min odd' -d.a ltl2tgba "GFa & GFb" -D -p'min odd' -d
#+END_SRC #+END_SRC
#+BEGIN_SRC dot :file ltl2tgba-dp5.svg :var txt=ltl2tgba-dp5 :exports results #+BEGIN_SRC dot :file ltl2tgba-dp5.svg :var txt=ltl2tgba-dp5 :exports results
...@@ -906,7 +906,7 @@ acceptance if needed: ...@@ -906,7 +906,7 @@ acceptance if needed:
#+NAME: ltl2tgba-dp6 #+NAME: ltl2tgba-dp6
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
ltl2tgba "GFa & GFb" -D -S -p'max even' -d.a ltl2tgba "GFa & GFb" -D -S -p'max even' -d
#+END_SRC #+END_SRC
#+BEGIN_SRC dot :file ltl2tgba-dp6.svg :var txt=ltl2tgba-dp6 :exports results #+BEGIN_SRC dot :file ltl2tgba-dp6.svg :var txt=ltl2tgba-dp6 :exports results
......
...@@ -856,7 +856,7 @@ The dot output can also be customized via two environment variables: ...@@ -856,7 +856,7 @@ The dot output can also be customized via two environment variables:
(for any value of =xyz=, even empty) will ignore the (for any value of =xyz=, even empty) will ignore the
=SPOT_DOTDEFAULT= variable. If the argument of =--dot= contains =SPOT_DOTDEFAULT= variable. If the argument of =--dot= contains
a dot character, then this dot is replaced by the contents of a dot character, then this dot is replaced by the contents of
=SPOT_DOTDEFAULT=. So ~--dot=.a~ would be equivalent to =--dot=vcsna= =SPOT_DOTDEFAULT=. So ~--dot=.A~ would be equivalent to =--dot=vcsnA=
with our example definition of =SPOT_DOTDEFAULT=. with our example definition of =SPOT_DOTDEFAULT=.
- =SPOT_DOTEXTRA= may contains an arbitrary string that will be emitted - =SPOT_DOTEXTRA= may contains an arbitrary string that will be emitted
in the dot output before the first state. This can be used to modify in the dot output before the first state. This can be used to modify
......
...@@ -293,7 +293,7 @@ $txt ...@@ -293,7 +293,7 @@ $txt
#+NAME: randaut5b #+NAME: randaut5b
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
randaut -Q6 -e0.4 -S -a.2 -A 'Streett 1..3' 2 --dot=.a randaut -Q6 -e0.4 -S -a.2 -A 'Streett 1..3' 2 --dot
#+END_SRC #+END_SRC
#+RESULTS: randaut5b #+RESULTS: randaut5b
...@@ -346,7 +346,7 @@ give =randaut= some freedom, as in this example. ...@@ -346,7 +346,7 @@ give =randaut= some freedom, as in this example.
#+NAME: randaut5c #+NAME: randaut5c
#+BEGIN_SRC sh :results verbatim :exports code #+BEGIN_SRC sh :results verbatim :exports code
randaut -Q10 -S --colored -A 'parity rand rand 3..4' 2 --dot=.a randaut -Q10 -S --colored -A 'parity rand rand 3..4' 2 --dot
#+END_SRC #+END_SRC
#+RESULTS: randaut5c