Dear Spot devs,
I am not sure how I am supposed to work with Kripke structures (which I
imported using ltsmin) or `twa_product` (which I obtained using
`otf_product` on the Kripke structure).
In the screenshot below I can invoke 'exclusive_word' with no problems on a
`kripke` and `twa_product` but the same is not true for 'contains' which
returns a type error.
The way I found to invoke 'contains' without errors is to use 'save' and
then 'automaton' to read that same file again in order to get `twa_graph`
as expected by `contains`. I am not sure this workaround is what the devs
had in mind.
Thank you for clarifying,
PierreG
[image: image.png]
Dear Spot devs,
Is there a way for Spot to perform the alphabet abstraction available in
GOAL as triggered with the `-a` switch when invoking the `alphabet` command?
I paste the GOAL documentation about it below.
Thank you,
Pierre.
- Alphabet -NAMEalphabet - Manipulate the alphabet of an automaton or a
game.SYNOPSISalphabet -s [ -ap ] FILE_OR_LVALalphabet -e EXPR [ -ap ]
FILE_OR_LVALalphabet -c EXPR [ -ap ] FILE_OR_LVALalphabet -r EXPR [ -ap ]
FILE_OR_LVALalphabet -a EXPR [-R | -A | -S EXPR | -P EXPR | -ap ]
FILE_OR_LVALDESCRIPTIONManipulate the alphabet of an automaton (or a game).
This operation is directly applied to the input automaton. The returned
value is always the new alphabet of the automaton (or the new atomic
propositions if -ap is present).
-s Simply return the alphabet of the input automaton or game.
-ap Return the atomic propositions (or classical symbols) instead of the
alphabet.
-e Expand the alphabet by a list of propositions.
-c Contract the alphabet by removing a list of propositions.
-r Rename the propositions based on a map from a proposition to its new
name.
-a Abstract the alphabet based on a map from a predicate to its definition.
-R Retain the transition symbols in alphabet abstraction.
-A Only annotate the transitions with properties specified by -S and -P.
-S Specify the name of the property that will store the symbols on the
transitions in alphabet abstraction.
-P Specify the name of the property that will store the evaluations of the
predicates in alphabet abstraction. EXAMPLE
alphabet -e "r" aut.gff
alphabet -c "p" aut.gff
alphabet -r "p=>r,q=>s" aut.gff
alphabet -a "r=>p/\q" aut.gff
alphabet -a "r=>p/\q" -A -P "Predicates" aut.gff
Hello,
There is a small hack in the lexer definition files `scanlt.ll` and `scanaut.ll` which fails the compilation on my Mac (macOS 12.3 arm64, Clang 13.1.6); they override `__STDC_VERSION__` which in turn wreaks havoc in the libc includes. I was able to fix the compilation using this small patch, which includes `libc-config.h` at the top in addition to `config.h`. I hope it would be useful to you.
Cheers.
Dear Spot team,
greetings. This is Edmond Irani Liu, a Ph.D student at the Cyber-Physical Systems Group, Technical University of Munich. First of all, I would say thank you for your effort in developing such a great platform and tool!
I have been using Spot lately, and have a few questions regarding automata manipulation in Spot. I attach a Jupyter notebook explaining my use case: we are using spot to compute the product automata of some LTLf formulas and our system described in Kripke structure.
If I understand this (https://spot.lrde.epita.fr/tut12.html) page correctly, we need to append a new state at the end of the system that holds a proposition which becomes inactive at the end of our system. Could you give us a quick feedback if our formulation in the notebook is correct? There states z1-z8 are system states, and z9 is the extra state for Spot to correctly handle LTLf formulas.
As we are trying to obtain the product automaton of a relatively large formula with our system, we assume that breaking down the formula and paralellizing the computation will observe a speed up in the computation. We would like to inquire if there exist operations like taking the union or intersection of the accepting runs of the automata? The concrete example is illustrated in the note book.
Is there a documentation available somewhere explaining the functions of objects in the Python wrapper? I tried looking around but couldn't find one explaining those. An example is also attached.
Thank you for your attention. Looking forward to hearing from you.
Kind Regards,
Edmond
Hi there,
Thanks so much for the great tool! I am having trouble understanding the
disjunction on state transitions. For example, I have the following small
spec:
ASSUME {
G (p1);
}
GUARANTEE {
G ((x) && (! (y)) ||
((y) && (! (x))));
G (F x);
G (F y);
}
From this, ltlsynt gives me:
AP: 3 "x" "y" "p1"
acc-name: all
Acceptance: 0 t
properties: trans-labels explicit-labels state-acc deterministic
--BODY--
State: 0
[!0&!1&!2 | 0&1&!2] 1
[!0&1&2] 1
State: 1
[!0&!1&!2 | 0&1&!2] 1
[0&!1&2] 0
--END--
Should I understand the "[!0&!1&!2 | 0&1&!2] 1" to mean that when !2 is
true, the system is free to choose from !0&!1 or 0&1?
On a related note, due to the ASSUME in the spec, !2 should never be true
anyway. Is there a way to filter this out of the model? For context, I am
really looking to get a Mealy Machine out of ltlsynt which I can then
convert into program code that would run in an infinite loop. Maybe I am
just going about this the wrong way?
Mark
Hi, I'm building some automatons using spot's python interface. Simply,
codes like:
for i in n:
temp_aut = spot.automaton(aut.to_str()) # copy an automaton
...something
del temp_aut
But I found that whenever it enters a new loop, the memory of the automaton
assigned to temp_aut is not freed. And it leads to a memory overflow.
I thought this might be solved with 'delete temp_aut' in the C++ version
spot, but in the python interface 'del temp' doesn't seem to work.
Is there any interface in Python or other operations to make it possible?
Hello,
I am contacting this list because I have a question regarding the behaviour of SPOT’s accepting_run function. I created an example (see attached) where, if I am not mistaken, the accepting run that is yielded does not satisfy the acceptance formula. Could you confirm that this is a problem and not a mistake in my understanding of the function and/or acceptance formula ? In addition, the acceptance formula is somehow detected as being a gen. Streett condition, can this be prevented and does it have an influence on how the emptiness check/accepting run generation is handled ?
Thank you for your help,
Clément
hello,
Is there a way to feed HOA file (as a nondet Buchi) instead of a formula to
ltlsynt?
I tried smth (see below), but I am getting 'unrealisable' for nondet Buchi
automaton spec
that is supposed to be realisable (see attached).
Maybe I missing something? (like ltlsynt dualising the automaton, etc.)
Here is what I tried. Into file synthesis.cc, add:
#include "spot/parseaut/public.hh"
Then in line 822, comment out:
// auto aut = trans.run(f);
and instead add:
spot::bdd_dict_ptr dict = spot::make_bdd_dict();
auto parsed_aut = parse_aut("/tmp/spec.hoa", dict);
if (parsed_aut->aborted)
abort();
auto aut = parsed_aut->aut;
This forces ltlsynt to read file "/tmp/spec.hoa" and ignore the formula.
Further, when calling ltlsynt, pass the argument --decompose=no ('just in
case'):
./ltlsynt --formula="GF a" --ins=x,y --dot --outs=a,b,c --decompose=no
and provide the correct --ins and --outs arguments, and any formula with
one of those propositions.
The tool outputs expected implementations on toy examples,
but on a larger example attached it outputs "unrealizable" instead of
"realizable".
That is why the question.
best wishes,
Ayrat
Hi,
I am trying to install Spot using the Debian package at www.lrde.epita.fr/repo/debian/ but it looks as though the security certificate for www.lrde.epita.fr has expired. In fact, it looks like it expired yesterday (Dec. 29th).
The reason I'm installing Spot is that it's a dependency of another project I would like to install, and that project's Dockerfile uses the Debian package. It is possible to compile Spot from the source, but it is more efficient to use a Debian package (and potentially eases reproducibility, which is nice when using Docker).
Would it be possible for someone to update the certificate?
Thanks!
- David