Copyright | Guillaume Sabbagh 2022 |
---|---|
License | GPL-3 |
Maintainer | [email protected] |
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