open_hypergraphs/strict/
mod.rs

1//! An implementation of Open Hypergraphs directly following the paper
2//! ["Data-Parallel Algorithms for String Diagrams"](https://arxiv.org/pdf/2305.01041).
3//!
4//! To use `Vec`-backed open hypergraphs, use the [`crate::strict::vec`] module, which provides some
5//! type-aliases specialised to the `Vec` backend.
6pub mod hypergraph;
7pub mod open_hypergraph;
8
9pub mod eval;
10pub mod functor;
11pub mod layer;
12
13pub use crate::array::*;
14pub use crate::category::*;
15pub use crate::finite_function::FiniteFunction;
16pub use crate::indexed_coproduct::IndexedCoproduct;
17pub use crate::semifinite::SemifiniteFunction;
18pub use hypergraph::Hypergraph;
19pub use open_hypergraph::*;
20
21pub mod vec {
22    //! Type alises for strict Open Hypergraphs using the [`VecKind`] array backend.
23    pub use crate::array::vec::*;
24    pub use crate::category::*;
25
26    pub type OpenHypergraph<Obj, Arr> =
27        crate::strict::open_hypergraph::OpenHypergraph<VecKind, Obj, Arr>;
28    pub type Hypergraph<Obj, Arr> = crate::strict::hypergraph::Hypergraph<VecKind, Obj, Arr>;
29    pub type FiniteFunction = crate::finite_function::FiniteFunction<VecKind>;
30    pub type SemifiniteFunction<T> = crate::semifinite::SemifiniteFunction<VecKind, T>;
31    pub type IndexedCoproduct<F> = crate::indexed_coproduct::IndexedCoproduct<VecKind, F>;
32}