- 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
-Had to add a addState function to AtomicPropositionLabeling to be able to throw out the unneeded states using the substates constructor while at the end adding the absorbing state and its label.
An alternative for that would be to provide a constructor taking the mapping and the single labelings vector as well as a getter for the single labelings.
-The --counterexample command now only uses the pctl file given as argument to it and therefore it is now superflous to give the --prctl command in that case.
-Also fixed a bug in the filter constructor of the BitVector.
Now it copies all bit values specified by the filter to the correct index of new instance instead of all to index 0.
Next up: Handle the optionals of the Dtmc when creating the sub-Dtmc.
Former-commit-id: b45ee94cb2
Next up: Write the DTMC output for the subsystem generation.
Also:
- fixed one bug in the subsystem generation leading to an infinite loop
- corrected a typo in a comment in SparseMatrix
Former-commit-id: 6014bf2dd2