Skip to main content

HyperSimulation

Trait HyperSimulation 

Source
pub trait HyperSimulation<'a>: Hypergraph<'a> {
    // Required methods
    fn get_simulation_fixpoint(
        &'a self,
        other: &'a Self,
        l_match: &mut impl LMatch<Edge = Self::Edge>,
    ) -> HashMap<&'a Self::Node, HashSet<&'a Self::Node>>;
    fn get_simulation_recursive(
        &'a self,
        other: &'a Self,
        l_match: &mut impl LMatch<Edge = Self::Edge>,
    ) -> HashMap<&'a Self::Node, HashSet<&'a Self::Node>>;
    fn get_simulation_naive(
        &'a self,
        other: &'a Self,
        l_match: &mut impl LMatch<Edge = Self::Edge>,
    ) -> HashMap<&'a Self::Node, HashSet<&'a Self::Node>>;
    fn get_soft_simulation_naive(
        &'a self,
        other: &'a Self,
        l_match: &mut impl LMatch<Edge = Self::Edge>,
    ) -> HashMap<&'a Self::Node, HashSet<&'a Self::Node>>;
    fn get_hyper_simulation_naive(
        &'a self,
        other: &'a Self,
        delta: &'a impl Delta<'a, Node = Self::Node, Edge = Self::Edge>,
        d_match: &impl DMatch<'a, Edge = Self::Edge>,
    ) -> HashMap<&'a Self::Node, HashSet<&'a Self::Node>>;
    fn get_hyper_simulation_effect(
        &'a self,
        other: &'a Self,
        delta: &'a impl Delta<'a, Node = Self::Node, Edge = Self::Edge>,
        d_match: &impl DMatch<'a, Edge = Self::Edge>,
    ) -> HashMap<&'a Self::Node, HashSet<&'a Self::Node>>;
    fn get_hyper_simulation_effect_pass_by(
        &'a self,
        other: &'a Self,
        delta: &'a impl Delta<'a, Node = Self::Node, Edge = Self::Edge>,
        d_match: &impl DMatch<'a, Edge = Self::Edge>,
        type_same_lookup: &HashMap<&'a Self::Node, HashSet<&'a Self::Node>>,
    ) -> HashMap<&'a Self::Node, HashSet<&'a Self::Node>>;
    fn get_hyper_simulation_effect_by_id(
        &'a self,
        hc_map: &HashMap<(usize, usize), Vec<((usize, usize), HashSet<(usize, usize)>)>>,
    ) -> HashSet<(usize, usize)>;
    fn get_hyper_simulation_strict(
        &'a self,
        other: &'a Self,
        delta: &'a impl Delta<'a, Node = Self::Node, Edge = Self::Edge>,
        d_match: &impl DMatch<'a, Edge = Self::Edge>,
    ) -> HashMap<&'a Self::Node, HashSet<&'a Self::Node>>;
}

Required Methods§

Source

fn get_simulation_fixpoint( &'a self, other: &'a Self, l_match: &mut impl LMatch<Edge = Self::Edge>, ) -> HashMap<&'a Self::Node, HashSet<&'a Self::Node>>

Source

fn get_simulation_recursive( &'a self, other: &'a Self, l_match: &mut impl LMatch<Edge = Self::Edge>, ) -> HashMap<&'a Self::Node, HashSet<&'a Self::Node>>

Source

fn get_simulation_naive( &'a self, other: &'a Self, l_match: &mut impl LMatch<Edge = Self::Edge>, ) -> HashMap<&'a Self::Node, HashSet<&'a Self::Node>>

Source

fn get_soft_simulation_naive( &'a self, other: &'a Self, l_match: &mut impl LMatch<Edge = Self::Edge>, ) -> HashMap<&'a Self::Node, HashSet<&'a Self::Node>>

Source

fn get_hyper_simulation_naive( &'a self, other: &'a Self, delta: &'a impl Delta<'a, Node = Self::Node, Edge = Self::Edge>, d_match: &impl DMatch<'a, Edge = Self::Edge>, ) -> HashMap<&'a Self::Node, HashSet<&'a Self::Node>>

Source

fn get_hyper_simulation_effect( &'a self, other: &'a Self, delta: &'a impl Delta<'a, Node = Self::Node, Edge = Self::Edge>, d_match: &impl DMatch<'a, Edge = Self::Edge>, ) -> HashMap<&'a Self::Node, HashSet<&'a Self::Node>>

Source

fn get_hyper_simulation_effect_pass_by( &'a self, other: &'a Self, delta: &'a impl Delta<'a, Node = Self::Node, Edge = Self::Edge>, d_match: &impl DMatch<'a, Edge = Self::Edge>, type_same_lookup: &HashMap<&'a Self::Node, HashSet<&'a Self::Node>>, ) -> HashMap<&'a Self::Node, HashSet<&'a Self::Node>>

Source

fn get_hyper_simulation_effect_by_id( &'a self, hc_map: &HashMap<(usize, usize), Vec<((usize, usize), HashSet<(usize, usize)>)>>, ) -> HashSet<(usize, usize)>

Source

fn get_hyper_simulation_strict( &'a self, other: &'a Self, delta: &'a impl Delta<'a, Node = Self::Node, Edge = Self::Edge>, d_match: &impl DMatch<'a, Edge = Self::Edge>, ) -> HashMap<&'a Self::Node, HashSet<&'a Self::Node>>

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<'a, H> HyperSimulation<'a> for H
where H: Hypergraph<'a> + Typed<'a> + LPredicate<'a> + ContainedHyperedge<'a>,