pub struct DiscreteDblModelMorphismFinder<'a> { /* private fields */ }Expand description
Finds morphisms between two models of a discrete double theory.
Morphisms are found using backtracking search. In general, there can be infinitely many morphisms between two models, so not all of them can be reported. The search is restricted to morphisms that send each basic morphism in the domain to a simple path of basic morphisms in the codomain.
Implementations§
Source§impl<'a> DiscreteDblModelMorphismFinder<'a>
impl<'a> DiscreteDblModelMorphismFinder<'a>
Sourcepub fn max_path_len(&mut self, n: usize) -> &mut Self
pub fn max_path_len(&mut self, n: usize) -> &mut Self
Restrict the maximum length of the image of a generator.
Sourcepub fn injective_ob(&mut self) -> &mut Self
pub fn injective_ob(&mut self) -> &mut Self
Restrict the search to model morphisms that are injective on objects.
Sourcepub fn faithful(&mut self) -> &mut Self
pub fn faithful(&mut self) -> &mut Self
Restrict the search to model morphisms that are faithful.
A faithful morphism is an injective map on morphisms when restricted to any domain/codomain pair of objects in the domain.
In future work, this will be efficiently checked for early search tree pruning; however, this is currently enforced by filtering with is_free_simple_faithful.
Sourcepub fn initialize_ob(
&mut self,
ob: QualifiedName,
val: QualifiedName,
) -> &mut Self
pub fn initialize_ob( &mut self, ob: QualifiedName, val: QualifiedName, ) -> &mut Self
Require morphisms to send object ob in domain to val in codomain.
Sourcepub fn initialize_mor(
&mut self,
m: QualifiedName,
val: QualifiedPath,
) -> &mut Self
pub fn initialize_mor( &mut self, m: QualifiedName, val: QualifiedPath, ) -> &mut Self
Require morphisms to send morphism m in domain to val in codomain.
Sourcepub fn find_all(&mut self) -> Vec<DiscreteDblModelMapping>
pub fn find_all(&mut self) -> Vec<DiscreteDblModelMapping>
Finds all morphisms.
Auto Trait Implementations§
impl<'a> Freeze for DiscreteDblModelMorphismFinder<'a>
impl<'a> !RefUnwindSafe for DiscreteDblModelMorphismFinder<'a>
impl<'a> !Send for DiscreteDblModelMorphismFinder<'a>
impl<'a> !Sync for DiscreteDblModelMorphismFinder<'a>
impl<'a> Unpin for DiscreteDblModelMorphismFinder<'a>
impl<'a> !UnwindSafe for DiscreteDblModelMorphismFinder<'a>
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.