pub struct DblModelMorphism<'a, Map, Dom, Cod>(pub &'a Map, pub &'a Dom, pub &'a Cod);
Expand description
A functor between models of a double theory defined by a mapping.
This struct borrows its data to perform validation. The domain and codomain are assumed to be valid models of double theories. If that is in question, the models should be validated before validating this object.
Tuple Fields§
§0: &'a Map
§1: &'a Dom
§2: &'a Cod
Implementations§
Source§impl<'a, DomId, CodId, Cat> DblModelMorphism<'a, DiscreteDblModelMapping<DomId, CodId>, DiscreteDblModel<DomId, Cat>, DiscreteDblModel<CodId, Cat>>
impl<'a, DomId, CodId, Cat> DblModelMorphism<'a, DiscreteDblModelMapping<DomId, CodId>, DiscreteDblModel<DomId, Cat>, DiscreteDblModel<CodId, Cat>>
Sourcepub fn iter_invalid(
&self,
) -> impl Iterator<Item = InvalidDblModelMorphism<DomId, DomId>> + 'a + use<'a, DomId, CodId, Cat>
pub fn iter_invalid( &self, ) -> impl Iterator<Item = InvalidDblModelMorphism<DomId, DomId>> + 'a + use<'a, DomId, CodId, Cat>
Iterates over failures of the mapping to be a model morphism.
Sourcepub fn is_injective_objects(&self) -> bool
pub fn is_injective_objects(&self) -> bool
Is the model morphism injective on objects?
Sourcepub fn is_free_simple_faithful(&self) -> bool
pub fn is_free_simple_faithful(&self) -> bool
Is the model morphism faithful?
This check is a nontrivial computation since we cannot enumerate all of the morphisms of the domain category. We simplify the problem by only allowing free models. Furthermore, we restrict the mapping to send generating morphisms in the domain to simple paths in the codomain. If any of these assumptions are violated, the function will panic.
Sourcepub fn is_free_simple_monic(&self) -> bool
pub fn is_free_simple_monic(&self) -> bool
Is the model morphism a monomorphism?
A monomorphism in Cat is an injective on objects and faithful functor. Thus,
we check injectivity on objects and faithfulness. Note that the latter check
is subject to the same limitations as
is_free_simple_faithful
.
Auto Trait Implementations§
impl<'a, Map, Dom, Cod> Freeze for DblModelMorphism<'a, Map, Dom, Cod>
impl<'a, Map, Dom, Cod> RefUnwindSafe for DblModelMorphism<'a, Map, Dom, Cod>
impl<'a, Map, Dom, Cod> Send for DblModelMorphism<'a, Map, Dom, Cod>
impl<'a, Map, Dom, Cod> Sync for DblModelMorphism<'a, Map, Dom, Cod>
impl<'a, Map, Dom, Cod> Unpin for DblModelMorphism<'a, Map, Dom, Cod>
impl<'a, Map, Dom, Cod> UnwindSafe for DblModelMorphism<'a, Map, Dom, Cod>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.