Title M&S refactoring part 2: reduce indirection when shrinking and applying label reductions
Priority wish Status resolved
Superseder Nosy List malte, silvan
Assigned To silvan Keywords
Optional summary

Created on 2017-04-27.17:42:22 by silvan, last changed by silvan.

msg6380 (view) Author: silvan Date: 2017-05-19.14:24:32
Done :)
msg6379 (view) Author: malte Date: 2017-05-19.11:35:48
OK, looks good to merge! (I made one more small comment on bitbucket.)
msg6378 (view) Author: silvan Date: 2017-05-18.22:52:33
Thanks for the spontaneous review!

I'd say no, we don't need experiments for such a small change, but I ran a
"small" set of configs (for M&S dimensions) and everything is good.
msg6370 (view) Author: malte Date: 2017-05-18.14:07:26
Looks good to me, I made a few minor comments. Should we do a small experiment
to make sure nothing was messed up, or is this not necessary?
msg6271 (view) Author: silvan Date: 2017-04-28.14:02:41
I changed the interfaces of ShrinkStrategy and FactoredTransitionSystem as
- ShrinkStrategy::shrink is now called compute_equivalence_relation and expects
a TransitionSystem and its Distances rather than an FTS
- FactoredTransitionSystem now has three public methods for shrinking, merging,
and applying a label reduction, passing the shrink strategy, the indices of the
factors to be merged, and the label reduction strategy respectively.

Further changes include making the shrink strategy classes use more modern C++
(use return values instead of non-const reference arguments). I had to rearrange
a few methods of FTS which makes the diff a bit more involved at a few places.
For LabelReduction, the interaction with FTS is not solved satisfactorily, I
think, because of the tight coupling of the iterative computation of label
reductions and the required intermediate application of the label mappings to
the FTS. I left a TODO in the code.

pull request:
msg6247 (view) Author: silvan Date: 2017-04-27.17:42:22
This is part of meta issue567.

As part of issue668 we noticed that for cloning factors (or even single elements
of factors) of factored transition systems, it would be useful to have a common
design of how factored transition systems are modified. We decided to have
methods FTS::shrink(ShrinkStrategy) and
FTS::apply_label_reduction(LabelReduction) (and in future maybe also
FTS::prune(...)? see issue707), which does not entirely mimic
FTS::merge(indices), where indices are computed *before* and *outside* of FTS by
MergeStrategy, but this cannot be avoided without giving away the control that
the merge-and-shrink heuristic's main loop has over the FTS.
Date User Action Args
2017-05-19 14:24:32silvansetstatus: in-progress -> resolved
messages: + msg6380
2017-05-19 11:35:48maltesetmessages: + msg6379
2017-05-18 22:52:33silvansetmessages: + msg6378
2017-05-18 14:07:27maltesetmessages: + msg6370
2017-04-28 14:02:41silvansetassignedto: silvan
messages: + msg6271
2017-04-27 17:42:22silvancreate