FiniteCategories-0.6.4.0: Finite categories and usual categorical constructions on them.
CopyrightGuillaume Sabbagh 2022
LicenseGPL-3
Maintainerguillaumesabbagh@protonmail.com
Stabilityexperimental
Portabilityportable
Safe HaskellSafe-Inferred
LanguageHaskell2010

Math.FiniteCategory

Description

A FiniteCategory is a Category where the objects can be enumerated.

This module exports Math.Category so that you only have to import one of them.

Synopsis

FiniteCategory

class Category c m o => FiniteCategory c m o | c -> m, m -> o where Source #

A FiniteCategory is a Category which allows to enumerate its objects.

It is assumed that the set of objects of the category is finite.

Methods

ob :: c -> Set o Source #

ob should return a set of objects.

Instances

Instances details
FiniteCategory DiscreteTwo DiscreteTwoOb DiscreteTwoOb Source # 
Instance details

Defined in Math.FiniteCategories.DiscreteTwo

FiniteCategory Hat HatAr HatOb Source # 
Instance details

Defined in Math.FiniteCategories.Hat

Methods

ob :: Hat -> Set HatOb Source #

FiniteCategory One One One Source # 
Instance details

Defined in Math.FiniteCategories.One

Methods

ob :: One -> Set One Source #

FiniteCategory Parallel ParallelAr ParallelOb Source # 
Instance details

Defined in Math.FiniteCategories.Parallel

FiniteCategory Square SquareAr SquareOb Source # 
Instance details

Defined in Math.FiniteCategories.Square

Methods

ob :: Square -> Set SquareOb Source #

FiniteCategory V VAr VOb Source # 
Instance details

Defined in Math.FiniteCategories.V

Methods

ob :: V -> Set VOb Source #

(FiniteCategory c m o, Morphism m o) => FiniteCategory (Op c) (OpMorphism m) o Source # 
Instance details

Defined in Math.Categories.Opposite

Methods

ob :: Op c -> Set o Source #

(Eq a, Eq b) => FiniteCategory (CompositionGraph a b) (CGMorphism a b) a Source # 
Instance details

Defined in Math.FiniteCategories.CompositionGraph

Methods

ob :: CompositionGraph a b -> Set a Source #

(Eq a, Eq b) => FiniteCategory (SafeCompositionGraph a b) (SCGMorphism a b) a Source # 
Instance details

Defined in Math.FiniteCategories.SafeCompositionGraph

Methods

ob :: SafeCompositionGraph a b -> Set a Source #

(Category c m o, Eq o) => FiniteCategory (FullSubcategory c m o) m o Source # 
Instance details

Defined in Math.FiniteCategories.FullSubcategory

Methods

ob :: FullSubcategory c m o -> Set o Source #

(Category c m o, Eq o) => FiniteCategory (InheritedFullSubcategory c m o) m o Source # 
Instance details

Defined in Math.FiniteCategories.FullSubcategory

Methods

ob :: InheritedFullSubcategory c m o -> Set o Source #

(Category c m o, Eq o, Eq m) => FiniteCategory (InheritedSubcategory c m o) m o Source # 
Instance details

Defined in Math.FiniteCategories.Subcategory

Methods

ob :: InheritedSubcategory c m o -> Set o Source #

(Category c m o, Eq o, Eq m) => FiniteCategory (Subcategory c m o) m o Source # 
Instance details

Defined in Math.FiniteCategories.Subcategory

Methods

ob :: Subcategory c m o -> Set o Source #

(FiniteCategory c m o, Morphism m o, Eq c, Eq m, Eq o) => FiniteCategory (CandidateExponentialObjectCategory c m o) (CandidateExponentialObjectMorphism c m o) (CandidateExponentialObject c m o) Source # 
Instance details

Defined in Math.CartesianClosedCategory

