Hello,
I am using spot to check randomly generated LTL formulas for
satisfiability and extract traces / words fulfilling the formula if
satisfiable. I have come across behavior which I do not understand and
am therefore asking on this list about it. I would be very happy if you
could help me with the issue.
I'm using the python interface and call
some_formula.translate().accepting_run()
which usually either returns None if unsatisfiable or a valid trace,
which I then convert using spot.twa_word() and inspect afterwards. Most
of the time, this works as expected, but I've experienced several cases
now where the produced trace contains a False (0) literal. Here, two
cases must be distinguished:
1. The formula is satisfiable
There exist formulas like "!b & e U (a & b & c)" which are quite
obviously satisfiable, but still accepting_run() returns a trace with 0
in it, although there are other valid traces without False in them.
2. The formula is unsatisfiable
There also exist formulas like "X!c & X(b & c & d & a U e)"
which are
unsatisfiable, and accepting_run() returns a trace with 0 in it.
Normally, for unsatisfiable formulas (like "a & !a") it just returns None.
I'd find point 2 alone totally okay, but I think point 1 is actually
problematic since the trace I'm looking for exists, but isn't returned.
So my question is whether I'm using spot incorrectly somehow or if this
is actually a bug. I also attached a small list of formulas and traces
with the described behavior. BTW I'm on Linux, Ubuntu 16.04, using spot
2.8.7 compiled from the tar.gz.
I'm looking forward to your responses!
Regards,
Jens Kreber