/// This is the announcement for Sabre, which stores additional information about the rewrite rules.
/// Upon applying a rewrite rule we do not immediately update the subterm stored in every configuration on the stack.
/// That would be very expensive. Instead we ensure that the subterm in the current_node is always up to date.
/// oldest_reliable_subterm is an index to the highest configuration in the tree that is up to date.
/// Initialise the stack with one Configuration containing 'term' and the initial state of the set automaton
/// Grow a Configuration with index c. tr_slice contains the hypertransition to possibly multiple states
// Reroll the configuration stack by truncating the Vec (which is a constant time operation)
// Note that the subterm stored earlier may not have been up to date. We replace it with a term that is up to date
/// If 'including' is true the side info for the configuration with index 'end' is also deleted.
if sbi.corresponding_configuration < end || (sbi.corresponding_configuration <= end && !including) {
/// This function is used exclusively when a subtree has been explored and no matches have been found.
/// When going back up the configuration tree the subterms stored in the configuration tree must be updated
pub fn integrate_updated_subterms(&mut self, end: usize, tp: &mut TermPool, store_intermediate: bool) {
// If the position is not deepened nothing needs to be done, otherwise substitute on the position stored in the configuration.
/// Returns a SideInfoType object if there is side info for the configuration with index 'leaf_index'
pub fn pop_side_branch_leaf(stack: &mut Vec<SideInfo<'a>>, leaf_index: usize) -> Option<SideInfoType<'a>> {