Trait lattices::LatticeBimorphism
source · pub trait LatticeBimorphism<LatA, LatB> {
type Output;
// Required method
fn call(&mut self, lat_a: LatA, lat_b: LatB) -> Self::Output;
}
Expand description
Semilattice bimorphism. Lattice merge must distribute over this binary function, in both arguments.
Use crate::test::check_lattice_bimorphism
to spot-test an implementation.
Required Associated Types§
Required Methods§
Implementors§
source§impl<'a, 'b, GhtA, GhtB, GhtOut> LatticeBimorphism<&'a GhtA, &'b GhtB> for GhtCartesianProductBimorphism<GhtOut>where
GhtA: GeneralizedHashTrieNode,
GhtA::Storage: VariadicSet<Schema = GhtA::Schema>,
GhtB: GeneralizedHashTrieNode,
GhtB::Storage: VariadicSet<Schema = GhtB::Schema>,
GhtOut: FromIterator<<GhtA::SuffixSchema as VariadicExt>::Extend<GhtB::SuffixSchema>>,
GhtA::SuffixSchema: CloneVariadic,
GhtB::SuffixSchema: CloneVariadic,
impl<'a, 'b, GhtA, GhtB, GhtOut> LatticeBimorphism<&'a GhtA, &'b GhtB> for GhtCartesianProductBimorphism<GhtOut>where
GhtA: GeneralizedHashTrieNode,
GhtA::Storage: VariadicSet<Schema = GhtA::Schema>,
GhtB: GeneralizedHashTrieNode,
GhtB::Storage: VariadicSet<Schema = GhtB::Schema>,
GhtOut: FromIterator<<GhtA::SuffixSchema as VariadicExt>::Extend<GhtB::SuffixSchema>>,
GhtA::SuffixSchema: CloneVariadic,
GhtB::SuffixSchema: CloneVariadic,
source§impl<'a, 'b, GhtA, GhtB, GhtOut> LatticeBimorphism<&'a GhtA, &'b GhtB> for GhtValTypeProductBimorphism<GhtOut>where
GhtA: GeneralizedHashTrieNode,
GhtA::Storage: VariadicSet<Schema = GhtA::Schema>,
GhtB: GeneralizedHashTrieNode,
GhtB::Storage: VariadicSet<Schema = GhtB::Schema>,
GhtOut: FromIterator<<GhtA::Schema as VariadicExt>::Extend<GhtB::ValType>>,
GhtA::Schema: Eq + Hash + CloneVariadic,
GhtB::Schema: Eq + Hash + SplitBySuffix<GhtB::ValType>,
GhtB::ValType: CloneVariadic,
impl<'a, 'b, GhtA, GhtB, GhtOut> LatticeBimorphism<&'a GhtA, &'b GhtB> for GhtValTypeProductBimorphism<GhtOut>where
GhtA: GeneralizedHashTrieNode,
GhtA::Storage: VariadicSet<Schema = GhtA::Schema>,
GhtB: GeneralizedHashTrieNode,
GhtB::Storage: VariadicSet<Schema = GhtB::Schema>,
GhtOut: FromIterator<<GhtA::Schema as VariadicExt>::Extend<GhtB::ValType>>,
GhtA::Schema: Eq + Hash + CloneVariadic,
GhtB::Schema: Eq + Hash + SplitBySuffix<GhtB::ValType>,
GhtB::ValType: CloneVariadic,
source§impl<'a, 'b, Head, GhtA, GhtB, ValFunc> LatticeBimorphism<&'a GhtA, &'b GhtB> for GhtNodeKeyedBimorphism<ValFunc>where
Head: Clone + Hash + Eq,
ValFunc: LatticeBimorphism<&'a GhtA::Get, &'b GhtB::Get>,
ValFunc::Output: GeneralizedHashTrieNode,
GhtA: GeneralizedHashTrieNode<Head = Head> + GhtGet,
GhtB: GeneralizedHashTrieNode<Head = Head, Schema = GhtA::Schema> + GhtGet,
GhtA::Storage: VariadicSet<Schema = GhtA::Schema>,
GhtB::Storage: VariadicSet<Schema = GhtB::Schema>,
<GhtA::SuffixSchema as VariadicExt>::AsRefVar<'a>: CloneVariadic,
<GhtB::SuffixSchema as VariadicExt>::AsRefVar<'b>: CloneVariadic,
impl<'a, 'b, Head, GhtA, GhtB, ValFunc> LatticeBimorphism<&'a GhtA, &'b GhtB> for GhtNodeKeyedBimorphism<ValFunc>where
Head: Clone + Hash + Eq,
ValFunc: LatticeBimorphism<&'a GhtA::Get, &'b GhtB::Get>,
ValFunc::Output: GeneralizedHashTrieNode,
GhtA: GeneralizedHashTrieNode<Head = Head> + GhtGet,
GhtB: GeneralizedHashTrieNode<Head = Head, Schema = GhtA::Schema> + GhtGet,
GhtA::Storage: VariadicSet<Schema = GhtA::Schema>,
GhtB::Storage: VariadicSet<Schema = GhtB::Schema>,
<GhtA::SuffixSchema as VariadicExt>::AsRefVar<'a>: CloneVariadic,
<GhtB::SuffixSchema as VariadicExt>::AsRefVar<'b>: CloneVariadic,
bimorphism implementation for equijoining Ght Nodes