/// Checks for (strong) trace inclusion, i.e., whether all traces of the implementation are also traces of the specification.
/// Checks for weak trace inclusion, i.e., whether all weak traces of the implementation are also weak traces of the specification.
/// Checks for stable failures inclusion, i.e., whether all stable failures of the implementation are also stable failures of the specification.
/// Check for failures-divergences inclusion, i.e., whether all failures and divergences of the implementation are also failures and divergences of the specification.
/// Checks for impossible futures inclusion, i.e., whether all impossible futures of the implementation are also impossible futures of the specification.
RefinementType::Weaktrace | RefinementType::ImpossibleFutures => Equivalence::BranchingBisim,
"Initial states are in the same block after strong bisimulation reduction, skipping refinement check."
"Initial states are in the same block after branching bisimulation reduction, skipping refinement check."
_ => unimplemented!("Preprocessing for refinement type {refinement:?} has not been implemented yet."),
is_failures_refinement(&merged_lts, initial_spec, refinement, strategy, &mut ce_constructor);
// Reconstruct a trace from the counter example tree, relabelling the indices to their actual labels.
// Reconstruct a trace from the counter example tree, relabelling the indices to their actual labels.
let (result, _, _) = is_impossible_futures_refinement(&merged_lts, initial_spec, strategy, &mut ());
test_mcrl2_ltscompare_refinement("test_mcrl2_ltscompare_trace", RefinementType::Trace, "trace-ac");