org: examples with alternating automata

* doc/org/tut23.org, doc/org/tut24.org, doc/org/tut31.org: New files.
* doc/Makefile.am, doc/org/tut.org: Add them.
* doc/org/hoa.org, doc/org/concepts.org: Adjust for alternation support.
* NEWS: Add links.
This commit is contained in:
Alexandre Duret-Lutz 2016-12-25 12:14:57 +01:00
parent f5b261d80e
commit 3d0a971aa8
8 changed files with 715 additions and 18 deletions

View file

@ -554,6 +554,75 @@ $txt
#+RESULTS:
[[file:concept-twa1.png]]
* Alternating ω-automata
Alternating ω-automata are ω-automata in which the destination of an
edge can be a group of states. If an edge has more than one
destination, it is called a /universal edge/, and its destinations are
referred to as its /universal destinations/.
When an alternating automaton evaluates a word, following a universal
edge will have the same effect as forking the automaton to evaluate
the rest of the word simultaneously from each universal destination.
A run of an alternating automaton can therefore be pictured as a tree.
The tree is accepting if all its branches satisfy the acceptance condition.
(See the [[http://adl.github.io/hoaf/][Hanoi Omega-Automa format]] for more precise semantics.)
For instance the following alternating co-Büchi ω-automaton was
generated by [[https://sourceforge.net/projects/ltl3ba/][=ltl3ba 1.1.3=]] for the LTL formula =GF(a <-> Xb)=.
#+NAME: concepts-alt
#+BEGIN_SRC sh :results verbatim :exports none
autfilt -d.ba <<EOF
HOA: v1
States: 5
Start: 0
acc-name: co-Buchi
Acceptance: 1 Fin(0)
AP: 2 "a" "b"
properties: trans-labels explicit-labels state-acc univ-branch very-weak
--BODY--
State: 0 "GF(a <-> Xb)"
[(!0)] 3&0
[(0)] 2&0
[t] 1&0
State: 1 "F(a <-> Xb)" {0}
[(!0)] 3
[(0)] 2
[t] 1
State: 2 "b"
[(1)] 4
State: 3 "!b"
[(!1)] 4
State: 4 "t"
[t] 4
--END--
EOF
#+END_SRC
#+BEGIN_SRC dot :file concepts-alt.png :cmdline -Tpng :var txt=concepts-alt :exports results
$txt
#+END_SRC
#+RESULTS:
[[file:concepts-alt.png]]
In this picture, the universal edges appear as arrows with a white
tips going to a small dot, from which additional arrows connect to the
universal destinations. Here the three universal edges all leave the
initial state, and connect to two universal destinations. Note that
non-determinism is allowed between universal edges, for instance upon
reading a word starting with "=a=", this automaton should
non-deterministically decide to read the rest of the word from states
=GF(a<->Xb)= and =F(a<->Xb)= (when taking the universal transition
labeled by =1=) or from states =GF(a<->Xb)= and =b= (when taking the
universal transition labeled by =a=).
Alternation support in Spot is currently experimental, please report
any issue. The only supported file format able to represent
alternating automata is the [[#hoa][HOA format, introduced below]].
* Never claims
:PROPERTIES:
:CUSTOM_ID: neverclaim
@ -770,7 +839,7 @@ $txt
The [[http://adl.github.io/hoaf/][HOA format]] inherits several features from the [[:dstar][DSTAR format]], but
extends it in many ways, including support for non-deterministic
automata and for arbitrary acceptance conditions.
automata, alternating automata, and for arbitrary acceptance conditions.
#+BEGIN_SRC sh :results verbatim :exports results
ltldo ltl2dstar -f 'FGp0 | GFp1' --name=%f
@ -826,13 +895,10 @@ $txt
Since this file format is the only one able to represent the range of
ω-automata supported by Spot, and it its default output format.
However note that Spot does not (yet?) support all automata that can
be expressed using the HOA format. For instance it has no support for
alternating automata, or for the =Alphabet:=-based automata introduced
in v1.1 of HOA (only =AP:=-based automata are supported).
The present support for the HOA format in Spot, is discussed on [[file:hoa.org][a
separate page]].
However note that Spot does not support all automata that can be
expressed using the HOA format. The present support for the HOA
format in Spot, is discussed on [[file:hoa.org][a separate page]], with a section
dedicated to the [[file:hoa.org::#restrictions][restrictions]].
* Linear-time Temporal Logic (LTL)
:PROPERTIES:
@ -975,7 +1041,6 @@ program. Blue boxes are Python-related.
:CUSTOM_ID: property-flags
:END:
The automaton class used by Spot to represent ω-Automata is called
=twa= (because we use TωA as a short for Transition-based
ω-Automaton). As its names implies, the =twa= class supports only