| Copyright | Guillaume Sabbagh 2022 | 
|---|---|
| License | GPL-3 | 
| Maintainer | guillaumesabbagh@protonmail.com | 
| Stability | experimental | 
| Portability | portable | 
| Safe Haskell | Safe-Inferred | 
| Language | Haskell2010 | 
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
- class Category c m o => FiniteCategory c m o | c -> m, m -> o where
- arrows :: (FiniteCategory c m o, Morphism m o) => c -> Set m
- arFrom :: (FiniteCategory c m o, Morphism m o) => c -> o -> Set m
- arTo :: (FiniteCategory c m o, Morphism m o) => c -> o -> Set m
- arFrom2 :: (FiniteCategory c m o, Morphism m o) => c -> Set o -> Set m
- arTo2 :: (FiniteCategory c m o, Morphism m o) => c -> Set o -> Set m
- arrowsWithoutId :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> Set m
- arFromWithoutId :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> o -> Set m
- arToWithoutId :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> o -> Set m
- arFrom2WithoutId :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> Set o -> Set m
- arTo2WithoutId :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> Set o -> Set m
- identities :: (FiniteCategory c m o, Morphism m o) => c -> Set m
- isEpic :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> m -> Bool
- isMonic :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> m -> Bool
- isTerminal :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> o -> Bool
- isInitial :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> o -> Bool
- terminalObjects :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> Set o
- initialObjects :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> Set o
- genArrows :: (FiniteCategory c m o, Morphism m o) => c -> Set m
- genArFrom :: (FiniteCategory c m o, Morphism m o) => c -> o -> Set m
- genArTo :: (FiniteCategory c m o, Morphism m o) => c -> o -> Set m
- genArFrom2 :: (FiniteCategory c m o, Morphism m o) => c -> Set o -> Set m
- genArTo2 :: (FiniteCategory c m o, Morphism m o) => c -> Set o -> Set m
- genArrowsWithoutId :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> Set m
- genArFromWithoutId :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> o -> Set m
- genArToWithoutId :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> o -> Set m
- genArFrom2WithoutId :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> Set o -> Set m
- genArTo2WithoutId :: (FiniteCategory c m o, Morphism m o, Eq m, Eq o) => c -> Set o -> Set m
- bruteForceDecompose :: (FiniteCategory c m o, Morphism m o, Eq m) => c -> m -> [m]
- pprintFiniteCategory :: (FiniteCategory c m o, Morphism m o, PrettyPrint c, PrettyPrint m, PrettyPrint o, Eq m, Eq o) => Int -> c -> String
- module Math.Category
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.
Instances
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.
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.
module Math.Category