This makes it easier to implement some traits for a type but not others. For example, the SubsetConstruction constructs states on the fly. This means it cannot provide an iterator over all state indices and it cannot test whether a given state index exists. Those two methods/functionalities could instead be provided by a trait StateIterable or StatesKnown, which is then implemented by e.g. DTS, but not by SubsetConstruction.
This makes it easier to implement some traits for a type but not others. For example, the
SubsetConstruction
constructs states on the fly. This means it cannot provide an iterator over all state indices and it cannot test whether a given state index exists. Those two methods/functionalities could instead be provided by a traitStateIterable
orStatesKnown
, which is then implemented by e.g.DTS
, but not bySubsetConstruction
.