hi!
With the aid of SPOT I am developing a counter-example guided synthesizer
in python. See [1] if interested for details.
My question is:
I am trying to parse twa_run in python,
namely, parse the labels of the each step (`spot.impl.step`).
Is there a python way to walk through BDD?
(The label is a simple cube expressed in BDD, and I need to convert it into
my internal structure)
(yes, this is rather a question about python interface for buddy)
(no, that is not feature request:) if not possible, I will simply print the
label and parse the string, that is not crucial)
[1]
The idea is
- guess the model,
- then model check it and get a counter-example
- then encode the counter-example into the "guesser" (which uses an SMT
solver)
thanks,
Ayrat
Hi all,
A quick (?) question. When I put the following LTL formula into SPOT online: G (G (p => Gp ) => Gp) => (FG p => Gp) SPOT says it is equivalent to 1. Therefore I assume it’s a theorem of LTL. My question: Is there anyway to see the series of rewrites of the formula to show how it gets form the original formula to “true”?
Thanks, Scott
Hello,
While running tests for SYNTCOMP 2019 we found that ltlsynt outputs an incorrect controller on one of our benchmarks:
simple_arbiter_enc_2.tlsf (available from https://bitbucket.org/swenjacobs/syntcomp/src/master/SelectedBenchmarks2018…)
I am calling the tool with --aiger --algo=lar and using iimc as our model checker.
Best,
Guillermo
Dear Spot developers,
I am Yong Li, a Phd student from Chinese Academy of Sciences.
I am writing to you to ask an implementation question about the
translation from LTLf to NBAs in Spot.
currently if I use following command line:
ltlfilt --from-ltlf -f "((G((P83) -> (X((P145)) | X(X((P145))) |
X(X(X((P145)))) ))) -> ( G((P21) -> (X( (P118) | (P83)) | X(X(
(P118) | (P83))) | X(X(X((P118) | (P83)))) )) & G( (P118) ->
X(!(P118))) & G( (P83) -> X(!(P118) U (P145)))))" | ltl2tgba | autfilt
--remove-ap=alive --small -B
I was able to get a weak DBA with only 8 states.
However, if I use following c++ code to do the same job:
auto pf1 = spot::parse_infix_psl(argv[1]);
if (pf1.format_errors(std::cerr))
{
std::cerr << "error: " << argv[1] << std::endl;
return -1;
}
// formula
auto f1 = pf1.f;
std::cout << f1 << std::endl;
// translate to ltlf
//auto ltlf = spot::from_ltlf(f1, "alive");
spot::translator trans;
trans.set_type(spot::postprocessor::BA);
trans.set_pref(spot::postprocessor::Small);
trans.set_level(spot::postprocessor::High);
spot::twa_graph_ptr aut = trans.run(spot::from_ltlf(pf1.f));
spot::remove_ap rem;
rem.add_ap("alive");
aut = rem.strip(aut);
spot::postprocessor post;
post.set_type(spot::postprocessor::BA);
post.set_pref(spot::postprocessor::Small); // or ::Deterministic
post.set_pref(spot::postprocessor::High); // or ::Deterministic
aut = post.run(aut);
I would get a DBA with 16 states, which has much more states than the
one from the command line.
The full source code is attached to this email.
Could you tell me how I can change the code above so to get the same DBA
from the command line?
Thank you very much.
BTW: I would like to appreciate the Spot tool which is a tool I would
install on my every Ubuntu system.
Yong
Dear Spot team,
I've tried to pull docker image using command "sudo docker pull
registry.lrde.epita.fr/spot-sandbox", however, I got the following response:
"Unable to find image 'registry.lrde.epita.fr/spot-sandbox:latest' locally
docker: Error response from daemon: error parsing HTTP 403 response body:
invalid character '<' looking for beginning of value: "<!DOCTYPE HTML
PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>403
Forbidden</title>\n</head><body>\n<h1>Forbidden</h1>\n<p>You don't have
permission to access /v2/spot-sandbox/manifests/latest\non this server.<br
/>\n</p>\n</body></html>\n".
See 'docker run --help'."
, any insight would be appreciated.
Best regards,
Jiraphapa J.
Dear Spot team,
I am trying to get Spot 2.7.4 running on macOS (tarball installation), the
command-line tools works properly on terminal, however, trying to run
Python and C++ examples does not work.
*For C++:* output from on-the-fly Kripke structure example (from
https://spot.lrde.epita.fr/tut51.html)
$ g++ -std=c++14 kripkeTest.cc -lspot -o kripkeTest
Undefined symbols for architecture x86_64:
"_bdd_addref_nc", referenced from:
bdd::operator=(bdd const&) in kripkeTest-6ae779.o
bdd::bdd(bdd const&) in kripkeTest-6ae779.o
bdd::bdd(int) in kripkeTest-6ae779.o
"_bdd_apply", referenced from:
bdd_apply(bdd const&, bdd const&, int) in kripkeTest-6ae779.o
"_bdd_delref_nc", referenced from:
bdd::operator=(bdd const&) in kripkeTest-6ae779.o
bdd::~bdd() in kripkeTest-6ae779.o
"_bdd_not", referenced from:
bdd_not(bdd const&) in kripkeTest-6ae779.o
"_main", referenced from:
implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
clang: *error: *linker command failed with exit code 1 (use -v to see
invocation)
(I could only run helloword.cc example)
*For Python:* trying to run example on Kripke structure using source code
from https://spot.lrde.epita.fr/ipynb/ltsmin-dve.html
$ python3
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 16:39:00)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import spot
>>> import spot.ltsmin
>>> spot.ltsmin.require('divine')
divine not available
(I think there has something to do with the path because I have to manually
add spot directory into pythonpath in order to be able to import spot even
if I use ./configure, make, make install)
Any insights would be appreciated.
Best regards,
Jiraphapa J.