_ => unreachable!("This refinement variant {refinement:?} can not be checked by is_failures_refinement"),
pub fn is_refinement_generic<L: LTS, A: AC<StateIndex, StateIndex>, CE: CounterExampleTree, F, G, CC>(
// If the check indicates that we should not continue exploration, then we can skip exploring the outgoing edges.
// If the implementation state is not stable, then it cannot have any refusals (or is maximally accepting).
// refusals(impl) ⊆ refusals(spec) iff there exists a stable spec state s with enabled(s) ⊆ enabled(impl).
// Unstable spec states do not contribute to the refusals of the specification, so we can ignore them.
/// A naive implementation for checking that the refusals of an implementation state are contained in the refusals of a set of specification states.
fn refusals_contained_in_naive<L: LTS>(lts: &L, impl_state: StateIndex, spec_states: &VecSet<StateIndex>) -> bool {
fn refusals_set<L: LTS>(lts: &L, spec_states: &VecSet<StateIndex>) -> VecSet<VecSet<LabelIndex>> {