(FiniteCategory c m o, Morphism m o, Eq c, Eq m, Eq o) => FiniteCategory (ExponentialCategory c m o) (ExponentialCategoryMorphism c m o) (ExponentialCategoryObject c m o) Source # 
Instance details

Defined in Math.FiniteCategories.ExponentialCategory

(FiniteCategory cIndex mIndex oIndex, Morphism mIndex oIndex, Eq mIndex, Eq oIndex, FiniteCategory c m o, Morphism m o, Eq m, Eq o) => FiniteCategory (LimitCategory cIndex mIndex oIndex c m o) (Limit oIndex m) (Limit oIndex o) Source # 
Instance details

Defined in Math.FiniteCategories.LimitCategory

Methods

ob :: LimitCategory cIndex mIndex oIndex c m o -> Set (Limit oIndex o) Source #

(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1, FiniteCategory c2 m2 o2, Morphism m2 o2, Eq c2, Eq m2, Eq o2) => FiniteCategory (FunctorCategory c1 m1 o1 c2 m2 o2) (NaturalTransformation c1 m1 o1 c2 m2 o2) (Diagram c1 m1 o1 c2 m2 o2) Source #

A FunctorCategory where the target category is finite allows to enumerate all Diagrams thus making it a FiniteCategory.

Instance details

Defined in Math.Categories.FunctorCategory

Methods

ob :: FunctorCategory c1 m1 o1 c2 m2 o2 -> Set (Diagram c1 m1 o1 c2 m2 o2) Source #

(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq m1, Eq o1, FiniteCategory c2 m2 o2, Morphism m2 o2, Eq m2, Eq o2, FiniteCategory c3 m3 o3, Morphism m3 o3, Eq m3, Eq o3) => FiniteCategory (CommaCategory c1 m1 o1 c2 m2 o2 c3 m3 o3) (CommaMorphism o1 o2 m1 m2 m3) (CommaObject o1 o2 m3) Source # 
Instance details

Defined in Math.Categories.CommaCategory

Methods

ob :: CommaCategory c1 m1 o1 c2 m2 o2 c3 m3 o3 -> Set (CommaObject o1 o2 m3) Source #

(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1, FiniteCategory c2 m2 o2, Morphism m2 o2, Eq c2, Eq m2, Eq o2, FiniteCategory c3 m3 o3, Morphism m3 o3, Eq c3, Eq m3, Eq o3) => FiniteCategory (PostcomposedFunctorCategory c1 m1 o1 c2 m2 o2 c3 m3 o3) (NaturalTransformation c1 m1 o1 c3 m3 o3) (Diagram c1 m1 o1 c3 m3 o3) Source #

A PostcomposedFunctorCategory where the target category is finite allows to enumerate all Diagrams thus making it a FiniteCategory.

Instance details

Defined in Math.Categories.FunctorCategory

Methods

ob :: PostcomposedFunctorCategory c1 m1 o1 c2 m2 o2 c3 m3 o3 -> Set (Diagram c1 m1 o1 c3 m3 o3) Source #

(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1, FiniteCategory c2 m2 o2, Morphism m2 o2, Eq c2, Eq m2, Eq o2, FiniteCategory c3 m3 o3, Morphism m3 o3, Eq c3, Eq m3, Eq o3) => FiniteCategory (PrecomposedFunctorCategory c1 m1 o1 c2 m2 o2 c3 m3 o3) (NaturalTransformation c1 m1 o1 c3 m3 o3) (Diagram c1 m1 o1 c3 m3 o3) Source #

A PrecomposedFunctorCategory where the target category is finite allows to enumerate all Diagrams thus making it a FiniteCategory.

Instance details

Defined in Math.Categories.FunctorCategory

Methods

ob :: PrecomposedFunctorCategory c1 m1 o1 c2 m2 o2 c3 m3 o3 -> Set (Diagram c1 m1 o1 c3 m3 o3) Source #

Morphism enumeration

arrows :: (FiniteCategory c m o, Morphism m o) => c -> Set m Source #

