// for simplicity we do not allow intervals or unbounded formulas.
// TODO: Quantiles: allow unbounded formulas
STORM_LOG_THROW(subformula.hasLowerBound(dim)!=dimension.isUpperBounded,storm::exceptions::NotSupportedException,"Bounded until formulas are only supported by this method if they consider either an upper bound or a lower bound. Got "<<subformula<<" instead.");
// for simplicity we do not allow interval formulas.
STORM_LOG_THROW(!subformula.hasLowerBound(dim)||!subformula.hasUpperBound(dim),storm::exceptions::NotSupportedException,"Bounded until formulas are only supported by this method if they consider either an upper bound or a lower bound. Got "<<subformula<<" instead.");
// lower bounded until formulas with non-trivial left hand side are excluded as this would require some additional effort (in particular the ProductModel::transformMemoryState method).
STORM_LOG_THROW(dimension.isUpperBounded||subformula.getLeftSubformula(dim).isTrueFormula(),storm::exceptions::NotSupportedException,"Lower bounded until formulas are only supported by this method if the left subformula is 'true'. Got "<<subformula<<" instead.");
STORM_LOG_THROW(dimensions[dim].isUpperBounded||isStrict||!storm::utility::isZero(discretizedBound),storm::exceptions::NotSupportedException,"Lower bounds need to be either strict or greater than zero.");
// We always consider upper bounds to be non-strict and lower bounds to be strict.
// Thus, >=N would become >N-1. However, note that the case N=0 needs extra treatment
STORM_LOG_DEBUG("Invoked EndComponentEliminator on matrix with "<<originalMatrix.getRowGroupCount()<<" row groups.");
STORM_LOG_DEBUG("Invoked EndComponentEliminator on matrix with "<<originalMatrix.getRowGroupCount()<<" row groups and "<<subsystemStates.getNumberOfSetBits()<<" subsystem states.");