- gcc 4.8 (and assorted libraries) does not provide an erase(const_iterator) method for std::list but only an erase(iterator).
This is in compliance with the c++11 draft N3337, which specifies the change from iterator to const_iterator only for "set, multiset, map [and] multimap" but not list.
Therefore the constant list iterators were replaced by non constant iterators in MaximalEndComponentDecomposition and Vector set.
The locations are marked with a FIXME, such that the const_iterator can be replaced back when gcc provides it.
- Fixed (completed) the stub implementation for the GurobiLpSolver in case that Gurobi is not present.
|-> Would not compile before due to missing functions and incorrect signatures.
- Switched to c++11 for gcc. Since gcc 4.8 provides full compliance to the c++11 standard.
|-> Initially hoped that it would fix the const_iterator problem, but it did not.
- Fixed the cmake warning concerning a missing whitespace between tokens in the last line of CMakeLists.txt.
Former-commit-id: f90768375e
- Fixed one problem marked FIXME in the transpose function. The need for a "sentinel" element was created by an off by one in the prior loop.
- Changed all occurences of SparseMatrix<bool> to SparseMatrix<T>. Now the only two types for which SparseMatrix is instantiated are double and int.
- Compiles again.
|-> Compile time seems to be roughly the same for clean; make all. For incremental builds I haven't tested yet.
Former-commit-id: 6d829e0903
But got bitten by std::vector<bool> as it is specialized and uses bitsets (i.e. integers) internally.
Less memory but at the cost of 'oh, sorry std::vector<bool> does not return a bool&'.
That again seems to be a problem for the SparseMatrix<bool> instatiation since for instance getValue returns a T&.
On the one hand I don't quite know why this was never an issue before and on the other hand it prevents successful compilation.
So there are different ways to settle this:
- Specialize SparseMatix for bool -> possibly lots of code, but might be the best solution
- Write a wrapper for std::vector that uses chars instead of booleans
- Dont't use SparseMatrix<bool>
Next up: Figure out the best solution for this and implement it.
Former-commit-id: 83b9cfd06e
- Also handled the case of a missing --prctl while using the counterexample generation.
- Remark: Some documentation for the VectorSet would have been nice.
Former-commit-id: c687b67454
Also one small change I forgot before the merge:
- The counterexample generation again uses the --prctl option to aquire its formulas.
Former-commit-id: f3a415d750
- Fixed the infinite loop bug that occured when giving a filepath pointing to a directory instead of a file.
- The BitVector to Dtmc subsystem converter now supports an optional choice labeling.
- The output of the modelchecker to the log file is now suppressed while doing a counterexample generation.
- It is now possible to add more atomic propositions to the AtomicPropositionLabeling than previously declared (at the cost of one reserve per added ap beyond the maximum).
The maximum is then increased accordingly.
|-> As a result the state added for the Dtmc subsystem has now its own label.
Next up: Merge.)
Former-commit-id: 74c92aaea1
-std::cout gives enough information to understand what th result of the generaton is.
-Added another argument to --counterExample specifying a directory to write .dot files containing the critical subsystems (as Dtmc) to.
-Cleaned up some logging output of the counterexample generationn.
Next up: Merging.
Former-commit-id: feb4323052
Remark: I don't quite get the optional choice labeling in Dtmcs.
Whats its purpose?
Why is it undocumented in the Dtmc constructor, not supported by the parser but needed nevertheless?
Next up: Pretty up counterexample generation output.
Former-commit-id: c04063b608