arrows returns the set of all unique morphisms of a category.

arFrom :: (FiniteCategory c m o, Morphism m o) => c -> o -> Set m Source #

arFrom returns the list of unique morphisms going from a specified source.

arTo :: (FiniteCategory c m o, Morphism m o) => c -> o -> Set m Source #

arTo returns the set of morphisms going to a specified target.

arFrom2 :: (FiniteCategory c m o, Morphism m o) => c -> Set o -> Set m Source #

arFrom2 same as arFrom but for multiple sources.

arTo2 :: (FiniteCategory c m o, Morphism m o) => c -> Set o -> Set m Source #

arTo2 same as arTo but for multiple targets.

arrowsWithoutId :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> Set m Source #

Same as arrows but without identities.

arFromWithoutId :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> o -> Set m Source #

Same as arFrom but without identities.

arToWithoutId :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> o -> Set m Source #

Same as arTo but without identities.

arFrom2WithoutId :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> Set o -> Set m Source #

Same as arFrom2 but without identities.

arTo2WithoutId :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> Set o -> Set m Source #

Same as arTo2 but without identities.

identities :: (FiniteCategory c m o, Morphism m o) => c -> Set m Source #

identities returns all the identities of a category.

Morphism predicates

isEpic :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> m -> Bool Source #

Return wether a morphism is an epimorphism.

isMonic :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> m -> Bool Source #

Return wether a morphism is a monomorphism.

Object predicates

isTerminal :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> o -> Bool Source #

Return wether an object is terminal in the category.

isInitial :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> o -> Bool Source #

Return wether an object is initial in the category.

Find special objects

terminalObjects :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> Set o Source #

Return the set of terminal objects in a category.

initialObjects :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> Set o Source #

Return the set of intial objects in a category.

Generated finite category

Generator enumeration

genArrows :: (FiniteCategory c m o, Morphism m o) => c -> Set m Source #

Same as arrows but only returns the generators. genArrows c should be included in arrows c.

genArFrom :: (FiniteCategory c m o, Morphism m o) => c -> o -> Set m Source #

Same as arFrom but only returns the generators. genArFrom c s should be included in arFrom c s.

genArTo :: (FiniteCategory c m o, Morphism m o) => c -> o -> Set m Source #

Same as arTo but only returns the generators. genArTo c t should be included in arTo c t.

genArFrom2 :: (FiniteCategory c m o, Morphism m o) => c -> Set o -> Set m Source #

Same as arFrom2 but only returns the generators. genArFrom2 c (set [s]) should be included in arFrom2 c (set [s]).

genArTo2 :: (FiniteCategory c m o, Morphism m o) => c -> Set o -> Set m Source #

Same as arTo2 but only returns the generators. genArTo2 c (set [t]) should be included in arTo2 c (set [t]).

genArrowsWithoutId :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> Set m Source #

Same as genArrows but without identities.

genArFromWithoutId :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> o -> Set m Source #

Same as genArFrom but without identities.

genArToWithoutId :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> o -> Set m Source #

Same as genArTo but without identities.

genArFrom2WithoutId :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> Set o -> Set m Source #

Same as genArFrom2 but without identities.

genArTo2WithoutId :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> Set o -> Set m Source #

Same as genArTo2 but without identities.

Helper

bruteForceDecompose :: (FiniteCategory c m o, Morphism m o, Eq m) => c -> m -> [m] Source #

If genAr is implemented, we can find the decomposition of a morphism by bruteforce search (we compose every arrow until we get the morphism we want).

This method is meant to be used temporarly until a proper decompose method is implemented. (It is very slow.)

pprintFiniteCategory :: (FiniteCategory c m o, Morphism m o, PrettyPrint c, PrettyPrint m, PrettyPrint o, Eq m, Eq o) => Int -> c -> String Source #

Pretty print a category by enumerating all objects, and then all arrows. The first argument is the verbosity of the pretty print.