Open wongkaiweng opened 10 years ago
A couple of things:
vraman/cores
is deprecated. All relevant commits have been merged into development
. @vraman, would you mind to maybe delete it if you're not using it anymore? :)Oh, and 5:
This specific example returns for me:
set(['\t\t\t []<>( ((!s.bit0 & !s.bit1 & !s.bit2))) ', '!e.fire & e.person & !s.radio & !s.bit2 & s.bit1 & !s.bit0 & next(e.fire) & next(!e.person)', '!e.fire & !e.person & !s.radio & !s.bit2 & s.bit1 & !s.bit0 & next(e.fire) & next(!e.person)', 'e.fire & !e.person & !s.radio & !s.bit2 & s.bit1 & !s.bit0 & next(e.fire) & next(!e.person)', '!e.fire & e.person & !s.radio & s.bit2 & !s.bit1 & s.bit0 & next(e.fire) & next(!e.person)', ' []( ((!s.bit0 & !s.bit1 & !s.bit2)) -> ( ((!next(s.bit0) & !next(s.bit1) & !next(s.bit2)))| ((!next(s.bit0) & next(s.bit1) & next(s.bit2))) | ((next(s.bit0) & !next(s.bit1) & !next(s.bit2))) ) ) & []( ((!s.bit0 & !s.bit1 & s.bit2)) -> ( ((!next(s.bit0) & !next(s.bit1) & next(s.bit2)))| ((!next(s.bit0) & next(s.bit1) & next(s.bit2))) | ((next(s.bit0) & !next(s.bit1) & !next(s.bit2))) ) ) & []( ((!s.bit0 & s.bit1 & !s.bit2)) -> ( ((!next(s.bit0) & next(s.bit1) & !next(s.bit2)))| ((next(s.bit0) & !next(s.bit1) & !next(s.bit2))) | ((next(s.bit0) & !next(s.bit1) & next(s.bit2))) ) ) & []( ((!s.bit0 & s.bit1 & s.bit2)) -> ( ((!next(s.bit0) & next(s.bit1) & next(s.bit2)))| ((!next(s.bit0) & !next(s.bit1) & !next(s.bit2))) | ((!next(s.bit0) & !next(s.bit1) & next(s.bit2))) | ((next(s.bit0) & !next(s.bit1) & next(s.bit2))) ) ) & []( ((s.bit0 & !s.bit1 & !s.bit2)) -> ( ((next(s.bit0) & !next(s.bit1) & !next(s.bit2)))| ((!next(s.bit0) & !next(s.bit1) & !next(s.bit2))) | ((!next(s.bit0) & !next(s.bit1) & next(s.bit2))) | ((!next(s.bit0) & next(s.bit1) & !next(s.bit2))) ) ) & []( ((s.bit0 & !s.bit1 & s.bit2)) -> ( ((next(s.bit0) & !next(s.bit1) & next(s.bit2)))| ((!next(s.bit0) & next(s.bit1) & !next(s.bit2))) | ((!next(s.bit0) & next(s.bit1) & next(s.bit2))) ) ) ', 'e.fire & !e.person & !s.radio & s.bit2 & !s.bit1 & s.bit0 & next(e.fire) & next(!e.person)'])
which is... not what we want. It appears to contain (a) the offending goal, (b) the topology, and (c) every valid initial state. Aaand thus why the code is disabled pending further evaluation :)
Additional related issue: analyzing examples/unsynth/unsynth_simple (refined analysis) gives the following error:
Traceback (most recent call last): File "specEditor.py", line 184, in onClickRefineAnalysis self.parent.refineAnalysis() File "specEditor.py", line 1455, in refineAnalysis guilty = self.compiler._coreFinding(self.to_highlight, self.unsat, self.badInit) File "/Users/Vasu/Documents/LTLMoP/src/lib/specCompiler.py", line 655, in _coreFinding aut = fsa.Automaton(proj_copy) AttributeError: 'module' object has no attribute 'Automaton'
This seems to stem from modifications to fsa.py.
@vraman This latest issue is similar to https://github.com/LTLMoP/LTLMoP/issues/71, i.e., a result of the latest changes in development (refactoring, strategy, etc). Cameron is working on it.
I have updated the Refine Analysis part to work with the latest fsa.py and strategy.py. It is committed to 8f65fe115b653706c546680d125e897454c914f4. The branch is called upstream/update_cores_to_strategy
. I'm not sure whether the core part is working but it will finish the analysis.
You can also take a look at 8085cf1268b4e6c0c4598edabd440600343fe7d4. The branch is called cfinucane/modern_cores
and it has a version of the core analysis.
I got the following highlight (with LTLMoP/development)
but I think it should be (with vramen/cores)
I can also obtain the same result with the following replacement in specEditor.py:
FROM
highlight guilty sentences
TO (copied from varmen/cores' branch) if not realizable or not nonTrivial:
only do cores if unrealizable or trivial