{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MonadComprehensions #-}
{-# LANGUAGE MultiParamTypeClasses #-}
module Math.Categories.FinSketch
(
CategorySketch(..),
ArrowSketch(..),
ObjectSketch(..),
ConeSketch(..),
CoconeSketch(..),
TripodSketch(..),
SketchError(..),
constructTwoConeFromTripod,
constructTwoConeFromTripodText,
Sketch,
underlyingCategory,
supportSketch,
distinguishedCones,
distinguishedCocones,
distinguishedTripods,
unsafeSketch,
sketch,
sketchText,
checkSketch,
SketchMorphism,
SketchMorphismError(..),
underlyingFunctor,
unsafeSketchMorphism,
sketchMorphism,
canFunctorBePromotedIntoSketchMorphism,
FinSketch(..),
containsLantern,
containsSpotlight,
containsCrescentMoon,
containsColantern,
containsCospotlight,
containsCocrescentMoon,
LightConstruction(..),
containsLightConstruction,
)
where
import Data.WeakSet (Set)
import qualified Data.WeakSet as Set
import Data.WeakSet.Safe
import Data.WeakMap (Map)
import qualified Data.WeakMap as Map
import Data.WeakMap.Safe
import Data.Text (Text, pack)
import Data.Simplifiable
import Data.Maybe (isJust, isNothing, fromJust)
import Data.Either (isLeft)
import Math.FiniteCategory
import Math.CocompleteCategory
import Math.CartesianClosedCategory
import Math.FiniteCategories.Parallel
import Math.FiniteCategories.CompositionGraph
import Math.FiniteCategories.ColimitCategory
import Math.FiniteCategories.DiscreteTwo
import Math.Categories.FunctorCategory
import Math.Categories.CommaCategory
import Math.Categories.ConeCategory
import Math.Categories.FinCat
import Math.Categories.FinGrph
import Math.FiniteCategoryError
import Math.IO.PrettyPrint
import GHC.Generics
type CategorySketch n e = CompositionGraph n e
type ArrowSketch n e = CGMorphism n e
type ObjectSketch n e = n
type ConeSketch n e = Cone (CategorySketch n e) (ArrowSketch n e) (ObjectSketch n e) (CategorySketch n e) (ArrowSketch n e) (ObjectSketch n e)
type CoconeSketch n e = Cocone (CategorySketch n e) (ArrowSketch n e) (ObjectSketch n e) (CategorySketch n e) (ArrowSketch n e) (ObjectSketch n e)
type TripodSketch n e = Tripod (CategorySketch n e) (ArrowSketch n e) (ObjectSketch n e)
type FunctorSketch n e = FinFunctor (CategorySketch n e) (ArrowSketch n e) (ObjectSketch n e)
constructTwoConeFromTripod :: (Eq n, Eq e) => n -> n -> TripodSketch n e -> ConeSketch n e
constructTwoConeFromTripod :: forall n e.
(Eq n, Eq e) =>
n -> n -> TripodSketch n e -> ConeSketch n e
constructTwoConeFromTripod n
a n
b TripodSketch n e
t
| n
a n -> n -> Bool
forall a. Eq a => a -> a -> Bool
== n
b = [Char] -> ConeSketch n e
forall a. HasCallStack => [Char] -> a
error [Char]
"constructTwoConeFromTripod with two same indexing objects."
| Bool
otherwise = n
-> NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> ConeSketch n e
forall o2 c1 m1 o1 c2 m2.
o2
-> NaturalTransformation c1 m1 o1 c2 m2 o2
-> Cone c1 m1 o1 c2 m2 o2
unsafeCone (Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
-> n
forall c1 m1 o1 c2 m2 o2. Cone c1 m1 o1 c2 m2 o2 -> o2
apex (Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
-> n)
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
-> n
forall a b. (a -> b) -> a -> b
$ TripodSketch n e
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
forall c m o.
Tripod c m o -> Cone DiscreteTwo DiscreteTwoAr DiscreteTwoAr c m o
twoCone (TripodSketch n e
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n)
-> TripodSketch n e
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
forall a b. (a -> b) -> a -> b
$ TripodSketch n e
t) NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
nat
where
indexingCategory :: CompositionGraph n b
indexingCategory = Graph n b -> CompositionLaw n b -> CompositionGraph n b
forall a b. Graph a b -> CompositionLaw a b -> CompositionGraph a b
unsafeCompositionGraph (Set n -> Set (Arrow n b) -> Graph n b
forall n e. Set n -> Set (Arrow n e) -> Graph n e
unsafeGraph ([n] -> Set n
forall a. [a] -> Set a
set [n
a,n
b]) ([Arrow n b] -> Set (Arrow n b)
forall a. [a] -> Set a
set [])) (AssociationList [Arrow n b] [Arrow n b] -> CompositionLaw n b
forall k v. AssociationList k v -> Map k v
weakMap [])
srcDiag :: Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
srcDiag = CategorySketch n e
-> CategorySketch n e
-> n
-> Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 c2 m2 o2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Category c2 m2 o2,
Morphism m2 o2) =>
c1 -> c2 -> o2 -> Diagram c1 m1 o1 c2 m2 o2
constantDiagram CategorySketch n e
forall {b}. CompositionGraph n b
indexingCategory (TripodSketch n e -> CategorySketch n e
forall c m o.
(Category c m o, Morphism m o, Eq c, Eq m, Eq o) =>
Tripod c m o -> c
universeCategoryTripod TripodSketch n e
t) (Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
-> n
forall c1 m1 o1 c2 m2 o2. Cone c1 m1 o1 c2 m2 o2 -> o2
apex (Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
-> n)
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
-> n
forall a b. (a -> b) -> a -> b
$ TripodSketch n e
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
forall c m o.
Tripod c m o -> Cone DiscreteTwo DiscreteTwoAr DiscreteTwoAr c m o
twoCone (TripodSketch n e
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n)
-> TripodSketch n e
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
forall a b. (a -> b) -> a -> b
$ TripodSketch n e
t)
tgtDiag :: Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
tgtDiag = Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 c2 m2 o2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq m1, Eq o1,
Category c2 m2 o2, Morphism m2 o2) =>
Diagram c1 m1 o1 c2 m2 o2 -> Diagram c1 m1 o1 c2 m2 o2
completeDiagram (Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall a b. (a -> b) -> a -> b
$ Diagram{src :: CategorySketch n e
src = CategorySketch n e
forall {b}. CompositionGraph n b
indexingCategory, tgt :: CategorySketch n e
tgt = TripodSketch n e -> CategorySketch n e
forall c m o.
(Category c m o, Morphism m o, Eq c, Eq m, Eq o) =>
Tripod c m o -> c
universeCategoryTripod TripodSketch n e
t, omap :: Map n n
omap = AssociationList n n -> Map n n
forall k v. AssociationList k v -> Map k v
weakMap [(n
a, TripodSketch n e -> n
forall m o c. Morphism m o => Tripod c m o -> o
powerObject TripodSketch n e
t),(n
b, TripodSketch n e -> n
forall m o c. Morphism m o => Tripod c m o -> o
internalDomain TripodSketch n e
t)], mmap :: Map (ArrowSketch n e) (ArrowSketch n e)
mmap = AssociationList (ArrowSketch n e) (ArrowSketch n e)
-> Map (ArrowSketch n e) (ArrowSketch n e)
forall k v. AssociationList k v -> Map k v
weakMap []}
nat :: NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
nat = Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Map n (ArrowSketch n e)
-> NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 c2 m2 o2.
Diagram c1 m1 o1 c2 m2 o2
-> Diagram c1 m1 o1 c2 m2 o2
-> Map o1 m2
-> NaturalTransformation c1 m1 o1 c2 m2 o2
unsafeNaturalTransformation Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
srcDiag Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
tgtDiag (AssociationList n (ArrowSketch n e) -> Map n (ArrowSketch n e)
forall k v. AssociationList k v -> Map k v
weakMap [(n
a, (Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
-> NaturalTransformation
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 c2 m2 o2.
Cone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCone (Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
-> NaturalTransformation
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n)
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
-> NaturalTransformation
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
forall a b. (a -> b) -> a -> b
$ TripodSketch n e
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
forall c m o.
Tripod c m o -> Cone DiscreteTwo DiscreteTwoAr DiscreteTwoAr c m o
twoCone TripodSketch n e
t) NaturalTransformation
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
-> DiscreteTwoAr -> ArrowSketch n e
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
NaturalTransformation c1 m1 o1 c2 m2 o2 -> o1 -> m2
=>$ DiscreteTwoAr
A),(n
b, (Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
-> NaturalTransformation
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 c2 m2 o2.
Cone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCone (Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
-> NaturalTransformation
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n)
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
-> NaturalTransformation
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
forall a b. (a -> b) -> a -> b
$ TripodSketch n e
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
forall c m o.
Tripod c m o -> Cone DiscreteTwo DiscreteTwoAr DiscreteTwoAr c m o
twoCone TripodSketch n e
t) NaturalTransformation
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
-> DiscreteTwoAr -> ArrowSketch n e
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
NaturalTransformation c1 m1 o1 c2 m2 o2 -> o1 -> m2
=>$ DiscreteTwoAr
B)])
constructTwoConeFromTripodText :: TripodSketch Text Text -> ConeSketch Text Text
constructTwoConeFromTripodText :: TripodSketch Text Text -> ConeSketch Text Text
constructTwoConeFromTripodText = Text -> Text -> TripodSketch Text Text -> ConeSketch Text Text
forall n e.
(Eq n, Eq e) =>
n -> n -> TripodSketch n e -> ConeSketch n e
constructTwoConeFromTripod ([Char] -> Text
pack [Char]
"A") ([Char] -> Text
pack [Char]
"B")
data Sketch n e = Sketch {
forall n e. Sketch n e -> CategorySketch n e
underlyingCategory :: CategorySketch n e,
forall n e. Sketch n e -> Set (ConeSketch n e)
distinguishedCones :: Set (ConeSketch n e),
forall n e. Sketch n e -> Set (CoconeSketch n e)
distinguishedCocones :: Set (CoconeSketch n e),
forall n e. Sketch n e -> Set (TripodSketch n e)
distinguishedTripods :: Set (TripodSketch n e)
} deriving (Sketch n e -> Sketch n e -> Bool
(Sketch n e -> Sketch n e -> Bool)
-> (Sketch n e -> Sketch n e -> Bool) -> Eq (Sketch n e)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall n e. (Eq n, Eq e) => Sketch n e -> Sketch n e -> Bool
$c== :: forall n e. (Eq n, Eq e) => Sketch n e -> Sketch n e -> Bool
== :: Sketch n e -> Sketch n e -> Bool
$c/= :: forall n e. (Eq n, Eq e) => Sketch n e -> Sketch n e -> Bool
/= :: Sketch n e -> Sketch n e -> Bool
Eq, Int -> Sketch n e -> ShowS
[Sketch n e] -> ShowS
Sketch n e -> [Char]
(Int -> Sketch n e -> ShowS)
-> (Sketch n e -> [Char])
-> ([Sketch n e] -> ShowS)
-> Show (Sketch n e)
forall a.
(Int -> a -> ShowS) -> (a -> [Char]) -> ([a] -> ShowS) -> Show a
forall n e. (Show n, Show e) => Int -> Sketch n e -> ShowS
forall n e. (Show n, Show e) => [Sketch n e] -> ShowS
forall n e. (Show n, Show e) => Sketch n e -> [Char]
$cshowsPrec :: forall n e. (Show n, Show e) => Int -> Sketch n e -> ShowS
showsPrec :: Int -> Sketch n e -> ShowS
$cshow :: forall n e. (Show n, Show e) => Sketch n e -> [Char]
show :: Sketch n e -> [Char]
$cshowList :: forall n e. (Show n, Show e) => [Sketch n e] -> ShowS
showList :: [Sketch n e] -> ShowS
Show, (forall x. Sketch n e -> Rep (Sketch n e) x)
-> (forall x. Rep (Sketch n e) x -> Sketch n e)
-> Generic (Sketch n e)
forall x. Rep (Sketch n e) x -> Sketch n e
forall x. Sketch n e -> Rep (Sketch n e) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall n e x. Rep (Sketch n e) x -> Sketch n e
forall n e x. Sketch n e -> Rep (Sketch n e) x
$cfrom :: forall n e x. Sketch n e -> Rep (Sketch n e) x
from :: forall x. Sketch n e -> Rep (Sketch n e) x
$cto :: forall n e x. Rep (Sketch n e) x -> Sketch n e
to :: forall x. Rep (Sketch n e) x -> Sketch n e
Generic, Sketch n e -> Sketch n e
(Sketch n e -> Sketch n e) -> Simplifiable (Sketch n e)
forall a. (a -> a) -> Simplifiable a
forall n e.
(Simplifiable n, Simplifiable e, Eq n, Eq e) =>
Sketch n e -> Sketch n e
$csimplify :: forall n e.
(Simplifiable n, Simplifiable e, Eq n, Eq e) =>
Sketch n e -> Sketch n e
simplify :: Sketch n e -> Sketch n e
Simplifiable, Int -> Int -> [Char] -> Sketch n e -> [Char]
Int -> Sketch n e -> [Char]
(Int -> Sketch n e -> [Char])
-> (Int -> Int -> [Char] -> Sketch n e -> [Char])
-> (Int -> Sketch n e -> [Char])
-> PrettyPrint (Sketch n e)
forall a.
(Int -> a -> [Char])
-> (Int -> Int -> [Char] -> a -> [Char])
-> (Int -> a -> [Char])
-> PrettyPrint a
forall n e.
(PrettyPrint n, PrettyPrint e, Eq n, Eq e) =>
Int -> Int -> [Char] -> Sketch n e -> [Char]
forall n e.
(PrettyPrint n, PrettyPrint e, Eq n, Eq e) =>
Int -> Sketch n e -> [Char]
$cpprint :: forall n e.
(PrettyPrint n, PrettyPrint e, Eq n, Eq e) =>
Int -> Sketch n e -> [Char]
pprint :: Int -> Sketch n e -> [Char]
$cpprintWithIndentations :: forall n e.
(PrettyPrint n, PrettyPrint e, Eq n, Eq e) =>
Int -> Int -> [Char] -> Sketch n e -> [Char]
pprintWithIndentations :: Int -> Int -> [Char] -> Sketch n e -> [Char]
$cpprintIndent :: forall n e.
(PrettyPrint n, PrettyPrint e, Eq n, Eq e) =>
Int -> Sketch n e -> [Char]
pprintIndent :: Int -> Sketch n e -> [Char]
PrettyPrint)
supportSketch :: Sketch n e -> Graph n e
supportSketch :: forall n e. Sketch n e -> Graph n e
supportSketch = CompositionGraph n e -> Graph n e
forall a b. CompositionGraph a b -> Graph a b
support(CompositionGraph n e -> Graph n e)
-> (Sketch n e -> CompositionGraph n e) -> Sketch n e -> Graph n e
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Sketch n e -> CompositionGraph n e
forall n e. Sketch n e -> CategorySketch n e
underlyingCategory
unsafeSketch :: CategorySketch n e -> Set (ConeSketch n e) -> Set (CoconeSketch n e) -> Set (TripodSketch n e) -> Sketch n e
unsafeSketch :: forall n e.
CategorySketch n e
-> Set (ConeSketch n e)
-> Set (CoconeSketch n e)
-> Set (TripodSketch n e)
-> Sketch n e
unsafeSketch CategorySketch n e
uc Set (ConeSketch n e)
c Set (CoconeSketch n e)
cc Set (TripodSketch n e)
t = Sketch{underlyingCategory :: CategorySketch n e
underlyingCategory = CategorySketch n e
uc, distinguishedCones :: Set (ConeSketch n e)
distinguishedCones = Set (ConeSketch n e)
c, distinguishedCocones :: Set (CoconeSketch n e)
distinguishedCocones = Set (CoconeSketch n e)
cc, distinguishedTripods :: Set (TripodSketch n e)
distinguishedTripods= Set (TripodSketch n e)
t }
data SketchError n e = BaseOfConeIsNotInUnderlyingCategory (ConeSketch n e)
| BaseOfCoconeIsNotInUnderlyingCategory (CoconeSketch n e)
| BaseOfTripodIsNotInUnderlyingCategory (TripodSketch n e)
| TripodTwoConeDoesNotBelongToDistinguishedCones (TripodSketch n e)
| UnderlyingCategoryError (FiniteCategoryError (ArrowSketch n e) (ObjectSketch n e))
| TwoSameIndexingObjects n
deriving (SketchError n e -> SketchError n e -> Bool
(SketchError n e -> SketchError n e -> Bool)
-> (SketchError n e -> SketchError n e -> Bool)
-> Eq (SketchError n e)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall n e.
(Eq e, Eq n) =>
SketchError n e -> SketchError n e -> Bool
$c== :: forall n e.
(Eq e, Eq n) =>
SketchError n e -> SketchError n e -> Bool
== :: SketchError n e -> SketchError n e -> Bool
$c/= :: forall n e.
(Eq e, Eq n) =>
SketchError n e -> SketchError n e -> Bool
/= :: SketchError n e -> SketchError n e -> Bool
Eq, Int -> SketchError n e -> ShowS
[SketchError n e] -> ShowS
SketchError n e -> [Char]
(Int -> SketchError n e -> ShowS)
-> (SketchError n e -> [Char])
-> ([SketchError n e] -> ShowS)
-> Show (SketchError n e)
forall a.
(Int -> a -> ShowS) -> (a -> [Char]) -> ([a] -> ShowS) -> Show a
forall n e. (Show e, Show n) => Int -> SketchError n e -> ShowS
forall n e. (Show e, Show n) => [SketchError n e] -> ShowS
forall n e. (Show e, Show n) => SketchError n e -> [Char]
$cshowsPrec :: forall n e. (Show e, Show n) => Int -> SketchError n e -> ShowS
showsPrec :: Int -> SketchError n e -> ShowS
$cshow :: forall n e. (Show e, Show n) => SketchError n e -> [Char]
show :: SketchError n e -> [Char]
$cshowList :: forall n e. (Show e, Show n) => [SketchError n e] -> ShowS
showList :: [SketchError n e] -> ShowS
Show, (forall x. SketchError n e -> Rep (SketchError n e) x)
-> (forall x. Rep (SketchError n e) x -> SketchError n e)
-> Generic (SketchError n e)
forall x. Rep (SketchError n e) x -> SketchError n e
forall x. SketchError n e -> Rep (SketchError n e) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall n e x. Rep (SketchError n e) x -> SketchError n e
forall n e x. SketchError n e -> Rep (SketchError n e) x
$cfrom :: forall n e x. SketchError n e -> Rep (SketchError n e) x
from :: forall x. SketchError n e -> Rep (SketchError n e) x
$cto :: forall n e x. Rep (SketchError n e) x -> SketchError n e
to :: forall x. Rep (SketchError n e) x -> SketchError n e
Generic, SketchError n e -> SketchError n e
(SketchError n e -> SketchError n e)
-> Simplifiable (SketchError n e)
forall a. (a -> a) -> Simplifiable a
forall n e.
(Simplifiable n, Simplifiable e, Eq e, Eq n) =>
SketchError n e -> SketchError n e
$csimplify :: forall n e.
(Simplifiable n, Simplifiable e, Eq e, Eq n) =>
SketchError n e -> SketchError n e
simplify :: SketchError n e -> SketchError n e
Simplifiable, Int -> Int -> [Char] -> SketchError n e -> [Char]
Int -> SketchError n e -> [Char]
(Int -> SketchError n e -> [Char])
-> (Int -> Int -> [Char] -> SketchError n e -> [Char])
-> (Int -> SketchError n e -> [Char])
-> PrettyPrint (SketchError n e)
forall a.
(Int -> a -> [Char])
-> (Int -> Int -> [Char] -> a -> [Char])
-> (Int -> a -> [Char])
-> PrettyPrint a
forall n e.
(PrettyPrint n, PrettyPrint e, Eq e, Eq n) =>
Int -> Int -> [Char] -> SketchError n e -> [Char]
forall n e.
(PrettyPrint n, PrettyPrint e, Eq e, Eq n) =>
Int -> SketchError n e -> [Char]
$cpprint :: forall n e.
(PrettyPrint n, PrettyPrint e, Eq e, Eq n) =>
Int -> SketchError n e -> [Char]
pprint :: Int -> SketchError n e -> [Char]
$cpprintWithIndentations :: forall n e.
(PrettyPrint n, PrettyPrint e, Eq e, Eq n) =>
Int -> Int -> [Char] -> SketchError n e -> [Char]
pprintWithIndentations :: Int -> Int -> [Char] -> SketchError n e -> [Char]
$cpprintIndent :: forall n e.
(PrettyPrint n, PrettyPrint e, Eq e, Eq n) =>
Int -> SketchError n e -> [Char]
pprintIndent :: Int -> SketchError n e -> [Char]
PrettyPrint)
find :: (Eq a) => (a -> Bool) -> Set a -> Maybe a
find :: forall a. Eq a => (a -> Bool) -> Set a -> Maybe a
find a -> Bool
p Set a
s = if Set a -> Bool
forall a. Set a -> Bool
Set.null Set a
filtered then Maybe a
forall a. Maybe a
Nothing else a -> Maybe a
forall a. a -> Maybe a
Just (Set a -> a
forall a. Set a -> a
anElement Set a
filtered)
where
filtered :: Set a
filtered = (a -> Bool) -> Set a -> Set a
forall a. (a -> Bool) -> Set a -> Set a
Set.filter a -> Bool
p Set a
s
sketch :: (Eq n, Eq e) => n -> n -> CategorySketch n e -> (Set (ConeSketch n e)) -> (Set (CoconeSketch n e)) -> (Set (TripodSketch n e)) -> Either (SketchError n e) (Sketch n e)
sketch :: forall n e.
(Eq n, Eq e) =>
n
-> n
-> CategorySketch n e
-> Set (ConeSketch n e)
-> Set (CoconeSketch n e)
-> Set (TripodSketch n e)
-> Either (SketchError n e) (Sketch n e)
sketch n
a n
b CategorySketch n e
cat Set (ConeSketch n e)
c Set (CoconeSketch n e)
cc Set (TripodSketch n e)
t
| Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (FiniteCategoryError (CGMorphism n e) n) -> Bool
forall a. Maybe a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Maybe (FiniteCategoryError (CGMorphism n e) n) -> Bool)
-> Maybe (FiniteCategoryError (CGMorphism n e) n) -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (FiniteCategoryError (CGMorphism n e) n)
errCat = SketchError n e -> Either (SketchError n e) (Sketch n e)
forall a b. a -> Either a b
Left (SketchError n e -> Either (SketchError n e) (Sketch n e))
-> SketchError n e -> Either (SketchError n e) (Sketch n e)
forall a b. (a -> b) -> a -> b
$ FiniteCategoryError (CGMorphism n e) n -> SketchError n e
forall n e.
FiniteCategoryError (ArrowSketch n e) n -> SketchError n e
UnderlyingCategoryError (FiniteCategoryError (CGMorphism n e) n -> SketchError n e)
-> FiniteCategoryError (CGMorphism n e) n -> SketchError n e
forall a b. (a -> b) -> a -> b
$ Maybe (FiniteCategoryError (CGMorphism n e) n)
-> FiniteCategoryError (CGMorphism n e) n
forall {a}. Maybe a -> a
fromJust Maybe (FiniteCategoryError (CGMorphism n e) n)
errCat
| Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (ConeSketch n e) -> Bool
forall a. Maybe a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Maybe (ConeSketch n e) -> Bool) -> Maybe (ConeSketch n e) -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (ConeSketch n e)
faultyCone = SketchError n e -> Either (SketchError n e) (Sketch n e)
forall a b. a -> Either a b
Left (SketchError n e -> Either (SketchError n e) (Sketch n e))
-> SketchError n e -> Either (SketchError n e) (Sketch n e)
forall a b. (a -> b) -> a -> b
$ ConeSketch n e -> SketchError n e
forall n e. ConeSketch n e -> SketchError n e
BaseOfConeIsNotInUnderlyingCategory (Maybe (ConeSketch n e) -> ConeSketch n e
forall {a}. Maybe a -> a
fromJust Maybe (ConeSketch n e)
faultyCone)
| Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (CoconeSketch n e) -> Bool
forall a. Maybe a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Maybe (CoconeSketch n e) -> Bool)
-> Maybe (CoconeSketch n e) -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (CoconeSketch n e)
faultyCocone = SketchError n e -> Either (SketchError n e) (Sketch n e)
forall a b. a -> Either a b
Left (SketchError n e -> Either (SketchError n e) (Sketch n e))
-> SketchError n e -> Either (SketchError n e) (Sketch n e)
forall a b. (a -> b) -> a -> b
$ CoconeSketch n e -> SketchError n e
forall n e. CoconeSketch n e -> SketchError n e
BaseOfCoconeIsNotInUnderlyingCategory (Maybe (CoconeSketch n e) -> CoconeSketch n e
forall {a}. Maybe a -> a
fromJust Maybe (CoconeSketch n e)
faultyCocone)
| Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (TripodSketch n e) -> Bool
forall a. Maybe a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Maybe (TripodSketch n e) -> Bool)
-> Maybe (TripodSketch n e) -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (TripodSketch n e)
faultyTripod = SketchError n e -> Either (SketchError n e) (Sketch n e)
forall a b. a -> Either a b
Left (SketchError n e -> Either (SketchError n e) (Sketch n e))
-> SketchError n e -> Either (SketchError n e) (Sketch n e)
forall a b. (a -> b) -> a -> b
$ TripodSketch n e -> SketchError n e
forall n e. TripodSketch n e -> SketchError n e
BaseOfTripodIsNotInUnderlyingCategory (Maybe (TripodSketch n e) -> TripodSketch n e
forall {a}. Maybe a -> a
fromJust Maybe (TripodSketch n e)
faultyTripod)
| n
a n -> n -> Bool
forall a. Eq a => a -> a -> Bool
== n
b = SketchError n e -> Either (SketchError n e) (Sketch n e)
forall a b. a -> Either a b
Left (SketchError n e -> Either (SketchError n e) (Sketch n e))
-> SketchError n e -> Either (SketchError n e) (Sketch n e)
forall a b. (a -> b) -> a -> b
$ n -> SketchError n e
forall n e. n -> SketchError n e
TwoSameIndexingObjects n
a
| Bool
otherwise = Sketch n e -> Either (SketchError n e) (Sketch n e)
forall a b. b -> Either a b
Right Sketch n e
s
where
errCat :: Maybe (FiniteCategoryError (CGMorphism n e) n)
errCat = CategorySketch n e
-> Maybe (FiniteCategoryError (CGMorphism n e) n)
forall c m o.
(FiniteCategory c m o, Morphism m o, Eq m, Eq o) =>
c -> Maybe (FiniteCategoryError m o)
checkFiniteCategory CategorySketch n e
cat
fromJust :: Maybe a -> a
fromJust (Just a
x) = a
x
newCones :: Set (ConeSketch n e)
newCones = n -> n -> TripodSketch n e -> ConeSketch n e
forall n e.
(Eq n, Eq e) =>
n -> n -> TripodSketch n e -> ConeSketch n e
constructTwoConeFromTripod n
a n
b (TripodSketch n e -> ConeSketch n e)
-> Set (TripodSketch n e) -> Set (ConeSketch n e)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Set (TripodSketch n e)
t
s :: Sketch n e
s = Sketch{underlyingCategory :: CategorySketch n e
underlyingCategory = CategorySketch n e
cat, distinguishedCones :: Set (ConeSketch n e)
distinguishedCones = Set (ConeSketch n e)
c Set (ConeSketch n e)
-> Set (ConeSketch n e) -> Set (ConeSketch n e)
forall a. Set a -> Set a -> Set a
||| Set (ConeSketch n e)
newCones, distinguishedCocones :: Set (CoconeSketch n e)
distinguishedCocones = Set (CoconeSketch n e)
cc, distinguishedTripods :: Set (TripodSketch n e)
distinguishedTripods = Set (TripodSketch n e)
t}
faultyCone :: Maybe (ConeSketch n e)
faultyCone = (ConeSketch n e -> Bool)
-> Set (ConeSketch n e) -> Maybe (ConeSketch n e)
forall a. Eq a => (a -> Bool) -> Set a -> Maybe a
find (\ConeSketch n e
x -> ConeSketch n e -> CategorySketch n e
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2, Eq c2, Eq m2, Eq o2) =>
Cone c1 m1 o1 c2 m2 o2 -> c2
universeCategoryCone ConeSketch n e
x CategorySketch n e -> CategorySketch n e -> Bool
forall a. Eq a => a -> a -> Bool
/= CategorySketch n e
cat) Set (ConeSketch n e)
c
faultyCocone :: Maybe (CoconeSketch n e)
faultyCocone = (CoconeSketch n e -> Bool)
-> Set (CoconeSketch n e) -> Maybe (CoconeSketch n e)
forall a. Eq a => (a -> Bool) -> Set a -> Maybe a
find (\CoconeSketch n e
x -> CoconeSketch n e -> CategorySketch n e
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2, Eq c2, Eq m2, Eq o2) =>
Cocone c1 m1 o1 c2 m2 o2 -> c2
universeCategoryCocone CoconeSketch n e
x CategorySketch n e -> CategorySketch n e -> Bool
forall a. Eq a => a -> a -> Bool
/= CategorySketch n e
cat) Set (CoconeSketch n e)
cc
faultyTripod :: Maybe (TripodSketch n e)
faultyTripod = (TripodSketch n e -> Bool)
-> Set (TripodSketch n e) -> Maybe (TripodSketch n e)
forall a. Eq a => (a -> Bool) -> Set a -> Maybe a
find (\TripodSketch n e
x -> TripodSketch n e -> CategorySketch n e
forall c m o.
(Category c m o, Morphism m o, Eq c, Eq m, Eq o) =>
Tripod c m o -> c
universeCategoryTripod TripodSketch n e
x CategorySketch n e -> CategorySketch n e -> Bool
forall a. Eq a => a -> a -> Bool
/= CategorySketch n e
cat) Set (TripodSketch n e)
t
sketchText :: CategorySketch Text Text -> (Set (ConeSketch Text Text)) -> (Set (CoconeSketch Text Text)) -> (Set (TripodSketch Text Text)) -> Either (SketchError Text Text) (Sketch Text Text)
sketchText :: CategorySketch Text Text
-> Set (ConeSketch Text Text)
-> Set (CoconeSketch Text Text)
-> Set (TripodSketch Text Text)
-> Either (SketchError Text Text) (Sketch Text Text)
sketchText = Text
-> Text
-> CategorySketch Text Text
-> Set (ConeSketch Text Text)
-> Set (CoconeSketch Text Text)
-> Set (TripodSketch Text Text)
-> Either (SketchError Text Text) (Sketch Text Text)
forall n e.
(Eq n, Eq e) =>
n
-> n
-> CategorySketch n e
-> Set (ConeSketch n e)
-> Set (CoconeSketch n e)
-> Set (TripodSketch n e)
-> Either (SketchError n e) (Sketch n e)
sketch ([Char] -> Text
pack [Char]
"A") ([Char] -> Text
pack [Char]
"B")
checkSketch :: (Eq n, Eq e) => Sketch n e -> Maybe (SketchError n e)
checkSketch :: forall n e. (Eq n, Eq e) => Sketch n e -> Maybe (SketchError n e)
checkSketch Sketch{underlyingCategory :: forall n e. Sketch n e -> CategorySketch n e
underlyingCategory = CategorySketch n e
cat, distinguishedCones :: forall n e. Sketch n e -> Set (ConeSketch n e)
distinguishedCones = Set (ConeSketch n e)
c, distinguishedCocones :: forall n e. Sketch n e -> Set (CoconeSketch n e)
distinguishedCocones = Set (CoconeSketch n e)
cc, distinguishedTripods :: forall n e. Sketch n e -> Set (TripodSketch n e)
distinguishedTripods = Set (TripodSketch n e)
t}
| Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (FiniteCategoryError (CGMorphism n e) n) -> Bool
forall a. Maybe a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Maybe (FiniteCategoryError (CGMorphism n e) n) -> Bool)
-> Maybe (FiniteCategoryError (CGMorphism n e) n) -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (FiniteCategoryError (CGMorphism n e) n)
errCat = FiniteCategoryError (CGMorphism n e) n -> SketchError n e
forall n e.
FiniteCategoryError (ArrowSketch n e) n -> SketchError n e
UnderlyingCategoryError (FiniteCategoryError (CGMorphism n e) n -> SketchError n e)
-> Maybe (FiniteCategoryError (CGMorphism n e) n)
-> Maybe (SketchError n e)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (FiniteCategoryError (CGMorphism n e) n)
errCat
| Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (ConeSketch n e) -> Bool
forall a. Maybe a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Maybe (ConeSketch n e) -> Bool) -> Maybe (ConeSketch n e) -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (ConeSketch n e)
faultyCone = ConeSketch n e -> SketchError n e
forall n e. ConeSketch n e -> SketchError n e
BaseOfConeIsNotInUnderlyingCategory (ConeSketch n e -> SketchError n e)
-> Maybe (ConeSketch n e) -> Maybe (SketchError n e)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (ConeSketch n e)
faultyCone
| Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (CoconeSketch n e) -> Bool
forall a. Maybe a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Maybe (CoconeSketch n e) -> Bool)
-> Maybe (CoconeSketch n e) -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (CoconeSketch n e)
faultyCocone = CoconeSketch n e -> SketchError n e
forall n e. CoconeSketch n e -> SketchError n e
BaseOfCoconeIsNotInUnderlyingCategory (CoconeSketch n e -> SketchError n e)
-> Maybe (CoconeSketch n e) -> Maybe (SketchError n e)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (CoconeSketch n e)
faultyCocone
| Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (TripodSketch n e) -> Bool
forall a. Maybe a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Maybe (TripodSketch n e) -> Bool)
-> Maybe (TripodSketch n e) -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (TripodSketch n e)
faultyTripod = TripodSketch n e -> SketchError n e
forall n e. TripodSketch n e -> SketchError n e
BaseOfTripodIsNotInUnderlyingCategory (TripodSketch n e -> SketchError n e)
-> Maybe (TripodSketch n e) -> Maybe (SketchError n e)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (TripodSketch n e)
faultyTripod
| Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (TripodSketch n e) -> Bool
forall a. Maybe a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Maybe (TripodSketch n e) -> Bool)
-> Maybe (TripodSketch n e) -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (TripodSketch n e)
faultyTripod2 = TripodSketch n e -> SketchError n e
forall n e. TripodSketch n e -> SketchError n e
TripodTwoConeDoesNotBelongToDistinguishedCones (TripodSketch n e -> SketchError n e)
-> Maybe (TripodSketch n e) -> Maybe (SketchError n e)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (TripodSketch n e)
faultyTripod2
| Bool
otherwise = Maybe (SketchError n e)
forall a. Maybe a
Nothing
where
errCat :: Maybe (FiniteCategoryError (CGMorphism n e) n)
errCat = CategorySketch n e
-> Maybe (FiniteCategoryError (CGMorphism n e) n)
forall c m o.
(FiniteCategory c m o, Morphism m o, Eq m, Eq o) =>
c -> Maybe (FiniteCategoryError m o)
checkFiniteCategory CategorySketch n e
cat
faultyCone :: Maybe (ConeSketch n e)
faultyCone = (ConeSketch n e -> Bool)
-> Set (ConeSketch n e) -> Maybe (ConeSketch n e)
forall a. Eq a => (a -> Bool) -> Set a -> Maybe a
find (\ConeSketch n e
x -> ConeSketch n e -> CategorySketch n e
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2, Eq c2, Eq m2, Eq o2) =>
Cone c1 m1 o1 c2 m2 o2 -> c2
universeCategoryCone ConeSketch n e
x CategorySketch n e -> CategorySketch n e -> Bool
forall a. Eq a => a -> a -> Bool
/= CategorySketch n e
cat) Set (ConeSketch n e)
c
faultyCocone :: Maybe (CoconeSketch n e)
faultyCocone = (CoconeSketch n e -> Bool)
-> Set (CoconeSketch n e) -> Maybe (CoconeSketch n e)
forall a. Eq a => (a -> Bool) -> Set a -> Maybe a
find (\CoconeSketch n e
x -> CoconeSketch n e -> CategorySketch n e
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2, Eq c2, Eq m2, Eq o2) =>
Cocone c1 m1 o1 c2 m2 o2 -> c2
universeCategoryCocone CoconeSketch n e
x CategorySketch n e -> CategorySketch n e -> Bool
forall a. Eq a => a -> a -> Bool
/= CategorySketch n e
cat) Set (CoconeSketch n e)
cc
faultyTripod :: Maybe (TripodSketch n e)
faultyTripod = (TripodSketch n e -> Bool)
-> Set (TripodSketch n e) -> Maybe (TripodSketch n e)
forall a. Eq a => (a -> Bool) -> Set a -> Maybe a
find (\TripodSketch n e
x -> TripodSketch n e -> CategorySketch n e
forall c m o.
(Category c m o, Morphism m o, Eq c, Eq m, Eq o) =>
Tripod c m o -> c
universeCategoryTripod TripodSketch n e
x CategorySketch n e -> CategorySketch n e -> Bool
forall a. Eq a => a -> a -> Bool
/= CategorySketch n e
cat) Set (TripodSketch n e)
t
faultyTripod2 :: Maybe (TripodSketch n e)
faultyTripod2 = (TripodSketch n e -> Bool)
-> Set (TripodSketch n e) -> Maybe (TripodSketch n e)
forall a. Eq a => (a -> Bool) -> Set a -> Maybe a
find (\TripodSketch n e
x -> Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ Set Bool -> Bool
Set.or [ConeSketch n e -> n
forall c1 m1 o1 c2 m2 o2. Cone c1 m1 o1 c2 m2 o2 -> o2
apex ConeSketch n e
cone n -> n -> Bool
forall a. Eq a => a -> a -> Bool
== (Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(CGMorphism n e)
n
-> n
forall c1 m1 o1 c2 m2 o2. Cone c1 m1 o1 c2 m2 o2 -> o2
apex (Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(CGMorphism n e)
n
-> n)
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(CGMorphism n e)
n
-> n
forall a b. (a -> b) -> a -> b
$ TripodSketch n e
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(CGMorphism n e)
n
forall c m o.
Tripod c m o -> Cone DiscreteTwo DiscreteTwoAr DiscreteTwoAr c m o
twoCone TripodSketch n e
x) Bool -> Bool -> Bool
&& (Set n -> Int
forall a. Eq a => Set a -> Int
cardinal (Set n -> Int) -> Set n -> Int
forall a b. (a -> b) -> a -> b
$ CategorySketch n e -> Set n
forall c m o. FiniteCategory c m o => c -> Set o
ob (CategorySketch n e -> Set n) -> CategorySketch n e -> Set n
forall a b. (a -> b) -> a -> b
$ ConeSketch n e -> CategorySketch n e
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2, Eq c2, Eq m2, Eq o2) =>
Cone c1 m1 o1 c2 m2 o2 -> c1
indexingCategoryCone ConeSketch n e
cone) Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& (Set (CGMorphism n e) -> Int
forall a. Eq a => Set a -> Int
cardinal (Set (CGMorphism n e) -> Int) -> Set (CGMorphism n e) -> Int
forall a b. (a -> b) -> a -> b
$ CategorySketch n e -> Set (CGMorphism n e)
forall c m o. (FiniteCategory c m o, Morphism m o) => c -> Set m
arrows (CategorySketch n e -> Set (CGMorphism n e))
-> CategorySketch n e -> Set (CGMorphism n e)
forall a b. (a -> b) -> a -> b
$ ConeSketch n e -> CategorySketch n e
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2, Eq c2, Eq m2, Eq o2) =>
Cone c1 m1 o1 c2 m2 o2 -> c1
indexingCategoryCone ConeSketch n e
cone) Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
2 Bool -> Bool -> Bool
&& (CGMorphism n e -> n
forall m o. Morphism m o => m -> o
target (CGMorphism n e -> n) -> Set (CGMorphism n e) -> Set n
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Map n (CGMorphism n e) -> Set (CGMorphism n e)
forall k a. Eq k => Map k a -> Set a
Map.values (NaturalTransformation
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> Map n (CGMorphism n e)
forall c1 m1 o1 c2 m2 o2.
NaturalTransformation c1 m1 o1 c2 m2 o2 -> Map o1 m2
components (NaturalTransformation
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> Map n (CGMorphism n e))
-> NaturalTransformation
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> Map n (CGMorphism n e)
forall a b. (a -> b) -> a -> b
$ ConeSketch n e
-> NaturalTransformation
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
forall c1 m1 o1 c2 m2 o2.
Cone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCone ConeSketch n e
cone)) Set n -> Set n -> Bool
forall a. Eq a => a -> a -> Bool
== [n] -> Set n
forall a. [a] -> Set a
set [TripodSketch n e -> n
forall m o c. Morphism m o => Tripod c m o -> o
powerObject TripodSketch n e
x, TripodSketch n e -> n
forall m o c. Morphism m o => Tripod c m o -> o
internalDomain TripodSketch n e
x] | ConeSketch n e
cone <- Set (ConeSketch n e)
c]) Set (TripodSketch n e)
t
data SketchMorphism n e = SketchMorphism {
forall n e. SketchMorphism n e -> FunctorSketch n e
underlyingFunctor :: FunctorSketch n e,
forall n e. SketchMorphism n e -> Sketch n e
sourceSketch :: Sketch n e,
forall n e. SketchMorphism n e -> Sketch n e
targetSketch :: Sketch n e
} deriving (SketchMorphism n e -> SketchMorphism n e -> Bool
(SketchMorphism n e -> SketchMorphism n e -> Bool)
-> (SketchMorphism n e -> SketchMorphism n e -> Bool)
-> Eq (SketchMorphism n e)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall n e.
(Eq e, Eq n) =>
SketchMorphism n e -> SketchMorphism n e -> Bool
$c== :: forall n e.
(Eq e, Eq n) =>
SketchMorphism n e -> SketchMorphism n e -> Bool
== :: SketchMorphism n e -> SketchMorphism n e -> Bool
$c/= :: forall n e.
(Eq e, Eq n) =>
SketchMorphism n e -> SketchMorphism n e -> Bool
/= :: SketchMorphism n e -> SketchMorphism n e -> Bool
Eq, Int -> SketchMorphism n e -> ShowS
[SketchMorphism n e] -> ShowS
SketchMorphism n e -> [Char]
(Int -> SketchMorphism n e -> ShowS)
-> (SketchMorphism n e -> [Char])
-> ([SketchMorphism n e] -> ShowS)
-> Show (SketchMorphism n e)
forall a.
(Int -> a -> ShowS) -> (a -> [Char]) -> ([a] -> ShowS) -> Show a
forall n e. (Show e, Show n) => Int -> SketchMorphism n e -> ShowS
forall n e. (Show e, Show n) => [SketchMorphism n e] -> ShowS
forall n e. (Show e, Show n) => SketchMorphism n e -> [Char]
$cshowsPrec :: forall n e. (Show e, Show n) => Int -> SketchMorphism n e -> ShowS
showsPrec :: Int -> SketchMorphism n e -> ShowS
$cshow :: forall n e. (Show e, Show n) => SketchMorphism n e -> [Char]
show :: SketchMorphism n e -> [Char]
$cshowList :: forall n e. (Show e, Show n) => [SketchMorphism n e] -> ShowS
showList :: [SketchMorphism n e] -> ShowS
Show, (forall x. SketchMorphism n e -> Rep (SketchMorphism n e) x)
-> (forall x. Rep (SketchMorphism n e) x -> SketchMorphism n e)
-> Generic (SketchMorphism n e)
forall x. Rep (SketchMorphism n e) x -> SketchMorphism n e
forall x. SketchMorphism n e -> Rep (SketchMorphism n e) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall n e x. Rep (SketchMorphism n e) x -> SketchMorphism n e
forall n e x. SketchMorphism n e -> Rep (SketchMorphism n e) x
$cfrom :: forall n e x. SketchMorphism n e -> Rep (SketchMorphism n e) x
from :: forall x. SketchMorphism n e -> Rep (SketchMorphism n e) x
$cto :: forall n e x. Rep (SketchMorphism n e) x -> SketchMorphism n e
to :: forall x. Rep (SketchMorphism n e) x -> SketchMorphism n e
Generic, SketchMorphism n e -> SketchMorphism n e
(SketchMorphism n e -> SketchMorphism n e)
-> Simplifiable (SketchMorphism n e)
forall a. (a -> a) -> Simplifiable a
forall n e.
(Simplifiable e, Simplifiable n, Eq e, Eq n) =>
SketchMorphism n e -> SketchMorphism n e
$csimplify :: forall n e.
(Simplifiable e, Simplifiable n, Eq e, Eq n) =>
SketchMorphism n e -> SketchMorphism n e
simplify :: SketchMorphism n e -> SketchMorphism n e
Simplifiable, Int -> Int -> [Char] -> SketchMorphism n e -> [Char]
Int -> SketchMorphism n e -> [Char]
(Int -> SketchMorphism n e -> [Char])
-> (Int -> Int -> [Char] -> SketchMorphism n e -> [Char])
-> (Int -> SketchMorphism n e -> [Char])
-> PrettyPrint (SketchMorphism n e)
forall a.
(Int -> a -> [Char])
-> (Int -> Int -> [Char] -> a -> [Char])
-> (Int -> a -> [Char])
-> PrettyPrint a
forall n e.
(PrettyPrint e, PrettyPrint n, Eq e, Eq n) =>
Int -> Int -> [Char] -> SketchMorphism n e -> [Char]
forall n e.
(PrettyPrint e, PrettyPrint n, Eq e, Eq n) =>
Int -> SketchMorphism n e -> [Char]
$cpprint :: forall n e.
(PrettyPrint e, PrettyPrint n, Eq e, Eq n) =>
Int -> SketchMorphism n e -> [Char]
pprint :: Int -> SketchMorphism n e -> [Char]
$cpprintWithIndentations :: forall n e.
(PrettyPrint e, PrettyPrint n, Eq e, Eq n) =>
Int -> Int -> [Char] -> SketchMorphism n e -> [Char]
pprintWithIndentations :: Int -> Int -> [Char] -> SketchMorphism n e -> [Char]
$cpprintIndent :: forall n e.
(PrettyPrint e, PrettyPrint n, Eq e, Eq n) =>
Int -> SketchMorphism n e -> [Char]
pprintIndent :: Int -> SketchMorphism n e -> [Char]
PrettyPrint)
data SketchMorphismError n e = ConeNotSentToACone (ConeSketch n e)
| CoconeNotSentToACocone (CoconeSketch n e)
| TripodNotSentToATripod (TripodSketch n e)
| UnderlyingFunctorError (DiagramError (CategorySketch n e) (ArrowSketch n e) (ObjectSketch n e) (CategorySketch n e) (ArrowSketch n e) (ObjectSketch n e))
| WrongSource (CategorySketch n e) (CategorySketch n e)
| WrongTarget (CategorySketch n e) (CategorySketch n e)
deriving (SketchMorphismError n e -> SketchMorphismError n e -> Bool
(SketchMorphismError n e -> SketchMorphismError n e -> Bool)
-> (SketchMorphismError n e -> SketchMorphismError n e -> Bool)
-> Eq (SketchMorphismError n e)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall n e.
(Eq n, Eq e) =>
SketchMorphismError n e -> SketchMorphismError n e -> Bool
$c== :: forall n e.
(Eq n, Eq e) =>
SketchMorphismError n e -> SketchMorphismError n e -> Bool
== :: SketchMorphismError n e -> SketchMorphismError n e -> Bool
$c/= :: forall n e.
(Eq n, Eq e) =>
SketchMorphismError n e -> SketchMorphismError n e -> Bool
/= :: SketchMorphismError n e -> SketchMorphismError n e -> Bool
Eq, Int -> SketchMorphismError n e -> ShowS
[SketchMorphismError n e] -> ShowS
SketchMorphismError n e -> [Char]
(Int -> SketchMorphismError n e -> ShowS)
-> (SketchMorphismError n e -> [Char])
-> ([SketchMorphismError n e] -> ShowS)
-> Show (SketchMorphismError n e)
forall a.
(Int -> a -> ShowS) -> (a -> [Char]) -> ([a] -> ShowS) -> Show a
forall n e.
(Show n, Show e) =>
Int -> SketchMorphismError n e -> ShowS
forall n e. (Show n, Show e) => [SketchMorphismError n e] -> ShowS
forall n e. (Show n, Show e) => SketchMorphismError n e -> [Char]
$cshowsPrec :: forall n e.
(Show n, Show e) =>
Int -> SketchMorphismError n e -> ShowS
showsPrec :: Int -> SketchMorphismError n e -> ShowS
$cshow :: forall n e. (Show n, Show e) => SketchMorphismError n e -> [Char]
show :: SketchMorphismError n e -> [Char]
$cshowList :: forall n e. (Show n, Show e) => [SketchMorphismError n e] -> ShowS
showList :: [SketchMorphismError n e] -> ShowS
Show, (forall x.
SketchMorphismError n e -> Rep (SketchMorphismError n e) x)
-> (forall x.
Rep (SketchMorphismError n e) x -> SketchMorphismError n e)
-> Generic (SketchMorphismError n e)
forall x.
Rep (SketchMorphismError n e) x -> SketchMorphismError n e
forall x.
SketchMorphismError n e -> Rep (SketchMorphismError n e) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall n e x.
Rep (SketchMorphismError n e) x -> SketchMorphismError n e
forall n e x.
SketchMorphismError n e -> Rep (SketchMorphismError n e) x
$cfrom :: forall n e x.
SketchMorphismError n e -> Rep (SketchMorphismError n e) x
from :: forall x.
SketchMorphismError n e -> Rep (SketchMorphismError n e) x
$cto :: forall n e x.
Rep (SketchMorphismError n e) x -> SketchMorphismError n e
to :: forall x.
Rep (SketchMorphismError n e) x -> SketchMorphismError n e
Generic, SketchMorphismError n e -> SketchMorphismError n e
(SketchMorphismError n e -> SketchMorphismError n e)
-> Simplifiable (SketchMorphismError n e)
forall a. (a -> a) -> Simplifiable a
forall n e.
(Simplifiable n, Simplifiable e, Eq e, Eq n) =>
SketchMorphismError n e -> SketchMorphismError n e
$csimplify :: forall n e.
(Simplifiable n, Simplifiable e, Eq e, Eq n) =>
SketchMorphismError n e -> SketchMorphismError n e
simplify :: SketchMorphismError n e -> SketchMorphismError n e
Simplifiable, Int -> Int -> [Char] -> SketchMorphismError n e -> [Char]
Int -> SketchMorphismError n e -> [Char]
(Int -> SketchMorphismError n e -> [Char])
-> (Int -> Int -> [Char] -> SketchMorphismError n e -> [Char])
-> (Int -> SketchMorphismError n e -> [Char])
-> PrettyPrint (SketchMorphismError n e)
forall a.
(Int -> a -> [Char])
-> (Int -> Int -> [Char] -> a -> [Char])
-> (Int -> a -> [Char])
-> PrettyPrint a
forall n e.
(PrettyPrint n, PrettyPrint e, Eq e, Eq n) =>
Int -> Int -> [Char] -> SketchMorphismError n e -> [Char]
forall n e.
(PrettyPrint n, PrettyPrint e, Eq e, Eq n) =>
Int -> SketchMorphismError n e -> [Char]
$cpprint :: forall n e.
(PrettyPrint n, PrettyPrint e, Eq e, Eq n) =>
Int -> SketchMorphismError n e -> [Char]
pprint :: Int -> SketchMorphismError n e -> [Char]
$cpprintWithIndentations :: forall n e.
(PrettyPrint n, PrettyPrint e, Eq e, Eq n) =>
Int -> Int -> [Char] -> SketchMorphismError n e -> [Char]
pprintWithIndentations :: Int -> Int -> [Char] -> SketchMorphismError n e -> [Char]
$cpprintIndent :: forall n e.
(PrettyPrint n, PrettyPrint e, Eq e, Eq n) =>
Int -> SketchMorphismError n e -> [Char]
pprintIndent :: Int -> SketchMorphismError n e -> [Char]
PrettyPrint)
unsafeSketchMorphism :: Sketch n e -> Sketch n e -> FunctorSketch n e -> SketchMorphism n e
unsafeSketchMorphism :: forall n e.
Sketch n e -> Sketch n e -> FunctorSketch n e -> SketchMorphism n e
unsafeSketchMorphism Sketch n e
s Sketch n e
t FunctorSketch n e
f = SketchMorphism{underlyingFunctor :: FunctorSketch n e
underlyingFunctor = FunctorSketch n e
f, sourceSketch :: Sketch n e
sourceSketch = Sketch n e
s, targetSketch :: Sketch n e
targetSketch = Sketch n e
t}
sketchMorphism :: (Eq n, Eq e) => Sketch n e -> Sketch n e -> FunctorSketch n e -> Either (SketchMorphismError n e) (SketchMorphism n e)
sketchMorphism :: forall n e.
(Eq n, Eq e) =>
Sketch n e
-> Sketch n e
-> FunctorSketch n e
-> Either (SketchMorphismError n e) (SketchMorphism n e)
sketchMorphism Sketch n e
s Sketch n e
t FunctorSketch n e
f
| Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe
(DiagramError
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> Bool
forall a. Maybe a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null Maybe
(DiagramError
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
errFunct = SketchMorphismError n e
-> Either (SketchMorphismError n e) (SketchMorphism n e)
forall a b. a -> Either a b
Left (SketchMorphismError n e
-> Either (SketchMorphismError n e) (SketchMorphism n e))
-> SketchMorphismError n e
-> Either (SketchMorphismError n e) (SketchMorphism n e)
forall a b. (a -> b) -> a -> b
$ DiagramError
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> SketchMorphismError n e
forall n e.
DiagramError
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> SketchMorphismError n e
UnderlyingFunctorError (DiagramError
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> SketchMorphismError n e)
-> DiagramError
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> SketchMorphismError n e
forall a b. (a -> b) -> a -> b
$ Maybe
(DiagramError
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> DiagramError
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall {a}. Maybe a -> a
fromJust (Maybe
(DiagramError
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> DiagramError
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> Maybe
(DiagramError
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> DiagramError
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall a b. (a -> b) -> a -> b
$ Maybe
(DiagramError
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
errFunct
| Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe
(Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> Bool
forall a. Maybe a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null Maybe
(Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
faultyCone = SketchMorphismError n e
-> Either (SketchMorphismError n e) (SketchMorphism n e)
forall a b. a -> Either a b
Left (SketchMorphismError n e
-> Either (SketchMorphismError n e) (SketchMorphism n e))
-> SketchMorphismError n e
-> Either (SketchMorphismError n e) (SketchMorphism n e)
forall a b. (a -> b) -> a -> b
$ Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> SketchMorphismError n e
forall n e. ConeSketch n e -> SketchMorphismError n e
ConeNotSentToACone (Maybe
(Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall {a}. Maybe a -> a
fromJust Maybe
(Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
faultyCone)
| Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe
(Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> Bool
forall a. Maybe a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null Maybe
(Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
faultyCocone = SketchMorphismError n e
-> Either (SketchMorphismError n e) (SketchMorphism n e)
forall a b. a -> Either a b
Left (SketchMorphismError n e
-> Either (SketchMorphismError n e) (SketchMorphism n e))
-> SketchMorphismError n e
-> Either (SketchMorphismError n e) (SketchMorphism n e)
forall a b. (a -> b) -> a -> b
$ Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> SketchMorphismError n e
forall n e. CoconeSketch n e -> SketchMorphismError n e
CoconeNotSentToACocone (Maybe
(Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall {a}. Maybe a -> a
fromJust Maybe
(Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
faultyCocone)
| Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (Tripod (CategorySketch n e) (ArrowSketch n e) n) -> Bool
forall a. Maybe a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null Maybe (Tripod (CategorySketch n e) (ArrowSketch n e) n)
faultyTripod = SketchMorphismError n e
-> Either (SketchMorphismError n e) (SketchMorphism n e)
forall a b. a -> Either a b
Left (SketchMorphismError n e
-> Either (SketchMorphismError n e) (SketchMorphism n e))
-> SketchMorphismError n e
-> Either (SketchMorphismError n e) (SketchMorphism n e)
forall a b. (a -> b) -> a -> b
$ Tripod (CategorySketch n e) (ArrowSketch n e) n
-> SketchMorphismError n e
forall n e. TripodSketch n e -> SketchMorphismError n e
TripodNotSentToATripod (Maybe (Tripod (CategorySketch n e) (ArrowSketch n e) n)
-> Tripod (CategorySketch n e) (ArrowSketch n e) n
forall {a}. Maybe a -> a
fromJust Maybe (Tripod (CategorySketch n e) (ArrowSketch n e) n)
faultyTripod)
| FunctorSketch n e -> CategorySketch n e
forall c1 m1 o1 c2 m2 o2. Diagram c1 m1 o1 c2 m2 o2 -> c1
src FunctorSketch n e
f CategorySketch n e -> CategorySketch n e -> Bool
forall a. Eq a => a -> a -> Bool
/= Sketch n e -> CategorySketch n e
forall n e. Sketch n e -> CategorySketch n e
underlyingCategory Sketch n e
s = SketchMorphismError n e
-> Either (SketchMorphismError n e) (SketchMorphism n e)
forall a b. a -> Either a b
Left (SketchMorphismError n e
-> Either (SketchMorphismError n e) (SketchMorphism n e))
-> SketchMorphismError n e
-> Either (SketchMorphismError n e) (SketchMorphism n e)
forall a b. (a -> b) -> a -> b
$ CategorySketch n e -> CategorySketch n e -> SketchMorphismError n e
forall n e.
CategorySketch n e -> CategorySketch n e -> SketchMorphismError n e
WrongSource (FunctorSketch n e -> CategorySketch n e
forall c1 m1 o1 c2 m2 o2. Diagram c1 m1 o1 c2 m2 o2 -> c1
src FunctorSketch n e
f) (Sketch n e -> CategorySketch n e
forall n e. Sketch n e -> CategorySketch n e
underlyingCategory Sketch n e
s)
| FunctorSketch n e -> CategorySketch n e
forall c1 m1 o1 c2 m2 o2. Diagram c1 m1 o1 c2 m2 o2 -> c2
tgt FunctorSketch n e
f CategorySketch n e -> CategorySketch n e -> Bool
forall a. Eq a => a -> a -> Bool
/= Sketch n e -> CategorySketch n e
forall n e. Sketch n e -> CategorySketch n e
underlyingCategory Sketch n e
t = SketchMorphismError n e
-> Either (SketchMorphismError n e) (SketchMorphism n e)
forall a b. a -> Either a b
Left (SketchMorphismError n e
-> Either (SketchMorphismError n e) (SketchMorphism n e))
-> SketchMorphismError n e
-> Either (SketchMorphismError n e) (SketchMorphism n e)
forall a b. (a -> b) -> a -> b
$ CategorySketch n e -> CategorySketch n e -> SketchMorphismError n e
forall n e.
CategorySketch n e -> CategorySketch n e -> SketchMorphismError n e
WrongTarget (FunctorSketch n e -> CategorySketch n e
forall c1 m1 o1 c2 m2 o2. Diagram c1 m1 o1 c2 m2 o2 -> c2
tgt FunctorSketch n e
f) (Sketch n e -> CategorySketch n e
forall n e. Sketch n e -> CategorySketch n e
underlyingCategory Sketch n e
t)
| Bool
otherwise = SketchMorphism n e
-> Either (SketchMorphismError n e) (SketchMorphism n e)
forall a b. b -> Either a b
Right (SketchMorphism n e
-> Either (SketchMorphismError n e) (SketchMorphism n e))
-> SketchMorphism n e
-> Either (SketchMorphismError n e) (SketchMorphism n e)
forall a b. (a -> b) -> a -> b
$ SketchMorphism{underlyingFunctor :: FunctorSketch n e
underlyingFunctor = FunctorSketch n e
f, sourceSketch :: Sketch n e
sourceSketch = Sketch n e
s, targetSketch :: Sketch n e
targetSketch = Sketch n e
t}
where
errFunct :: Maybe
(DiagramError
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
errFunct = FunctorSketch n e
-> Maybe
(DiagramError
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
forall c1 m1 o1 c2 m2 o2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq m1, Eq o1,
Category c2 m2 o2, Morphism m2 o2, Eq m2, Eq o2) =>
Diagram c1 m1 o1 c2 m2 o2 -> Maybe (DiagramError c1 m1 o1 c2 m2 o2)
checkDiagram FunctorSketch n e
f
fromJust :: Maybe a -> a
fromJust (Just a
x) = a
x
faultyCone :: Maybe
(Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
faultyCone = (Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Bool)
-> Set
(Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> Maybe
(Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
forall a. Eq a => (a -> Bool) -> Set a -> Maybe a
find (\Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
cone_ -> Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ (n
-> NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall o2 c1 m1 o1 c2 m2.
o2
-> NaturalTransformation c1 m1 o1 c2 m2 o2
-> Cone c1 m1 o1 c2 m2 o2
unsafeCone (FunctorSketch n e
f FunctorSketch n e -> n -> n
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ (Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> n
forall c1 m1 o1 c2 m2 o2. Cone c1 m1 o1 c2 m2 o2 -> o2
apex Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
cone_)) (FunctorSketch n e
f FunctorSketch n e
-> NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 c2 m2 o2 m3 o3 c3.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Category c2 m2 o2, Morphism m2 o2, Eq c2, Eq m2, Eq o2,
Morphism m3 o3) =>
Diagram c2 m2 o2 c3 m3 o3
-> NaturalTransformation c1 m1 o1 c2 m2 o2
-> NaturalTransformation c1 m1 o1 c3 m3 o3
<-@<= Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 c2 m2 o2.
Cone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCone Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
cone_)) Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Set
(Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> Bool
forall a. Eq a => a -> Set a -> Bool
`Set.isIn` (Sketch n e
-> Set
(Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
forall n e. Sketch n e -> Set (ConeSketch n e)
distinguishedCones Sketch n e
t)) (Sketch n e
-> Set
(Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
forall n e. Sketch n e -> Set (ConeSketch n e)
distinguishedCones Sketch n e
s)
faultyCocone :: Maybe
(Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
faultyCocone = (Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Bool)
-> Set
(Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> Maybe
(Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
forall a. Eq a => (a -> Bool) -> Set a -> Maybe a
find (\Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
cocone_ -> Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ (n
-> NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall o2 c1 m1 o1 c2 m2.
o2
-> NaturalTransformation c1 m1 o1 c2 m2 o2
-> Cocone c1 m1 o1 c2 m2 o2
unsafeCocone (FunctorSketch n e
f FunctorSketch n e -> n -> n
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ (Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> n
forall c1 m1 o1 c2 m2 o2. Cocone c1 m1 o1 c2 m2 o2 -> o2
nadir Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
cocone_)) (Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 c2 m2 o2.
Cocone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCocone Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
cocone_ NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> FunctorSketch n e
-> NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 c2 m2 o2 m3 o3 c3.
(Category c1 m1 o1, Morphism m1 o1, Eq m1, FiniteCategory c2 m2 o2,
Morphism m2 o2, Eq c2, Eq m2, Eq o2, Morphism m3 o3, Eq c3, Eq m3,
Eq o3) =>
NaturalTransformation c2 m2 o2 c3 m3 o3
-> Diagram c1 m1 o1 c2 m2 o2
-> NaturalTransformation c1 m1 o1 c3 m3 o3
<=@<- FunctorSketch n e
f)) Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Set
(Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> Bool
forall a. Eq a => a -> Set a -> Bool
`Set.isIn` (Sketch n e
-> Set
(Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
forall n e. Sketch n e -> Set (CoconeSketch n e)
distinguishedCocones Sketch n e
t)) (Sketch n e
-> Set
(Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
forall n e. Sketch n e -> Set (CoconeSketch n e)
distinguishedCocones Sketch n e
s)
faultyTripod :: Maybe (Tripod (CategorySketch n e) (ArrowSketch n e) n)
faultyTripod = (Tripod (CategorySketch n e) (ArrowSketch n e) n -> Bool)
-> Set (Tripod (CategorySketch n e) (ArrowSketch n e) n)
-> Maybe (Tripod (CategorySketch n e) (ArrowSketch n e) n)
forall a. Eq a => (a -> Bool) -> Set a -> Maybe a
find (\Tripod (CategorySketch n e) (ArrowSketch n e) n
tripod_ -> Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ (Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
-> ArrowSketch n e
-> Tripod (CategorySketch n e) (ArrowSketch n e) n
forall c m o.
Cone DiscreteTwo DiscreteTwoAr DiscreteTwoAr c m o
-> m -> Tripod c m o
unsafeTripod (n
-> NaturalTransformation
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
forall o2 c1 m1 o1 c2 m2.
o2
-> NaturalTransformation c1 m1 o1 c2 m2 o2
-> Cone c1 m1 o1 c2 m2 o2
unsafeCone (FunctorSketch n e
f FunctorSketch n e -> n -> n
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ (Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
-> n
forall c1 m1 o1 c2 m2 o2. Cone c1 m1 o1 c2 m2 o2 -> o2
apex (Tripod (CategorySketch n e) (ArrowSketch n e) n
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
forall c m o.
Tripod c m o -> Cone DiscreteTwo DiscreteTwoAr DiscreteTwoAr c m o
twoCone Tripod (CategorySketch n e) (ArrowSketch n e) n
tripod_))) (FunctorSketch n e
f FunctorSketch n e
-> NaturalTransformation
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
-> NaturalTransformation
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 c2 m2 o2 m3 o3 c3.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Category c2 m2 o2, Morphism m2 o2, Eq c2, Eq m2, Eq o2,
Morphism m3 o3) =>
Diagram c2 m2 o2 c3 m3 o3
-> NaturalTransformation c1 m1 o1 c2 m2 o2
-> NaturalTransformation c1 m1 o1 c3 m3 o3
<-@<= Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
-> NaturalTransformation
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 c2 m2 o2.
Cone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCone (Tripod (CategorySketch n e) (ArrowSketch n e) n
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
forall c m o.
Tripod c m o -> Cone DiscreteTwo DiscreteTwoAr DiscreteTwoAr c m o
twoCone Tripod (CategorySketch n e) (ArrowSketch n e) n
tripod_))) (FunctorSketch n e
f FunctorSketch n e -> ArrowSketch n e -> ArrowSketch n e
forall c1 m1 o1 m2 o2 c2.
(Category c1 m1 o1, Morphism m1 o1, Morphism m2 o2, Eq m1) =>
Diagram c1 m1 o1 c2 m2 o2 -> m1 -> m2
->£ (Tripod (CategorySketch n e) (ArrowSketch n e) n -> ArrowSketch n e
forall c m o. Tripod c m o -> m
evalMap Tripod (CategorySketch n e) (ArrowSketch n e) n
tripod_))) Tripod (CategorySketch n e) (ArrowSketch n e) n
-> Set (Tripod (CategorySketch n e) (ArrowSketch n e) n) -> Bool
forall a. Eq a => a -> Set a -> Bool
`Set.isIn` (Sketch n e -> Set (Tripod (CategorySketch n e) (ArrowSketch n e) n)
forall n e. Sketch n e -> Set (TripodSketch n e)
distinguishedTripods Sketch n e
t)) (Sketch n e -> Set (Tripod (CategorySketch n e) (ArrowSketch n e) n)
forall n e. Sketch n e -> Set (TripodSketch n e)
distinguishedTripods Sketch n e
s)
canFunctorBePromotedIntoSketchMorphism :: (Eq e, Eq n) => Sketch n e -> Sketch n e -> (FunctorSketch n e) -> Bool
canFunctorBePromotedIntoSketchMorphism :: forall e n.
(Eq e, Eq n) =>
Sketch n e -> Sketch n e -> FunctorSketch n e -> Bool
canFunctorBePromotedIntoSketchMorphism Sketch n e
s Sketch n e
t FunctorSketch n e
f = Maybe
(Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> Bool
forall a. Maybe a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null Maybe
(Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
faultyCone Bool -> Bool -> Bool
&& Maybe
(Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> Bool
forall a. Maybe a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null Maybe
(Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
faultyCocone Bool -> Bool -> Bool
&& Maybe (Tripod (CategorySketch n e) (ArrowSketch n e) n) -> Bool
forall a. Maybe a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null Maybe (Tripod (CategorySketch n e) (ArrowSketch n e) n)
faultyTripod
where
faultyCone :: Maybe
(Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
faultyCone = (Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Bool)
-> Set
(Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> Maybe
(Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
forall a. Eq a => (a -> Bool) -> Set a -> Maybe a
find (\Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
cone_ -> Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ (n
-> NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall o2 c1 m1 o1 c2 m2.
o2
-> NaturalTransformation c1 m1 o1 c2 m2 o2
-> Cone c1 m1 o1 c2 m2 o2
unsafeCone (FunctorSketch n e
f FunctorSketch n e -> n -> n
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ (Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> n
forall c1 m1 o1 c2 m2 o2. Cone c1 m1 o1 c2 m2 o2 -> o2
apex Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
cone_)) (FunctorSketch n e
f FunctorSketch n e
-> NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 c2 m2 o2 m3 o3 c3.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Category c2 m2 o2, Morphism m2 o2, Eq c2, Eq m2, Eq o2,
Morphism m3 o3) =>
Diagram c2 m2 o2 c3 m3 o3
-> NaturalTransformation c1 m1 o1 c2 m2 o2
-> NaturalTransformation c1 m1 o1 c3 m3 o3
<-@<= Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 c2 m2 o2.
Cone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCone Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
cone_)) Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Set
(Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> Bool
forall a. Eq a => a -> Set a -> Bool
`Set.isIn` (Sketch n e
-> Set
(Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
forall n e. Sketch n e -> Set (ConeSketch n e)
distinguishedCones Sketch n e
t)) (Sketch n e
-> Set
(Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
forall n e. Sketch n e -> Set (ConeSketch n e)
distinguishedCones Sketch n e
s)
faultyCocone :: Maybe
(Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
faultyCocone = (Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Bool)
-> Set
(Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> Maybe
(Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
forall a. Eq a => (a -> Bool) -> Set a -> Maybe a
find (\Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
cocone_ -> Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ (n
-> NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall o2 c1 m1 o1 c2 m2.
o2
-> NaturalTransformation c1 m1 o1 c2 m2 o2
-> Cocone c1 m1 o1 c2 m2 o2
unsafeCocone (FunctorSketch n e
f FunctorSketch n e -> n -> n
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ (Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> n
forall c1 m1 o1 c2 m2 o2. Cocone c1 m1 o1 c2 m2 o2 -> o2
nadir Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
cocone_)) (Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 c2 m2 o2.
Cocone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCocone Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
cocone_ NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> FunctorSketch n e
-> NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 c2 m2 o2 m3 o3 c3.
(Category c1 m1 o1, Morphism m1 o1, Eq m1, FiniteCategory c2 m2 o2,
Morphism m2 o2, Eq c2, Eq m2, Eq o2, Morphism m3 o3, Eq c3, Eq m3,
Eq o3) =>
NaturalTransformation c2 m2 o2 c3 m3 o3
-> Diagram c1 m1 o1 c2 m2 o2
-> NaturalTransformation c1 m1 o1 c3 m3 o3
<=@<- FunctorSketch n e
f)) Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Set
(Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> Bool
forall a. Eq a => a -> Set a -> Bool
`Set.isIn` (Sketch n e
-> Set
(Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
forall n e. Sketch n e -> Set (CoconeSketch n e)
distinguishedCocones Sketch n e
t)) (Sketch n e
-> Set
(Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
forall n e. Sketch n e -> Set (CoconeSketch n e)
distinguishedCocones Sketch n e
s)
faultyTripod :: Maybe (Tripod (CategorySketch n e) (ArrowSketch n e) n)
faultyTripod = (Tripod (CategorySketch n e) (ArrowSketch n e) n -> Bool)
-> Set (Tripod (CategorySketch n e) (ArrowSketch n e) n)
-> Maybe (Tripod (CategorySketch n e) (ArrowSketch n e) n)
forall a. Eq a => (a -> Bool) -> Set a -> Maybe a
find (\Tripod (CategorySketch n e) (ArrowSketch n e) n
tripod_ -> Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ (Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
-> ArrowSketch n e
-> Tripod (CategorySketch n e) (ArrowSketch n e) n
forall c m o.
Cone DiscreteTwo DiscreteTwoAr DiscreteTwoAr c m o
-> m -> Tripod c m o
unsafeTripod (n
-> NaturalTransformation
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
forall o2 c1 m1 o1 c2 m2.
o2
-> NaturalTransformation c1 m1 o1 c2 m2 o2
-> Cone c1 m1 o1 c2 m2 o2
unsafeCone (FunctorSketch n e
f FunctorSketch n e -> n -> n
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ (Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
-> n
forall c1 m1 o1 c2 m2 o2. Cone c1 m1 o1 c2 m2 o2 -> o2
apex (Tripod (CategorySketch n e) (ArrowSketch n e) n
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
forall c m o.
Tripod c m o -> Cone DiscreteTwo DiscreteTwoAr DiscreteTwoAr c m o
twoCone Tripod (CategorySketch n e) (ArrowSketch n e) n
tripod_))) (FunctorSketch n e
f FunctorSketch n e
-> NaturalTransformation
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
-> NaturalTransformation
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 c2 m2 o2 m3 o3 c3.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Category c2 m2 o2, Morphism m2 o2, Eq c2, Eq m2, Eq o2,
Morphism m3 o3) =>
Diagram c2 m2 o2 c3 m3 o3
-> NaturalTransformation c1 m1 o1 c2 m2 o2
-> NaturalTransformation c1 m1 o1 c3 m3 o3
<-@<= Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
-> NaturalTransformation
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 c2 m2 o2.
Cone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCone (Tripod (CategorySketch n e) (ArrowSketch n e) n
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
forall c m o.
Tripod c m o -> Cone DiscreteTwo DiscreteTwoAr DiscreteTwoAr c m o
twoCone Tripod (CategorySketch n e) (ArrowSketch n e) n
tripod_))) (FunctorSketch n e
f FunctorSketch n e -> ArrowSketch n e -> ArrowSketch n e
forall c1 m1 o1 m2 o2 c2.
(Category c1 m1 o1, Morphism m1 o1, Morphism m2 o2, Eq m1) =>
Diagram c1 m1 o1 c2 m2 o2 -> m1 -> m2
->£ (Tripod (CategorySketch n e) (ArrowSketch n e) n -> ArrowSketch n e
forall c m o. Tripod c m o -> m
evalMap Tripod (CategorySketch n e) (ArrowSketch n e) n
tripod_))) Tripod (CategorySketch n e) (ArrowSketch n e) n
-> Set (Tripod (CategorySketch n e) (ArrowSketch n e) n) -> Bool
forall a. Eq a => a -> Set a -> Bool
`Set.isIn` (Sketch n e -> Set (Tripod (CategorySketch n e) (ArrowSketch n e) n)
forall n e. Sketch n e -> Set (TripodSketch n e)
distinguishedTripods Sketch n e
t)) (Sketch n e -> Set (Tripod (CategorySketch n e) (ArrowSketch n e) n)
forall n e. Sketch n e -> Set (TripodSketch n e)
distinguishedTripods Sketch n e
s)
instance (Eq e, Eq n) => Morphism (SketchMorphism n e) (Sketch n e) where
source :: SketchMorphism n e -> Sketch n e
source = SketchMorphism n e -> Sketch n e
forall n e. SketchMorphism n e -> Sketch n e
sourceSketch
target :: SketchMorphism n e -> Sketch n e
target = SketchMorphism n e -> Sketch n e
forall n e. SketchMorphism n e -> Sketch n e
targetSketch
SketchMorphism n e
sm2 @ :: SketchMorphism n e -> SketchMorphism n e -> SketchMorphism n e
@ SketchMorphism n e
sm1 = SketchMorphism{underlyingFunctor :: FunctorSketch n e
underlyingFunctor = (SketchMorphism n e -> FunctorSketch n e
forall n e. SketchMorphism n e -> FunctorSketch n e
underlyingFunctor SketchMorphism n e
sm2) FunctorSketch n e -> FunctorSketch n e -> FunctorSketch n e
forall m o. Morphism m o => m -> m -> m
@ (SketchMorphism n e -> FunctorSketch n e
forall n e. SketchMorphism n e -> FunctorSketch n e
underlyingFunctor SketchMorphism n e
sm1), sourceSketch :: Sketch n e
sourceSketch = SketchMorphism n e -> Sketch n e
forall n e. SketchMorphism n e -> Sketch n e
sourceSketch SketchMorphism n e
sm1, targetSketch :: Sketch n e
targetSketch = SketchMorphism n e -> Sketch n e
forall n e. SketchMorphism n e -> Sketch n e
targetSketch SketchMorphism n e
sm2}
data FinSketch n e = FinSketch deriving (FinSketch n e -> FinSketch n e -> Bool
(FinSketch n e -> FinSketch n e -> Bool)
-> (FinSketch n e -> FinSketch n e -> Bool) -> Eq (FinSketch n e)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall n e. FinSketch n e -> FinSketch n e -> Bool
$c== :: forall n e. FinSketch n e -> FinSketch n e -> Bool
== :: FinSketch n e -> FinSketch n e -> Bool
$c/= :: forall n e. FinSketch n e -> FinSketch n e -> Bool
/= :: FinSketch n e -> FinSketch n e -> Bool
Eq, Int -> FinSketch n e -> ShowS
[FinSketch n e] -> ShowS
FinSketch n e -> [Char]
(Int -> FinSketch n e -> ShowS)
-> (FinSketch n e -> [Char])
-> ([FinSketch n e] -> ShowS)
-> Show (FinSketch n e)
forall a.
(Int -> a -> ShowS) -> (a -> [Char]) -> ([a] -> ShowS) -> Show a
forall n e. Int -> FinSketch n e -> ShowS
forall n e. [FinSketch n e] -> ShowS
forall n e. FinSketch n e -> [Char]
$cshowsPrec :: forall n e. Int -> FinSketch n e -> ShowS
showsPrec :: Int -> FinSketch n e -> ShowS
$cshow :: forall n e. FinSketch n e -> [Char]
show :: FinSketch n e -> [Char]
$cshowList :: forall n e. [FinSketch n e] -> ShowS
showList :: [FinSketch n e] -> ShowS
Show, (forall x. FinSketch n e -> Rep (FinSketch n e) x)
-> (forall x. Rep (FinSketch n e) x -> FinSketch n e)
-> Generic (FinSketch n e)
forall x. Rep (FinSketch n e) x -> FinSketch n e
forall x. FinSketch n e -> Rep (FinSketch n e) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall n e x. Rep (FinSketch n e) x -> FinSketch n e
forall n e x. FinSketch n e -> Rep (FinSketch n e) x
$cfrom :: forall n e x. FinSketch n e -> Rep (FinSketch n e) x
from :: forall x. FinSketch n e -> Rep (FinSketch n e) x
$cto :: forall n e x. Rep (FinSketch n e) x -> FinSketch n e
to :: forall x. Rep (FinSketch n e) x -> FinSketch n e
Generic, Int -> Int -> [Char] -> FinSketch n e -> [Char]
Int -> FinSketch n e -> [Char]
(Int -> FinSketch n e -> [Char])
-> (Int -> Int -> [Char] -> FinSketch n e -> [Char])
-> (Int -> FinSketch n e -> [Char])
-> PrettyPrint (FinSketch n e)
forall a.
(Int -> a -> [Char])
-> (Int -> Int -> [Char] -> a -> [Char])
-> (Int -> a -> [Char])
-> PrettyPrint a
forall n e. Int -> Int -> [Char] -> FinSketch n e -> [Char]
forall n e. Int -> FinSketch n e -> [Char]
$cpprint :: forall n e. Int -> FinSketch n e -> [Char]
pprint :: Int -> FinSketch n e -> [Char]
$cpprintWithIndentations :: forall n e. Int -> Int -> [Char] -> FinSketch n e -> [Char]
pprintWithIndentations :: Int -> Int -> [Char] -> FinSketch n e -> [Char]
$cpprintIndent :: forall n e. Int -> FinSketch n e -> [Char]
pprintIndent :: Int -> FinSketch n e -> [Char]
PrettyPrint, FinSketch n e -> FinSketch n e
(FinSketch n e -> FinSketch n e) -> Simplifiable (FinSketch n e)
forall a. (a -> a) -> Simplifiable a
forall n e. FinSketch n e -> FinSketch n e
$csimplify :: forall n e. FinSketch n e -> FinSketch n e
simplify :: FinSketch n e -> FinSketch n e
Simplifiable)
instance (Eq e, Eq n) => Category (FinSketch n e) (SketchMorphism n e) (Sketch n e) where
identity :: Morphism (SketchMorphism n e) (Sketch n e) =>
FinSketch n e -> Sketch n e -> SketchMorphism n e
identity FinSketch n e
_ Sketch n e
s = SketchMorphism{underlyingFunctor :: FunctorSketch n e
underlyingFunctor = FinCat (CategorySketch n e) (ArrowSketch n e) n
-> CategorySketch n e -> FunctorSketch n e
forall c m o. (Category c m o, Morphism m o) => c -> o -> m
identity FinCat (CategorySketch n e) (ArrowSketch n e) n
forall c m o. FinCat c m o
FinCat (Sketch n e -> CategorySketch n e
forall n e. Sketch n e -> CategorySketch n e
underlyingCategory Sketch n e
s), sourceSketch :: Sketch n e
sourceSketch = Sketch n e
s, targetSketch :: Sketch n e
targetSketch = Sketch n e
s}
ar :: Morphism (SketchMorphism n e) (Sketch n e) =>
FinSketch n e
-> Sketch n e -> Sketch n e -> Set (SketchMorphism n e)
ar FinSketch n e
_ Sketch n e
s Sketch n e
t = Sketch n e -> Sketch n e -> FunctorSketch n e -> SketchMorphism n e
forall n e.
Sketch n e -> Sketch n e -> FunctorSketch n e -> SketchMorphism n e
unsafeSketchMorphism Sketch n e
s Sketch n e
t (FunctorSketch n e -> SketchMorphism n e)
-> Set (FunctorSketch n e) -> Set (SketchMorphism n e)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (FunctorSketch n e -> Bool)
-> Set (FunctorSketch n e) -> Set (FunctorSketch n e)
forall a. (a -> Bool) -> Set a -> Set a
Set.filter (Sketch n e -> Sketch n e -> FunctorSketch n e -> Bool
forall e n.
(Eq e, Eq n) =>
Sketch n e -> Sketch n e -> FunctorSketch n e -> Bool
canFunctorBePromotedIntoSketchMorphism Sketch n e
s Sketch n e
t) (FinCat (CategorySketch n e) (ArrowSketch n e) n
-> CategorySketch n e
-> CategorySketch n e
-> Set (FunctorSketch n e)
forall c m o.
(Category c m o, Morphism m o) =>
c -> o -> o -> Set m
ar FinCat (CategorySketch n e) (ArrowSketch n e) n
forall c m o. FinCat c m o
FinCat (Sketch n e -> CategorySketch n e
forall n e. Sketch n e -> CategorySketch n e
underlyingCategory Sketch n e
s) (Sketch n e -> CategorySketch n e
forall n e. Sketch n e -> CategorySketch n e
underlyingCategory Sketch n e
t))
instance (Eq e, Eq n) =>
HasCoequalizers (FinSketch n e) (SketchMorphism n e) (Sketch n e) where
coequalize :: Diagram
Parallel
ParallelAr
ParallelOb
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
-> Cocone
Parallel
ParallelAr
ParallelOb
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
coequalize Diagram
Parallel
ParallelAr
ParallelOb
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
parallelDiag = Sketch n e
-> NaturalTransformation
Parallel
ParallelAr
ParallelOb
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
-> Cocone
Parallel
ParallelAr
ParallelOb
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
forall o2 c1 m1 o1 c2 m2.
o2
-> NaturalTransformation c1 m1 o1 c2 m2 o2
-> Cocone c1 m1 o1 c2 m2 o2
unsafeCocone Sketch n e
nadirSketch NaturalTransformation
Parallel
ParallelAr
ParallelOb
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
legs
where
parallelDiagOfCg :: Diagram
Parallel
ParallelAr
ParallelOb
(FinCat c m o)
(FunctorSketch n e)
(CategorySketch n e)
parallelDiagOfCg = Diagram{src :: Parallel
src = Parallel
Parallel, tgt :: FinCat c m o
tgt = FinCat c m o
forall c m o. FinCat c m o
FinCat, omap :: Map ParallelOb (CategorySketch n e)
omap = Sketch n e -> CategorySketch n e
forall n e. Sketch n e -> CategorySketch n e
underlyingCategory (Sketch n e -> CategorySketch n e)
-> Map ParallelOb (Sketch n e)
-> Map ParallelOb (CategorySketch n e)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Diagram
Parallel
ParallelAr
ParallelOb
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
-> Map ParallelOb (Sketch n e)
forall c1 m1 o1 c2 m2 o2. Diagram c1 m1 o1 c2 m2 o2 -> Map o1 o2
omap Diagram
Parallel
ParallelAr
ParallelOb
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
parallelDiag, mmap :: Map ParallelAr (FunctorSketch n e)
mmap = SketchMorphism n e -> FunctorSketch n e
forall n e. SketchMorphism n e -> FunctorSketch n e
underlyingFunctor (SketchMorphism n e -> FunctorSketch n e)
-> Map ParallelAr (SketchMorphism n e)
-> Map ParallelAr (FunctorSketch n e)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Diagram
Parallel
ParallelAr
ParallelOb
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
-> Map ParallelAr (SketchMorphism n e)
forall c1 m1 o1 c2 m2 o2. Diagram c1 m1 o1 c2 m2 o2 -> Map m1 m2
mmap Diagram
Parallel
ParallelAr
ParallelOb
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
parallelDiag}
coeqCg :: Cocone
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
coeqCg = Diagram
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
-> Cocone
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
forall c m o.
HasCoequalizers c m o =>
Diagram Parallel ParallelAr ParallelOb c m o
-> Cocone Parallel ParallelAr ParallelOb c m o
coequalize Diagram
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
forall {c} {m} {o}.
Diagram
Parallel
ParallelAr
ParallelOb
(FinCat c m o)
(FunctorSketch n e)
(CategorySketch n e)
parallelDiagOfCg
transformCone :: Cone c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
-> Cone c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
transformCone Cone c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
c = n
-> NaturalTransformation
c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
-> Cone c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
forall o2 c1 m1 o1 c2 m2.
o2
-> NaturalTransformation c1 m1 o1 c2 m2 o2
-> Cone c1 m1 o1 c2 m2 o2
unsafeCone (((Cocone
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
-> NaturalTransformation
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
forall c1 m1 o1 c2 m2 o2.
Cocone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCocone Cocone
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
coeqCg) NaturalTransformation
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
-> ParallelOb -> FunctorSketch n e
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
NaturalTransformation c1 m1 o1 c2 m2 o2 -> o1 -> m2
=>$ ParallelOb
ParallelB) FunctorSketch n e -> n -> n
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ (Cone c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n -> n
forall c1 m1 o1 c2 m2 o2. Cone c1 m1 o1 c2 m2 o2 -> o2
apex Cone c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
c)) (((Cocone
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
-> NaturalTransformation
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
forall c1 m1 o1 c2 m2 o2.
Cocone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCocone Cocone
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
coeqCg) NaturalTransformation
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
-> ParallelOb -> FunctorSketch n e
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
NaturalTransformation c1 m1 o1 c2 m2 o2 -> o1 -> m2
=>$ ParallelOb
ParallelB) FunctorSketch n e
-> NaturalTransformation
c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
-> NaturalTransformation
c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
forall c1 m1 o1 c2 m2 o2 m3 o3 c3.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Category c2 m2 o2, Morphism m2 o2, Eq c2, Eq m2, Eq o2,
Morphism m3 o3) =>
Diagram c2 m2 o2 c3 m3 o3
-> NaturalTransformation c1 m1 o1 c2 m2 o2
-> NaturalTransformation c1 m1 o1 c3 m3 o3
<-@<= (Cone c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
-> NaturalTransformation
c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
forall c1 m1 o1 c2 m2 o2.
Cone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCone Cone c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
c))
transformCocone :: Cocone c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
-> Cocone c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
transformCocone Cocone c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
cc = n
-> NaturalTransformation
c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
-> Cocone c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
forall o2 c1 m1 o1 c2 m2.
o2
-> NaturalTransformation c1 m1 o1 c2 m2 o2
-> Cocone c1 m1 o1 c2 m2 o2
unsafeCocone (((Cocone
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
-> NaturalTransformation
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
forall c1 m1 o1 c2 m2 o2.
Cocone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCocone Cocone
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
coeqCg) NaturalTransformation
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
-> ParallelOb -> FunctorSketch n e
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
NaturalTransformation c1 m1 o1 c2 m2 o2 -> o1 -> m2
=>$ ParallelOb
ParallelB) FunctorSketch n e -> n -> n
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ (Cocone c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n -> n
forall c1 m1 o1 c2 m2 o2. Cocone c1 m1 o1 c2 m2 o2 -> o2
nadir Cocone c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
cc)) (((Cocone
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
-> NaturalTransformation
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
forall c1 m1 o1 c2 m2 o2.
Cocone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCocone Cocone
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
coeqCg) NaturalTransformation
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
-> ParallelOb -> FunctorSketch n e
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
NaturalTransformation c1 m1 o1 c2 m2 o2 -> o1 -> m2
=>$ ParallelOb
ParallelB) FunctorSketch n e
-> NaturalTransformation
c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
-> NaturalTransformation
c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
forall c1 m1 o1 c2 m2 o2 m3 o3 c3.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Category c2 m2 o2, Morphism m2 o2, Eq c2, Eq m2, Eq o2,
Morphism m3 o3) =>
Diagram c2 m2 o2 c3 m3 o3
-> NaturalTransformation c1 m1 o1 c2 m2 o2
-> NaturalTransformation c1 m1 o1 c3 m3 o3
<-@<=(Cocone c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
-> NaturalTransformation
c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
forall c1 m1 o1 c2 m2 o2.
Cocone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCocone Cocone c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
cc))
transformTripod :: Tripod (CategorySketch n e) (ArrowSketch n e) n
-> Tripod (CategorySketch n e) (ArrowSketch n e) n
transformTripod Tripod (CategorySketch n e) (ArrowSketch n e) n
t = Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
-> ArrowSketch n e
-> Tripod (CategorySketch n e) (ArrowSketch n e) n
forall c m o.
Cone DiscreteTwo DiscreteTwoAr DiscreteTwoAr c m o
-> m -> Tripod c m o
unsafeTripod (Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
forall {c1} {m1} {o1}.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1) =>
Cone c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
-> Cone c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
transformCone (Tripod (CategorySketch n e) (ArrowSketch n e) n
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CategorySketch n e)
(ArrowSketch n e)
n
forall c m o.
Tripod c m o -> Cone DiscreteTwo DiscreteTwoAr DiscreteTwoAr c m o
twoCone Tripod (CategorySketch n e) (ArrowSketch n e) n
t)) (((Cocone
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
-> NaturalTransformation
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
forall c1 m1 o1 c2 m2 o2.
Cocone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCocone Cocone
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
coeqCg) NaturalTransformation
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
-> ParallelOb -> FunctorSketch n e
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
NaturalTransformation c1 m1 o1 c2 m2 o2 -> o1 -> m2
=>$ ParallelOb
ParallelB) FunctorSketch n e -> ArrowSketch n e -> ArrowSketch n e
forall c1 m1 o1 m2 o2 c2.
(Category c1 m1 o1, Morphism m1 o1, Morphism m2 o2, Eq m1) =>
Diagram c1 m1 o1 c2 m2 o2 -> m1 -> m2
->£ (Tripod (CategorySketch n e) (ArrowSketch n e) n -> ArrowSketch n e
forall c m o. Tripod c m o -> m
evalMap Tripod (CategorySketch n e) (ArrowSketch n e) n
t))
nadirSketch :: Sketch n e
nadirSketch = Sketch{underlyingCategory :: CategorySketch n e
underlyingCategory = Cocone
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
-> CategorySketch n e
forall c1 m1 o1 c2 m2 o2. Cocone c1 m1 o1 c2 m2 o2 -> o2
nadir Cocone
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
coeqCg, distinguishedCones :: Set (ConeSketch n e)
distinguishedCones = ConeSketch n e -> ConeSketch n e
forall {c1} {m1} {o1}.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1) =>
Cone c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
-> Cone c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
transformCone (ConeSketch n e -> ConeSketch n e)
-> Set (ConeSketch n e) -> Set (ConeSketch n e)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sketch n e -> Set (ConeSketch n e)
forall n e. Sketch n e -> Set (ConeSketch n e)
distinguishedCones (Diagram
Parallel
ParallelAr
ParallelOb
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
parallelDiag Diagram
Parallel
ParallelAr
ParallelOb
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
-> ParallelOb -> Sketch n e
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ ParallelOb
ParallelB), distinguishedCocones :: Set (CoconeSketch n e)
distinguishedCocones = CoconeSketch n e -> CoconeSketch n e
forall {c1} {m1} {o1}.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1) =>
Cocone c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
-> Cocone c1 m1 o1 (CategorySketch n e) (ArrowSketch n e) n
transformCocone (CoconeSketch n e -> CoconeSketch n e)
-> Set (CoconeSketch n e) -> Set (CoconeSketch n e)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sketch n e -> Set (CoconeSketch n e)
forall n e. Sketch n e -> Set (CoconeSketch n e)
distinguishedCocones (Diagram
Parallel
ParallelAr
ParallelOb
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
parallelDiag Diagram
Parallel
ParallelAr
ParallelOb
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
-> ParallelOb -> Sketch n e
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ ParallelOb
ParallelB), distinguishedTripods :: Set (Tripod (CategorySketch n e) (ArrowSketch n e) n)
distinguishedTripods = Tripod (CategorySketch n e) (ArrowSketch n e) n
-> Tripod (CategorySketch n e) (ArrowSketch n e) n
transformTripod (Tripod (CategorySketch n e) (ArrowSketch n e) n
-> Tripod (CategorySketch n e) (ArrowSketch n e) n)
-> Set (Tripod (CategorySketch n e) (ArrowSketch n e) n)
-> Set (Tripod (CategorySketch n e) (ArrowSketch n e) n)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sketch n e -> Set (Tripod (CategorySketch n e) (ArrowSketch n e) n)
forall n e. Sketch n e -> Set (TripodSketch n e)
distinguishedTripods (Diagram
Parallel
ParallelAr
ParallelOb
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
parallelDiag Diagram
Parallel
ParallelAr
ParallelOb
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
-> ParallelOb -> Sketch n e
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ ParallelOb
ParallelB)}
leg1 :: SketchMorphism n e
leg1 = SketchMorphism{sourceSketch :: Sketch n e
sourceSketch = Diagram
Parallel
ParallelAr
ParallelOb
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
parallelDiag Diagram
Parallel
ParallelAr
ParallelOb
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
-> ParallelOb -> Sketch n e
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ ParallelOb
ParallelA, targetSketch :: Sketch n e
targetSketch = Sketch n e
nadirSketch, underlyingFunctor :: FunctorSketch n e
underlyingFunctor = (Cocone
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
-> NaturalTransformation
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
forall c1 m1 o1 c2 m2 o2.
Cocone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCocone Cocone
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
coeqCg) NaturalTransformation
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
-> ParallelOb -> FunctorSketch n e
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
NaturalTransformation c1 m1 o1 c2 m2 o2 -> o1 -> m2
=>$ ParallelOb
ParallelA}
leg2 :: SketchMorphism n e
leg2 = SketchMorphism{sourceSketch :: Sketch n e
sourceSketch = Diagram
Parallel
ParallelAr
ParallelOb
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
parallelDiag Diagram
Parallel
ParallelAr
ParallelOb
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
-> ParallelOb -> Sketch n e
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ ParallelOb
ParallelB, targetSketch :: Sketch n e
targetSketch = Sketch n e
nadirSketch, underlyingFunctor :: FunctorSketch n e
underlyingFunctor = (Cocone
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
-> NaturalTransformation
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
forall c1 m1 o1 c2 m2 o2.
Cocone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCocone Cocone
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
coeqCg) NaturalTransformation
Parallel
ParallelAr
ParallelOb
(FinCat (CategorySketch n e) (ArrowSketch n e) n)
(FunctorSketch n e)
(CategorySketch n e)
-> ParallelOb -> FunctorSketch n e
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
NaturalTransformation c1 m1 o1 c2 m2 o2 -> o1 -> m2
=>$ ParallelOb
ParallelB}
legs :: NaturalTransformation
Parallel
ParallelAr
ParallelOb
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
legs = Diagram
Parallel
ParallelAr
ParallelOb
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
-> Diagram
Parallel
ParallelAr
ParallelOb
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
-> Map ParallelOb (SketchMorphism n e)
-> NaturalTransformation
Parallel
ParallelAr
ParallelOb
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
forall c1 m1 o1 c2 m2 o2.
Diagram c1 m1 o1 c2 m2 o2
-> Diagram c1 m1 o1 c2 m2 o2
-> Map o1 m2
-> NaturalTransformation c1 m1 o1 c2 m2 o2
unsafeNaturalTransformation Diagram
Parallel
ParallelAr
ParallelOb
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
parallelDiag (Parallel
-> FinSketch n e
-> Sketch n e
-> Diagram
Parallel
ParallelAr
ParallelOb
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
forall c1 m1 o1 c2 m2 o2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Category c2 m2 o2,
Morphism m2 o2) =>
c1 -> c2 -> o2 -> Diagram c1 m1 o1 c2 m2 o2
constantDiagram Parallel
Parallel FinSketch n e
forall n e. FinSketch n e
FinSketch Sketch n e
nadirSketch) (AssociationList ParallelOb (SketchMorphism n e)
-> Map ParallelOb (SketchMorphism n e)
forall k v. AssociationList k v -> Map k v
weakMap [(ParallelOb
ParallelA, SketchMorphism n e
leg1),(ParallelOb
ParallelB, SketchMorphism n e
leg2)])
instance (Eq e, Eq n, Eq oIndex, Eq mIndex, Morphism mIndex oIndex, FiniteCategory cIndex mIndex oIndex) => CocompleteCategory (FinSketch n e) (SketchMorphism n e) (Sketch n e) (FinSketch (Colimit oIndex n) (Colimit oIndex e)) (SketchMorphism (Colimit oIndex n) (Colimit oIndex e)) (Sketch (Colimit oIndex n) (Colimit oIndex e)) cIndex mIndex oIndex where
colimit :: (FiniteCategory cIndex mIndex oIndex, Morphism mIndex oIndex,
Eq cIndex, Eq mIndex, Eq oIndex) =>
Diagram
cIndex
mIndex
oIndex
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
-> Cocone
cIndex
mIndex
oIndex
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
colimit Diagram
cIndex
mIndex
oIndex
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
diagOfSketches = Sketch (Colimit oIndex n) (Colimit oIndex e)
-> NaturalTransformation
cIndex
mIndex
oIndex
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
-> Cocone
cIndex
mIndex
oIndex
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
forall o2 c1 m1 o1 c2 m2.
o2
-> NaturalTransformation c1 m1 o1 c2 m2 o2
-> Cocone c1 m1 o1 c2 m2 o2
unsafeCocone Sketch (Colimit oIndex n) (Colimit oIndex e)
nadirSketch NaturalTransformation
cIndex
mIndex
oIndex
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
legs
where
indexingCategory :: cIndex
indexingCategory = Diagram
cIndex
mIndex
oIndex
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
-> cIndex
forall c1 m1 o1 c2 m2 o2. Diagram c1 m1 o1 c2 m2 o2 -> c1
src Diagram
cIndex
mIndex
oIndex
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
diagOfSketches
diagOfCG :: Diagram
cIndex
mIndex
oIndex
(FinCat c m o)
(FunctorSketch n e)
(CategorySketch n e)
diagOfCG = Diagram{src :: cIndex
src = cIndex
indexingCategory, tgt :: FinCat c m o
tgt = FinCat c m o
forall c m o. FinCat c m o
FinCat, omap :: Map oIndex (CategorySketch n e)
omap = Set (oIndex, CategorySketch n e) -> Map oIndex (CategorySketch n e)
forall k v. Set (k, v) -> Map k v
Map.weakMapFromSet [(oIndex
i,Sketch n e -> CategorySketch n e
forall n e. Sketch n e -> CategorySketch n e
underlyingCategory (Diagram
cIndex
mIndex
oIndex
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
diagOfSketches Diagram
cIndex
mIndex
oIndex
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
-> oIndex -> Sketch n e
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ oIndex
i)) | oIndex
i <- cIndex -> Set oIndex
forall c m o. FiniteCategory c m o => c -> Set o
ob cIndex
indexingCategory], mmap :: Map mIndex (FunctorSketch n e)
mmap = Set (mIndex, FunctorSketch n e) -> Map mIndex (FunctorSketch n e)
forall k v. Set (k, v) -> Map k v
Map.weakMapFromSet [(mIndex
f,SketchMorphism n e -> FunctorSketch n e
forall n e. SketchMorphism n e -> FunctorSketch n e
underlyingFunctor (Diagram
cIndex
mIndex
oIndex
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
diagOfSketches Diagram
cIndex
mIndex
oIndex
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
-> mIndex -> SketchMorphism n e
forall c1 m1 o1 m2 o2 c2.
(Category c1 m1 o1, Morphism m1 o1, Morphism m2 o2, Eq m1) =>
Diagram c1 m1 o1 c2 m2 o2 -> m1 -> m2
->£ mIndex
f)) | mIndex
f <- cIndex -> Set mIndex
forall c m o. (FiniteCategory c m o, Morphism m o) => c -> Set m
genArrows cIndex
indexingCategory]}
colimitCG :: Cocone
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
colimitCG = Diagram
cIndex
mIndex
oIndex
(FinCat (CategorySketch n e) (CGMorphism n e) n)
(FunctorSketch n e)
(CategorySketch n e)
-> Cocone
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
forall cIndex mIndex oIndex n e.
(FiniteCategory cIndex mIndex oIndex, Morphism mIndex oIndex,
Eq cIndex, Eq mIndex, Eq oIndex, Eq n, Eq e) =>
Diagram
cIndex
mIndex
oIndex
(FinCat (CompositionGraph n e) (CGMorphism n e) n)
(FinFunctor (CompositionGraph n e) (CGMorphism n e) n)
(CompositionGraph n e)
-> Cocone
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
colimitOfCompositionGraphs Diagram
cIndex
mIndex
oIndex
(FinCat (CategorySketch n e) (CGMorphism n e) n)
(FunctorSketch n e)
(CategorySketch n e)
forall {c} {m} {o}.
Diagram
cIndex
mIndex
oIndex
(FinCat c m o)
(FunctorSketch n e)
(CategorySketch n e)
diagOfCG
coprojBase :: Diagram
(FinCat (CategorySketch n e) (CGMorphism n e) n)
(FunctorSketch n e)
(CategorySketch n e)
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
coprojBase = Diagram
cIndex
mIndex
oIndex
(FinCat (CategorySketch n e) (CGMorphism n e) n)
(FunctorSketch n e)
(CategorySketch n e)
-> Diagram
(FinCat (CategorySketch n e) (CGMorphism n e) n)
(FunctorSketch n e)
(CategorySketch n e)
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
forall cIndex mIndex oIndex e n.
(FiniteCategory cIndex mIndex oIndex, Morphism mIndex oIndex,
Eq mIndex, Eq oIndex, Eq e, Eq n) =>
Diagram
cIndex
mIndex
oIndex
(FinCat (CompositionGraph n e) (CGMorphism n e) n)
(FinFunctor (CompositionGraph n e) (CGMorphism n e) n)
(CompositionGraph n e)
-> Diagram
(FinCat (CompositionGraph n e) (CGMorphism n e) n)
(FinFunctor (CompositionGraph n e) (CGMorphism n e) n)
(CompositionGraph n e)
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
coprojectBaseCompositionGraphs Diagram
cIndex
mIndex
oIndex
(FinCat (CategorySketch n e) (CGMorphism n e) n)
(FunctorSketch n e)
(CategorySketch n e)
forall {c} {m} {o}.
Diagram
cIndex
mIndex
oIndex
(FinCat c m o)
(FunctorSketch n e)
(CategorySketch n e)
diagOfCG
transformCone :: oIndex
-> Cone
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
-> Cone
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
transformCone oIndex
i Cone
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
c = Colimit oIndex n
-> NaturalTransformation
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
-> Cone
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
forall o2 c1 m1 o1 c2 m2.
o2
-> NaturalTransformation c1 m1 o1 c2 m2 o2
-> Cone c1 m1 o1 c2 m2 o2
unsafeCone (((Cocone
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
-> NaturalTransformation
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
forall c1 m1 o1 c2 m2 o2.
Cocone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCocone Cocone
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
colimitCG) NaturalTransformation
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
-> oIndex
-> FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
NaturalTransformation c1 m1 o1 c2 m2 o2 -> o1 -> m2
=>$ oIndex
i) FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
-> Colimit oIndex n -> Colimit oIndex n
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ (Cone
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
-> Colimit oIndex n
forall c1 m1 o1 c2 m2 o2. Cone c1 m1 o1 c2 m2 o2 -> o2
apex Cone
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
c)) (((Cocone
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
-> NaturalTransformation
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
forall c1 m1 o1 c2 m2 o2.
Cocone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCocone Cocone
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
colimitCG) NaturalTransformation
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
-> oIndex
-> FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
NaturalTransformation c1 m1 o1 c2 m2 o2 -> o1 -> m2
=>$ oIndex
i) FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
-> NaturalTransformation
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
-> NaturalTransformation
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
forall c1 m1 o1 c2 m2 o2 m3 o3 c3.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Category c2 m2 o2, Morphism m2 o2, Eq c2, Eq m2, Eq o2,
Morphism m3 o3) =>
Diagram c2 m2 o2 c3 m3 o3
-> NaturalTransformation c1 m1 o1 c2 m2 o2
-> NaturalTransformation c1 m1 o1 c3 m3 o3
<-@<= (Cone
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
-> NaturalTransformation
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
forall c1 m1 o1 c2 m2 o2.
Cone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCone Cone
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
c))
transformCocone :: oIndex
-> Cocone
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
-> Cocone
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
transformCocone oIndex
i Cocone
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
cc = Colimit oIndex n
-> NaturalTransformation
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
-> Cocone
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
forall o2 c1 m1 o1 c2 m2.
o2
-> NaturalTransformation c1 m1 o1 c2 m2 o2
-> Cocone c1 m1 o1 c2 m2 o2
unsafeCocone (((Cocone
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
-> NaturalTransformation
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
forall c1 m1 o1 c2 m2 o2.
Cocone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCocone Cocone
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
colimitCG) NaturalTransformation
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
-> oIndex
-> FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
NaturalTransformation c1 m1 o1 c2 m2 o2 -> o1 -> m2
=>$ oIndex
i) FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
-> Colimit oIndex n -> Colimit oIndex n
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ (Cocone
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
-> Colimit oIndex n
forall c1 m1 o1 c2 m2 o2. Cocone c1 m1 o1 c2 m2 o2 -> o2
nadir Cocone
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
cc)) (((Cocone
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
-> NaturalTransformation
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
forall c1 m1 o1 c2 m2 o2.
Cocone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCocone Cocone
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
colimitCG) NaturalTransformation
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
-> oIndex
-> FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
NaturalTransformation c1 m1 o1 c2 m2 o2 -> o1 -> m2
=>$ oIndex
i) FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
-> NaturalTransformation
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
-> NaturalTransformation
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
forall c1 m1 o1 c2 m2 o2 m3 o3 c3.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Category c2 m2 o2, Morphism m2 o2, Eq c2, Eq m2, Eq o2,
Morphism m3 o3) =>
Diagram c2 m2 o2 c3 m3 o3
-> NaturalTransformation c1 m1 o1 c2 m2 o2
-> NaturalTransformation c1 m1 o1 c3 m3 o3
<-@<=(Cocone
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
-> NaturalTransformation
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
forall c1 m1 o1 c2 m2 o2.
Cocone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCocone Cocone
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
cc))
transformTripod :: oIndex
-> Tripod
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
-> Tripod
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
transformTripod oIndex
i Tripod
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
t = Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
-> CGMorphism (Colimit oIndex n) (Colimit oIndex e)
-> Tripod
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
forall c m o.
Cone DiscreteTwo DiscreteTwoAr DiscreteTwoAr c m o
-> m -> Tripod c m o
unsafeTripod (oIndex
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
forall {c1} {m1} {o1}.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1) =>
oIndex
-> Cone
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
-> Cone
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
transformCone oIndex
i (Tripod
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
forall c m o.
Tripod c m o -> Cone DiscreteTwo DiscreteTwoAr DiscreteTwoAr c m o
twoCone Tripod
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
t)) (((Cocone
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
-> NaturalTransformation
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
forall c1 m1 o1 c2 m2 o2.
Cocone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCocone Cocone
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
colimitCG) NaturalTransformation
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
-> oIndex
-> FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
NaturalTransformation c1 m1 o1 c2 m2 o2 -> o1 -> m2
=>$ oIndex
i) FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
-> CGMorphism (Colimit oIndex n) (Colimit oIndex e)
-> CGMorphism (Colimit oIndex n) (Colimit oIndex e)
forall c1 m1 o1 m2 o2 c2.
(Category c1 m1 o1, Morphism m1 o1, Morphism m2 o2, Eq m1) =>
Diagram c1 m1 o1 c2 m2 o2 -> m1 -> m2
->£ (Tripod
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
-> CGMorphism (Colimit oIndex n) (Colimit oIndex e)
forall c m o. Tripod c m o -> m
evalMap Tripod
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
t))
nadirSketch :: Sketch (Colimit oIndex n) (Colimit oIndex e)
nadirSketch = Sketch{underlyingCategory :: CompositionGraph (Colimit oIndex n) (Colimit oIndex e)
underlyingCategory = (Cocone
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
-> CompositionGraph (Colimit oIndex n) (Colimit oIndex e)
forall c1 m1 o1 c2 m2 o2. Cocone c1 m1 o1 c2 m2 o2 -> o2
nadir Cocone
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
colimitCG), distinguishedCones :: Set (ConeSketch (Colimit oIndex n) (Colimit oIndex e))
distinguishedCones = [Set (ConeSketch (Colimit oIndex n) (Colimit oIndex e))]
-> Set (ConeSketch (Colimit oIndex n) (Colimit oIndex e))
forall (f :: * -> *) a. Foldable f => f (Set a) -> Set a
Set.unions [oIndex
-> ConeSketch (Colimit oIndex n) (Colimit oIndex e)
-> ConeSketch (Colimit oIndex n) (Colimit oIndex e)
forall {c1} {m1} {o1}.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1) =>
oIndex
-> Cone
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
-> Cone
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
transformCone oIndex
i (ConeSketch (Colimit oIndex n) (Colimit oIndex e)
-> ConeSketch (Colimit oIndex n) (Colimit oIndex e))
-> Set (ConeSketch (Colimit oIndex n) (Colimit oIndex e))
-> Set (ConeSketch (Colimit oIndex n) (Colimit oIndex e))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sketch (Colimit oIndex n) (Colimit oIndex e)
-> Set (ConeSketch (Colimit oIndex n) (Colimit oIndex e))
forall n e. Sketch n e -> Set (ConeSketch n e)
distinguishedCones (Diagram
cIndex
mIndex
oIndex
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
newBase Diagram
cIndex
mIndex
oIndex
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
-> oIndex -> Sketch (Colimit oIndex n) (Colimit oIndex e)
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ oIndex
i)| oIndex
i <- Set oIndex -> [oIndex]
forall a. Eq a => Set a -> [a]
Set.setToList (Set oIndex -> [oIndex]) -> Set oIndex -> [oIndex]
forall a b. (a -> b) -> a -> b
$ cIndex -> Set oIndex
forall c m o. FiniteCategory c m o => c -> Set o
ob (cIndex -> Set oIndex) -> cIndex -> Set oIndex
forall a b. (a -> b) -> a -> b
$ Diagram
cIndex
mIndex
oIndex
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
-> cIndex
forall c1 m1 o1 c2 m2 o2. Diagram c1 m1 o1 c2 m2 o2 -> c1
src Diagram
cIndex
mIndex
oIndex
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
newBase], distinguishedCocones :: Set (CoconeSketch (Colimit oIndex n) (Colimit oIndex e))
distinguishedCocones = [Set (CoconeSketch (Colimit oIndex n) (Colimit oIndex e))]
-> Set (CoconeSketch (Colimit oIndex n) (Colimit oIndex e))
forall (f :: * -> *) a. Foldable f => f (Set a) -> Set a
Set.unions [oIndex
-> CoconeSketch (Colimit oIndex n) (Colimit oIndex e)
-> CoconeSketch (Colimit oIndex n) (Colimit oIndex e)
forall {c1} {m1} {o1}.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1) =>
oIndex
-> Cocone
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
-> Cocone
c1
m1
o1
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
transformCocone oIndex
i (CoconeSketch (Colimit oIndex n) (Colimit oIndex e)
-> CoconeSketch (Colimit oIndex n) (Colimit oIndex e))
-> Set (CoconeSketch (Colimit oIndex n) (Colimit oIndex e))
-> Set (CoconeSketch (Colimit oIndex n) (Colimit oIndex e))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sketch (Colimit oIndex n) (Colimit oIndex e)
-> Set (CoconeSketch (Colimit oIndex n) (Colimit oIndex e))
forall n e. Sketch n e -> Set (CoconeSketch n e)
distinguishedCocones (Diagram
cIndex
mIndex
oIndex
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
newBase Diagram
cIndex
mIndex
oIndex
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
-> oIndex -> Sketch (Colimit oIndex n) (Colimit oIndex e)
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ oIndex
i)| oIndex
i <- Set oIndex -> [oIndex]
forall a. Eq a => Set a -> [a]
Set.setToList (Set oIndex -> [oIndex]) -> Set oIndex -> [oIndex]
forall a b. (a -> b) -> a -> b
$ cIndex -> Set oIndex
forall c m o. FiniteCategory c m o => c -> Set o
ob (cIndex -> Set oIndex) -> cIndex -> Set oIndex
forall a b. (a -> b) -> a -> b
$ Diagram
cIndex
mIndex
oIndex
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
-> cIndex
forall c1 m1 o1 c2 m2 o2. Diagram c1 m1 o1 c2 m2 o2 -> c1
src Diagram
cIndex
mIndex
oIndex
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
newBase], distinguishedTripods :: Set
(Tripod
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
distinguishedTripods = [Set
(Tripod
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))]
-> Set
(Tripod
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
forall (f :: * -> *) a. Foldable f => f (Set a) -> Set a
Set.unions [oIndex
-> Tripod
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
-> Tripod
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
transformTripod oIndex
i (Tripod
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
-> Tripod
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
-> Set
(Tripod
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
-> Set
(Tripod
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sketch (Colimit oIndex n) (Colimit oIndex e)
-> Set
(Tripod
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
forall n e. Sketch n e -> Set (TripodSketch n e)
distinguishedTripods (Diagram
cIndex
mIndex
oIndex
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
newBase Diagram
cIndex
mIndex
oIndex
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
-> oIndex -> Sketch (Colimit oIndex n) (Colimit oIndex e)
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ oIndex
i)| oIndex
i <- Set oIndex -> [oIndex]
forall a. Eq a => Set a -> [a]
Set.setToList (Set oIndex -> [oIndex]) -> Set oIndex -> [oIndex]
forall a b. (a -> b) -> a -> b
$ cIndex -> Set oIndex
forall c m o. FiniteCategory c m o => c -> Set o
ob (cIndex -> Set oIndex) -> cIndex -> Set oIndex
forall a b. (a -> b) -> a -> b
$ Diagram
cIndex
mIndex
oIndex
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
-> cIndex
forall c1 m1 o1 c2 m2 o2. Diagram c1 m1 o1 c2 m2 o2 -> c1
src Diagram
cIndex
mIndex
oIndex
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
newBase]}
newBase :: Diagram
cIndex
mIndex
oIndex
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
newBase = Diagram
cIndex
mIndex
oIndex
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
-> Diagram
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
forall c m o cLim mLim oLim cIndex mIndex oIndex.
CocompleteCategory c m o cLim mLim oLim cIndex mIndex oIndex =>
Diagram cIndex mIndex oIndex c m o -> Diagram c m o cLim mLim oLim
coprojectBase Diagram
cIndex
mIndex
oIndex
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
diagOfSketches Diagram
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
-> Diagram
cIndex
mIndex
oIndex
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
-> Diagram
cIndex
mIndex
oIndex
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
forall c1 m1 o1 c2 m2 o2 m3 o3 c3.
(Category c1 m1 o1, Morphism m1 o1, Eq m1, Category c2 m2 o2,
Morphism m2 o2, Eq o2, Eq m2, Morphism m3 o3) =>
Diagram c2 m2 o2 c3 m3 o3
-> Diagram c1 m1 o1 c2 m2 o2 -> Diagram c1 m1 o1 c3 m3 o3
<-@<- Diagram
cIndex
mIndex
oIndex
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
diagOfSketches
legs :: NaturalTransformation
cIndex
mIndex
oIndex
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
legs = Diagram
cIndex
mIndex
oIndex
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
-> Diagram
cIndex
mIndex
oIndex
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
-> Map
oIndex (SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
-> NaturalTransformation
cIndex
mIndex
oIndex
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
forall c1 m1 o1 c2 m2 o2.
Diagram c1 m1 o1 c2 m2 o2
-> Diagram c1 m1 o1 c2 m2 o2
-> Map o1 m2
-> NaturalTransformation c1 m1 o1 c2 m2 o2
unsafeNaturalTransformation Diagram
cIndex
mIndex
oIndex
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
newBase (cIndex
-> FinSketch (Colimit oIndex n) (Colimit oIndex e)
-> Sketch (Colimit oIndex n) (Colimit oIndex e)
-> Diagram
cIndex
mIndex
oIndex
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
forall c1 m1 o1 c2 m2 o2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Category c2 m2 o2,
Morphism m2 o2) =>
c1 -> c2 -> o2 -> Diagram c1 m1 o1 c2 m2 o2
constantDiagram cIndex
indexingCategory FinSketch (Colimit oIndex n) (Colimit oIndex e)
forall n e. FinSketch n e
FinSketch Sketch (Colimit oIndex n) (Colimit oIndex e)
nadirSketch) (Set (oIndex, SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
-> Map
oIndex (SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
forall k v. Set (k, v) -> Map k v
Map.weakMapFromSet [(oIndex
i,SketchMorphism{sourceSketch :: Sketch (Colimit oIndex n) (Colimit oIndex e)
sourceSketch = Diagram
cIndex
mIndex
oIndex
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
newBase Diagram
cIndex
mIndex
oIndex
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
-> oIndex -> Sketch (Colimit oIndex n) (Colimit oIndex e)
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ oIndex
i, targetSketch :: Sketch (Colimit oIndex n) (Colimit oIndex e)
targetSketch = Sketch (Colimit oIndex n) (Colimit oIndex e)
nadirSketch, underlyingFunctor :: FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
underlyingFunctor = (Cocone
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
-> NaturalTransformation
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
forall c1 m1 o1 c2 m2 o2.
Cocone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCocone Cocone
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
colimitCG) NaturalTransformation
cIndex
mIndex
oIndex
(FinCat
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n))
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
-> oIndex
-> FinFunctor
(CompositionGraph (Colimit oIndex n) (Colimit oIndex e))
(CGMorphism (Colimit oIndex n) (Colimit oIndex e))
(Colimit oIndex n)
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
NaturalTransformation c1 m1 o1 c2 m2 o2 -> o1 -> m2
=>$ oIndex
i}) | oIndex
i <- cIndex -> Set oIndex
forall c m o. FiniteCategory c m o => c -> Set o
ob cIndex
indexingCategory])
coprojectBase :: Diagram
cIndex
mIndex
oIndex
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
-> Diagram
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
(FinSketch (Colimit oIndex n) (Colimit oIndex e))
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
(Sketch (Colimit oIndex n) (Colimit oIndex e))
coprojectBase Diagram
cIndex
mIndex
oIndex
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
diag = Diagram{src :: FinSketch n e
src = FinSketch n e
forall n e. FinSketch n e
FinSketch, tgt :: FinSketch (Colimit oIndex n) (Colimit oIndex e)
tgt = FinSketch (Colimit oIndex n) (Colimit oIndex e)
forall n e. FinSketch n e
FinSketch, omap :: Map (Sketch n e) (Sketch (Colimit oIndex n) (Colimit oIndex e))
omap = Set (Sketch n e, Sketch (Colimit oIndex n) (Colimit oIndex e))
-> Map (Sketch n e) (Sketch (Colimit oIndex n) (Colimit oIndex e))
forall k v. Set (k, v) -> Map k v
Map.weakMapFromSet [(Diagram
cIndex
mIndex
oIndex
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
diag Diagram
cIndex
mIndex
oIndex
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
-> oIndex -> Sketch n e
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ oIndex
i,Sketch n e -> Sketch (Colimit oIndex n) (Colimit oIndex e)
forall {n} {t} {i} {i}.
(Eq n, Eq t) =>
Sketch n t -> Sketch (Colimit i n) (Colimit i t)
coprojectSketch (Sketch n e -> Sketch (Colimit oIndex n) (Colimit oIndex e))
-> Sketch n e -> Sketch (Colimit oIndex n) (Colimit oIndex e)
forall a b. (a -> b) -> a -> b
$ Diagram
cIndex
mIndex
oIndex
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
diag Diagram
cIndex
mIndex
oIndex
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
-> oIndex -> Sketch n e
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ oIndex
i) | oIndex
i <- cIndex -> Set oIndex
forall c m o. FiniteCategory c m o => c -> Set o
ob (cIndex -> Set oIndex) -> cIndex -> Set oIndex
forall a b. (a -> b) -> a -> b
$ Diagram
cIndex
mIndex
oIndex
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
-> cIndex
forall c1 m1 o1 c2 m2 o2. Diagram c1 m1 o1 c2 m2 o2 -> c1
src Diagram
cIndex
mIndex
oIndex
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
diag], mmap :: Map
(SketchMorphism n e)
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
mmap = Set
(SketchMorphism n e,
SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
-> Map
(SketchMorphism n e)
(SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
forall k v. Set (k, v) -> Map k v
Map.weakMapFromSet [(Diagram
cIndex
mIndex
oIndex
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
diag Diagram
cIndex
mIndex
oIndex
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
-> mIndex -> SketchMorphism n e
forall c1 m1 o1 m2 o2 c2.
(Category c1 m1 o1, Morphism m1 o1, Morphism m2 o2, Eq m1) =>
Diagram c1 m1 o1 c2 m2 o2 -> m1 -> m2
->£ mIndex
f,SketchMorphism n e
-> SketchMorphism (Colimit oIndex n) (Colimit oIndex e)
forall {n} {t} {i} {i}.
(Eq n, Eq t) =>
SketchMorphism n t -> SketchMorphism (Colimit i n) (Colimit i t)
coprojectSketchMorphism (SketchMorphism n e
-> SketchMorphism (Colimit oIndex n) (Colimit oIndex e))
-> SketchMorphism n e
-> SketchMorphism (Colimit oIndex n) (Colimit oIndex e)
forall a b. (a -> b) -> a -> b
$ Diagram
cIndex
mIndex
oIndex
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
diag Diagram
cIndex
mIndex
oIndex
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
-> mIndex -> SketchMorphism n e
forall c1 m1 o1 m2 o2 c2.
(Category c1 m1 o1, Morphism m1 o1, Morphism m2 o2, Eq m1) =>
Diagram c1 m1 o1 c2 m2 o2 -> m1 -> m2
->£ mIndex
f) | mIndex
f <- cIndex -> Set mIndex
forall c m o. (FiniteCategory c m o, Morphism m o) => c -> Set m
arrows (cIndex -> Set mIndex) -> cIndex -> Set mIndex
forall a b. (a -> b) -> a -> b
$ Diagram
cIndex
mIndex
oIndex
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
-> cIndex
forall c1 m1 o1 c2 m2 o2. Diagram c1 m1 o1 c2 m2 o2 -> c1
src Diagram
cIndex
mIndex
oIndex
(FinSketch n e)
(SketchMorphism n e)
(Sketch n e)
diag]}
where
coprojectArrow :: Arrow n t -> Arrow (Colimit i n) (Colimit i t)
coprojectArrow Arrow n t
a = Arrow{sourceArrow :: Colimit i n
sourceArrow = n -> Colimit i n
forall i t. t -> Colimit i t
Coprojection (n -> Colimit i n) -> n -> Colimit i n
forall a b. (a -> b) -> a -> b
$ Arrow n t -> n
forall n e. Arrow n e -> n
sourceArrow Arrow n t
a, targetArrow :: Colimit i n
targetArrow = n -> Colimit i n
forall i t. t -> Colimit i t
Coprojection (n -> Colimit i n) -> n -> Colimit i n
forall a b. (a -> b) -> a -> b
$ Arrow n t -> n
forall n e. Arrow n e -> n
targetArrow Arrow n t
a, labelArrow :: Colimit i t
labelArrow = t -> Colimit i t
forall i t. t -> Colimit i t
Coprojection (t -> Colimit i t) -> t -> Colimit i t
forall a b. (a -> b) -> a -> b
$ Arrow n t -> t
forall n e. Arrow n e -> e
labelArrow Arrow n t
a}
coprojectGraph :: Graph a t -> Graph (Colimit i a) (Colimit i t)
coprojectGraph Graph a t
g = Set (Colimit i a)
-> Set (Arrow (Colimit i a) (Colimit i t))
-> Graph (Colimit i a) (Colimit i t)
forall n e. Set n -> Set (Arrow n e) -> Graph n e
unsafeGraph ((a -> Colimit i a
forall i t. t -> Colimit i t
Coprojection) (a -> Colimit i a) -> Set a -> Set (Colimit i a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Graph a t -> Set a
forall n e. Graph n e -> Set n
nodes Graph a t
g) ((Arrow a t -> Arrow (Colimit i a) (Colimit i t)
forall {n} {t} {i} {i}.
Arrow n t -> Arrow (Colimit i n) (Colimit i t)
coprojectArrow) (Arrow a t -> Arrow (Colimit i a) (Colimit i t))
-> Set (Arrow a t) -> Set (Arrow (Colimit i a) (Colimit i t))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Graph a t -> Set (Arrow a t)
forall n e. Graph n e -> Set (Arrow n e)
edges Graph a t
g)
coprojectLaw :: Map (f (Arrow n t)) (f (Arrow n t))
-> Map
(f (Arrow (Colimit i n) (Colimit i t)))
(f (Arrow (Colimit i n) (Colimit i t)))
coprojectLaw Map (f (Arrow n t)) (f (Arrow n t))
cl = Set
(f (Arrow (Colimit i n) (Colimit i t)),
f (Arrow (Colimit i n) (Colimit i t)))
-> Map
(f (Arrow (Colimit i n) (Colimit i t)))
(f (Arrow (Colimit i n) (Colimit i t)))
forall k v. Set (k, v) -> Map k v
Map.weakMapFromSet [(Arrow n t -> Arrow (Colimit i n) (Colimit i t)
forall {n} {t} {i} {i}.
Arrow n t -> Arrow (Colimit i n) (Colimit i t)
coprojectArrow (Arrow n t -> Arrow (Colimit i n) (Colimit i t))
-> f (Arrow n t) -> f (Arrow (Colimit i n) (Colimit i t))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> f (Arrow n t)
rp1, Arrow n t -> Arrow (Colimit i n) (Colimit i t)
forall {n} {t} {i} {i}.
Arrow n t -> Arrow (Colimit i n) (Colimit i t)
coprojectArrow (Arrow n t -> Arrow (Colimit i n) (Colimit i t))
-> f (Arrow n t) -> f (Arrow (Colimit i n) (Colimit i t))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> f (Arrow n t)
rp2) | (f (Arrow n t)
rp1,f (Arrow n t)
rp2) <- Map (f (Arrow n t)) (f (Arrow n t))
-> Set (f (Arrow n t), f (Arrow n t))
forall k v. Eq k => Map k v -> Set (k, v)
Map.mapToSet Map (f (Arrow n t)) (f (Arrow n t))
cl]
coprojectCG :: CompositionGraph a t
-> CompositionGraph (Colimit i a) (Colimit i t)
coprojectCG CompositionGraph a t
cg = Graph (Colimit i a) (Colimit i t)
-> CompositionLaw (Colimit i a) (Colimit i t)
-> CompositionGraph (Colimit i a) (Colimit i t)
forall a b. Graph a b -> CompositionLaw a b -> CompositionGraph a b
unsafeCompositionGraph (Graph a t -> Graph (Colimit i a) (Colimit i t)
forall {a} {t} {i} {i}.
Graph a t -> Graph (Colimit i a) (Colimit i t)
coprojectGraph (Graph a t -> Graph (Colimit i a) (Colimit i t))
-> Graph a t -> Graph (Colimit i a) (Colimit i t)
forall a b. (a -> b) -> a -> b
$ CompositionGraph a t -> Graph a t
forall a b. CompositionGraph a b -> Graph a b
support CompositionGraph a t
cg) (Map [Arrow a t] [Arrow a t]
-> CompositionLaw (Colimit i a) (Colimit i t)
forall {f :: * -> *} {n} {t} {f :: * -> *} {n} {t} {i} {i} {i} {i}.
(Eq (f (Arrow n t)), Functor f, Functor f) =>
Map (f (Arrow n t)) (f (Arrow n t))
-> Map
(f (Arrow (Colimit i n) (Colimit i t)))
(f (Arrow (Colimit i n) (Colimit i t)))
coprojectLaw (Map [Arrow a t] [Arrow a t]
-> CompositionLaw (Colimit i a) (Colimit i t))
-> Map [Arrow a t] [Arrow a t]
-> CompositionLaw (Colimit i a) (Colimit i t)
forall a b. (a -> b) -> a -> b
$ CompositionGraph a t -> Map [Arrow a t] [Arrow a t]
forall a b. CompositionGraph a b -> CompositionLaw a b
law CompositionGraph a t
cg)
coprojectCGMorphism :: CGMorphism t t -> CGMorphism (Colimit i t) (Colimit i t)
coprojectCGMorphism CGMorphism{path :: forall a b. CGMorphism a b -> Path a b
path = (t
a, [Arrow t t]
rp),compositionLaw :: forall a b. CGMorphism a b -> CompositionLaw a b
compositionLaw = CompositionLaw t t
cl} = CGMorphism{path :: Path (Colimit i t) (Colimit i t)
path = (t -> Colimit i t
forall i t. t -> Colimit i t
Coprojection t
a, Arrow t t -> Arrow (Colimit i t) (Colimit i t)
forall {n} {t} {i} {i}.
Arrow n t -> Arrow (Colimit i n) (Colimit i t)
coprojectArrow (Arrow t t -> Arrow (Colimit i t) (Colimit i t))
-> [Arrow t t] -> [Arrow (Colimit i t) (Colimit i t)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Arrow t t]
rp), compositionLaw :: CompositionLaw (Colimit i t) (Colimit i t)
compositionLaw = CompositionLaw t t -> CompositionLaw (Colimit i t) (Colimit i t)
forall {f :: * -> *} {n} {t} {f :: * -> *} {n} {t} {i} {i} {i} {i}.
(Eq (f (Arrow n t)), Functor f, Functor f) =>
Map (f (Arrow n t)) (f (Arrow n t))
-> Map
(f (Arrow (Colimit i n) (Colimit i t)))
(f (Arrow (Colimit i n) (Colimit i t)))
coprojectLaw CompositionLaw t t
cl}
coprojectDiag :: Diagram
(CompositionGraph a t)
(CGMorphism t t)
o1
(CompositionGraph a t)
(CGMorphism t t)
o2
-> Diagram
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i o1)
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i o2)
coprojectDiag Diagram
(CompositionGraph a t)
(CGMorphism t t)
o1
(CompositionGraph a t)
(CGMorphism t t)
o2
d = Diagram{src :: CompositionGraph (Colimit i a) (Colimit i t)
src = CompositionGraph a t
-> CompositionGraph (Colimit i a) (Colimit i t)
forall {a} {t} {i} {i}.
(Eq a, Eq t) =>
CompositionGraph a t
-> CompositionGraph (Colimit i a) (Colimit i t)
coprojectCG (CompositionGraph a t
-> CompositionGraph (Colimit i a) (Colimit i t))
-> CompositionGraph a t
-> CompositionGraph (Colimit i a) (Colimit i t)
forall a b. (a -> b) -> a -> b
$ Diagram
(CompositionGraph a t)
(CGMorphism t t)
o1
(CompositionGraph a t)
(CGMorphism t t)
o2
-> CompositionGraph a t
forall c1 m1 o1 c2 m2 o2. Diagram c1 m1 o1 c2 m2 o2 -> c1
src Diagram
(CompositionGraph a t)
(CGMorphism t t)
o1
(CompositionGraph a t)
(CGMorphism t t)
o2
d, tgt :: CompositionGraph (Colimit i a) (Colimit i t)
tgt = CompositionGraph a t
-> CompositionGraph (Colimit i a) (Colimit i t)
forall {a} {t} {i} {i}.
(Eq a, Eq t) =>
CompositionGraph a t
-> CompositionGraph (Colimit i a) (Colimit i t)
coprojectCG (CompositionGraph a t
-> CompositionGraph (Colimit i a) (Colimit i t))
-> CompositionGraph a t
-> CompositionGraph (Colimit i a) (Colimit i t)
forall a b. (a -> b) -> a -> b
$ Diagram
(CompositionGraph a t)
(CGMorphism t t)
o1
(CompositionGraph a t)
(CGMorphism t t)
o2
-> CompositionGraph a t
forall c1 m1 o1 c2 m2 o2. Diagram c1 m1 o1 c2 m2 o2 -> c2
tgt Diagram
(CompositionGraph a t)
(CGMorphism t t)
o1
(CompositionGraph a t)
(CGMorphism t t)
o2
d, omap :: Map (Colimit i o1) (Colimit i o2)
omap = (\(o1
x,o2
y) -> (o1 -> Colimit i o1
forall i t. t -> Colimit i t
Coprojection o1
x, o2 -> Colimit i o2
forall i t. t -> Colimit i t
Coprojection o2
y)) ((o1, o2) -> (Colimit i o1, Colimit i o2))
-> Map o1 o2 -> Map (Colimit i o1) (Colimit i o2)
forall k1 v1 k2 v2.
((k1, v1) -> (k2, v2)) -> Map k1 v1 -> Map k2 v2
<|$|> Diagram
(CompositionGraph a t)
(CGMorphism t t)
o1
(CompositionGraph a t)
(CGMorphism t t)
o2
-> Map o1 o2
forall c1 m1 o1 c2 m2 o2. Diagram c1 m1 o1 c2 m2 o2 -> Map o1 o2
omap Diagram
(CompositionGraph a t)
(CGMorphism t t)
o1
(CompositionGraph a t)
(CGMorphism t t)
o2
d, mmap :: Map
(CGMorphism (Colimit i t) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
mmap = (\(CGMorphism t t
x,CGMorphism t t
y) -> (CGMorphism t t -> CGMorphism (Colimit i t) (Colimit i t)
forall {t} {t} {i} {i}.
(Eq t, Eq t) =>
CGMorphism t t -> CGMorphism (Colimit i t) (Colimit i t)
coprojectCGMorphism CGMorphism t t
x, CGMorphism t t -> CGMorphism (Colimit i t) (Colimit i t)
forall {t} {t} {i} {i}.
(Eq t, Eq t) =>
CGMorphism t t -> CGMorphism (Colimit i t) (Colimit i t)
coprojectCGMorphism CGMorphism t t
y)) ((CGMorphism t t, CGMorphism t t)
-> (CGMorphism (Colimit i t) (Colimit i t),
CGMorphism (Colimit i t) (Colimit i t)))
-> Map (CGMorphism t t) (CGMorphism t t)
-> Map
(CGMorphism (Colimit i t) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
forall k1 v1 k2 v2.
((k1, v1) -> (k2, v2)) -> Map k1 v1 -> Map k2 v2
<|$|> Diagram
(CompositionGraph a t)
(CGMorphism t t)
o1
(CompositionGraph a t)
(CGMorphism t t)
o2
-> Map (CGMorphism t t) (CGMorphism t t)
forall c1 m1 o1 c2 m2 o2. Diagram c1 m1 o1 c2 m2 o2 -> Map m1 m2
mmap Diagram
(CompositionGraph a t)
(CGMorphism t t)
o1
(CompositionGraph a t)
(CGMorphism t t)
o2
d}
coprojectNat :: NaturalTransformation
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism o2 t)
o2
-> NaturalTransformation
(CompositionGraph (Colimit i o1) (Colimit i t))
(CGMorphism (Colimit i o1) (Colimit i t))
(Colimit i o1)
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i o2) (Colimit i t))
(Colimit i o2)
coprojectNat NaturalTransformation
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism o2 t)
o2
nat = Diagram
(CompositionGraph (Colimit i o1) (Colimit i t))
(CGMorphism (Colimit i o1) (Colimit i t))
(Colimit i o1)
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i o2) (Colimit i t))
(Colimit i o2)
-> Diagram
(CompositionGraph (Colimit i o1) (Colimit i t))
(CGMorphism (Colimit i o1) (Colimit i t))
(Colimit i o1)
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i o2) (Colimit i t))
(Colimit i o2)
-> Map (Colimit i o1) (CGMorphism (Colimit i o2) (Colimit i t))
-> NaturalTransformation
(CompositionGraph (Colimit i o1) (Colimit i t))
(CGMorphism (Colimit i o1) (Colimit i t))
(Colimit i o1)
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i o2) (Colimit i t))
(Colimit i o2)
forall c1 m1 o1 c2 m2 o2.
Diagram c1 m1 o1 c2 m2 o2
-> Diagram c1 m1 o1 c2 m2 o2
-> Map o1 m2
-> NaturalTransformation c1 m1 o1 c2 m2 o2
unsafeNaturalTransformation (Diagram
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism o2 t)
o2
-> Diagram
(CompositionGraph (Colimit i o1) (Colimit i t))
(CGMorphism (Colimit i o1) (Colimit i t))
(Colimit i o1)
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i o2) (Colimit i t))
(Colimit i o2)
forall {a} {t} {a} {t} {t} {t} {t} {t} {o1} {o2} {i} {i} {i} {i}
{i} {i} {i} {i} {i} {i}.
(Eq a, Eq t, Eq a, Eq t, Eq t, Eq t, Eq t, Eq t) =>
Diagram
(CompositionGraph a t)
(CGMorphism t t)
o1
(CompositionGraph a t)
(CGMorphism t t)
o2
-> Diagram
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i o1)
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i o2)
coprojectDiag (NaturalTransformation
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism o2 t)
o2
-> Diagram
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism o2 t)
o2
forall m o. Morphism m o => m -> o
source NaturalTransformation
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism o2 t)
o2
nat)) (Diagram
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism o2 t)
o2
-> Diagram
(CompositionGraph (Colimit i o1) (Colimit i t))
(CGMorphism (Colimit i o1) (Colimit i t))
(Colimit i o1)
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i o2) (Colimit i t))
(Colimit i o2)
forall {a} {t} {a} {t} {t} {t} {t} {t} {o1} {o2} {i} {i} {i} {i}
{i} {i} {i} {i} {i} {i}.
(Eq a, Eq t, Eq a, Eq t, Eq t, Eq t, Eq t, Eq t) =>
Diagram
(CompositionGraph a t)
(CGMorphism t t)
o1
(CompositionGraph a t)
(CGMorphism t t)
o2
-> Diagram
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i o1)
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i o2)
coprojectDiag (NaturalTransformation
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism o2 t)
o2
-> Diagram
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism o2 t)
o2
forall m o. Morphism m o => m -> o
target NaturalTransformation
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism o2 t)
o2
nat)) ((\(o1
x,CGMorphism o2 t
y) -> (o1 -> Colimit i o1
forall i t. t -> Colimit i t
Coprojection o1
x, CGMorphism o2 t -> CGMorphism (Colimit i o2) (Colimit i t)
forall {t} {t} {i} {i}.
(Eq t, Eq t) =>
CGMorphism t t -> CGMorphism (Colimit i t) (Colimit i t)
coprojectCGMorphism CGMorphism o2 t
y)) ((o1, CGMorphism o2 t)
-> (Colimit i o1, CGMorphism (Colimit i o2) (Colimit i t)))
-> Map o1 (CGMorphism o2 t)
-> Map (Colimit i o1) (CGMorphism (Colimit i o2) (Colimit i t))
forall k1 v1 k2 v2.
((k1, v1) -> (k2, v2)) -> Map k1 v1 -> Map k2 v2
<|$|> NaturalTransformation
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism o2 t)
o2
-> Map o1 (CGMorphism o2 t)
forall c1 m1 o1 c2 m2 o2.
NaturalTransformation c1 m1 o1 c2 m2 o2 -> Map o1 m2
components NaturalTransformation
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism o2 t)
o2
nat)
coprojectCone :: Cone
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism t t)
t
-> Cone
(CompositionGraph (Colimit i o1) (Colimit i t))
(CGMorphism (Colimit i o1) (Colimit i t))
(Colimit i o1)
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i t)
coprojectCone Cone
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism t t)
t
cone = Colimit i t
-> NaturalTransformation
(CompositionGraph (Colimit i o1) (Colimit i t))
(CGMorphism (Colimit i o1) (Colimit i t))
(Colimit i o1)
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i t)
-> Cone
(CompositionGraph (Colimit i o1) (Colimit i t))
(CGMorphism (Colimit i o1) (Colimit i t))
(Colimit i o1)
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i t)
forall o2 c1 m1 o1 c2 m2.
o2
-> NaturalTransformation c1 m1 o1 c2 m2 o2
-> Cone c1 m1 o1 c2 m2 o2
unsafeCone (t -> Colimit i t
forall i t. t -> Colimit i t
Coprojection (t -> Colimit i t) -> t -> Colimit i t
forall a b. (a -> b) -> a -> b
$ Cone
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism t t)
t
-> t
forall c1 m1 o1 c2 m2 o2. Cone c1 m1 o1 c2 m2 o2 -> o2
apex Cone
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism t t)
t
cone) (NaturalTransformation
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism t t)
t
-> NaturalTransformation
(CompositionGraph (Colimit i o1) (Colimit i t))
(CGMorphism (Colimit i o1) (Colimit i t))
(Colimit i o1)
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i t)
forall {o1} {t} {a} {t} {t} {o2} {i} {i} {i} {i} {i} {i} {i} {i}
{i} {i}.
(Eq o1, Eq t, Eq a, Eq t, Eq t, Eq o2) =>
NaturalTransformation
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism o2 t)
o2
-> NaturalTransformation
(CompositionGraph (Colimit i o1) (Colimit i t))
(CGMorphism (Colimit i o1) (Colimit i t))
(Colimit i o1)
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i o2) (Colimit i t))
(Colimit i o2)
coprojectNat (NaturalTransformation
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism t t)
t
-> NaturalTransformation
(CompositionGraph (Colimit i o1) (Colimit i t))
(CGMorphism (Colimit i o1) (Colimit i t))
(Colimit i o1)
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i t))
-> NaturalTransformation
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism t t)
t
-> NaturalTransformation
(CompositionGraph (Colimit i o1) (Colimit i t))
(CGMorphism (Colimit i o1) (Colimit i t))
(Colimit i o1)
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i t)
forall a b. (a -> b) -> a -> b
$ Cone
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism t t)
t
-> NaturalTransformation
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism t t)
t
forall c1 m1 o1 c2 m2 o2.
Cone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCone Cone
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism t t)
t
cone)
coprojectCocone :: Cocone
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism t t)
t
-> Cocone
(CompositionGraph (Colimit i o1) (Colimit i t))
(CGMorphism (Colimit i o1) (Colimit i t))
(Colimit i o1)
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i t)
coprojectCocone Cocone
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism t t)
t
cocone = Colimit i t
-> NaturalTransformation
(CompositionGraph (Colimit i o1) (Colimit i t))
(CGMorphism (Colimit i o1) (Colimit i t))
(Colimit i o1)
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i t)
-> Cocone
(CompositionGraph (Colimit i o1) (Colimit i t))
(CGMorphism (Colimit i o1) (Colimit i t))
(Colimit i o1)
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i t)
forall o2 c1 m1 o1 c2 m2.
o2
-> NaturalTransformation c1 m1 o1 c2 m2 o2
-> Cocone c1 m1 o1 c2 m2 o2
unsafeCocone (t -> Colimit i t
forall i t. t -> Colimit i t
Coprojection (t -> Colimit i t) -> t -> Colimit i t
forall a b. (a -> b) -> a -> b
$ Cocone
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism t t)
t
-> t
forall c1 m1 o1 c2 m2 o2. Cocone c1 m1 o1 c2 m2 o2 -> o2
nadir Cocone
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism t t)
t
cocone) (NaturalTransformation
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism t t)
t
-> NaturalTransformation
(CompositionGraph (Colimit i o1) (Colimit i t))
(CGMorphism (Colimit i o1) (Colimit i t))
(Colimit i o1)
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i t)
forall {o1} {t} {a} {t} {t} {o2} {i} {i} {i} {i} {i} {i} {i} {i}
{i} {i}.
(Eq o1, Eq t, Eq a, Eq t, Eq t, Eq o2) =>
NaturalTransformation
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism o2 t)
o2
-> NaturalTransformation
(CompositionGraph (Colimit i o1) (Colimit i t))
(CGMorphism (Colimit i o1) (Colimit i t))
(Colimit i o1)
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i o2) (Colimit i t))
(Colimit i o2)
coprojectNat (NaturalTransformation
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism t t)
t
-> NaturalTransformation
(CompositionGraph (Colimit i o1) (Colimit i t))
(CGMorphism (Colimit i o1) (Colimit i t))
(Colimit i o1)
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i t))
-> NaturalTransformation
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism t t)
t
-> NaturalTransformation
(CompositionGraph (Colimit i o1) (Colimit i t))
(CGMorphism (Colimit i o1) (Colimit i t))
(Colimit i o1)
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i t)
forall a b. (a -> b) -> a -> b
$ Cocone
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism t t)
t
-> NaturalTransformation
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism t t)
t
forall c1 m1 o1 c2 m2 o2.
Cocone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCocone Cocone
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism t t)
t
cocone)
coprojectDiag2 :: Diagram c1 m1 o1 (CompositionGraph a t) (CGMorphism t t) o2
-> Diagram
c1
m1
o1
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i o2)
coprojectDiag2 Diagram c1 m1 o1 (CompositionGraph a t) (CGMorphism t t) o2
d = Diagram{src :: c1
src = Diagram c1 m1 o1 (CompositionGraph a t) (CGMorphism t t) o2 -> c1
forall c1 m1 o1 c2 m2 o2. Diagram c1 m1 o1 c2 m2 o2 -> c1
src Diagram c1 m1 o1 (CompositionGraph a t) (CGMorphism t t) o2
d, tgt :: CompositionGraph (Colimit i a) (Colimit i t)
tgt = CompositionGraph a t
-> CompositionGraph (Colimit i a) (Colimit i t)
forall {a} {t} {i} {i}.
(Eq a, Eq t) =>
CompositionGraph a t
-> CompositionGraph (Colimit i a) (Colimit i t)
coprojectCG (CompositionGraph a t
-> CompositionGraph (Colimit i a) (Colimit i t))
-> CompositionGraph a t
-> CompositionGraph (Colimit i a) (Colimit i t)
forall a b. (a -> b) -> a -> b
$ Diagram c1 m1 o1 (CompositionGraph a t) (CGMorphism t t) o2
-> CompositionGraph a t
forall c1 m1 o1 c2 m2 o2. Diagram c1 m1 o1 c2 m2 o2 -> c2
tgt Diagram c1 m1 o1 (CompositionGraph a t) (CGMorphism t t) o2
d, omap :: Map o1 (Colimit i o2)
omap = o2 -> Colimit i o2
forall i t. t -> Colimit i t
Coprojection (o2 -> Colimit i o2) -> Map o1 o2 -> Map o1 (Colimit i o2)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Diagram c1 m1 o1 (CompositionGraph a t) (CGMorphism t t) o2
-> Map o1 o2
forall c1 m1 o1 c2 m2 o2. Diagram c1 m1 o1 c2 m2 o2 -> Map o1 o2
omap Diagram c1 m1 o1 (CompositionGraph a t) (CGMorphism t t) o2
d, mmap :: Map m1 (CGMorphism (Colimit i t) (Colimit i t))
mmap = CGMorphism t t -> CGMorphism (Colimit i t) (Colimit i t)
forall {t} {t} {i} {i}.
(Eq t, Eq t) =>
CGMorphism t t -> CGMorphism (Colimit i t) (Colimit i t)
coprojectCGMorphism (CGMorphism t t -> CGMorphism (Colimit i t) (Colimit i t))
-> Map m1 (CGMorphism t t)
-> Map m1 (CGMorphism (Colimit i t) (Colimit i t))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Diagram c1 m1 o1 (CompositionGraph a t) (CGMorphism t t) o2
-> Map m1 (CGMorphism t t)
forall c1 m1 o1 c2 m2 o2. Diagram c1 m1 o1 c2 m2 o2 -> Map m1 m2
mmap Diagram c1 m1 o1 (CompositionGraph a t) (CGMorphism t t) o2
d}
coprojectNat2 :: NaturalTransformation
c1 m1 o1 (CompositionGraph a t) (CGMorphism o2 t) o2
-> NaturalTransformation
c1
m1
o1
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i o2) (Colimit i t))
(Colimit i o2)
coprojectNat2 NaturalTransformation
c1 m1 o1 (CompositionGraph a t) (CGMorphism o2 t) o2
nat = Diagram
c1
m1
o1
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i o2) (Colimit i t))
(Colimit i o2)
-> Diagram
c1
m1
o1
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i o2) (Colimit i t))
(Colimit i o2)
-> Map o1 (CGMorphism (Colimit i o2) (Colimit i t))
-> NaturalTransformation
c1
m1
o1
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i o2) (Colimit i t))
(Colimit i o2)
forall c1 m1 o1 c2 m2 o2.
Diagram c1 m1 o1 c2 m2 o2
-> Diagram c1 m1 o1 c2 m2 o2
-> Map o1 m2
-> NaturalTransformation c1 m1 o1 c2 m2 o2
unsafeNaturalTransformation (Diagram c1 m1 o1 (CompositionGraph a t) (CGMorphism o2 t) o2
-> Diagram
c1
m1
o1
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i o2) (Colimit i t))
(Colimit i o2)
forall {a} {t} {t} {t} {c1} {m1} {o1} {o2} {i} {i} {i} {i} {i}.
(Eq a, Eq t, Eq t, Eq t) =>
Diagram c1 m1 o1 (CompositionGraph a t) (CGMorphism t t) o2
-> Diagram
c1
m1
o1
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i o2)
coprojectDiag2 (NaturalTransformation
c1 m1 o1 (CompositionGraph a t) (CGMorphism o2 t) o2
-> Diagram c1 m1 o1 (CompositionGraph a t) (CGMorphism o2 t) o2
forall m o. Morphism m o => m -> o
source NaturalTransformation
c1 m1 o1 (CompositionGraph a t) (CGMorphism o2 t) o2
nat)) (Diagram c1 m1 o1 (CompositionGraph a t) (CGMorphism o2 t) o2
-> Diagram
c1
m1
o1
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i o2) (Colimit i t))
(Colimit i o2)
forall {a} {t} {t} {t} {c1} {m1} {o1} {o2} {i} {i} {i} {i} {i}.
(Eq a, Eq t, Eq t, Eq t) =>
Diagram c1 m1 o1 (CompositionGraph a t) (CGMorphism t t) o2
-> Diagram
c1
m1
o1
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i o2)
coprojectDiag2 (NaturalTransformation
c1 m1 o1 (CompositionGraph a t) (CGMorphism o2 t) o2
-> Diagram c1 m1 o1 (CompositionGraph a t) (CGMorphism o2 t) o2
forall m o. Morphism m o => m -> o
target NaturalTransformation
c1 m1 o1 (CompositionGraph a t) (CGMorphism o2 t) o2
nat)) (CGMorphism o2 t -> CGMorphism (Colimit i o2) (Colimit i t)
forall {t} {t} {i} {i}.
(Eq t, Eq t) =>
CGMorphism t t -> CGMorphism (Colimit i t) (Colimit i t)
coprojectCGMorphism (CGMorphism o2 t -> CGMorphism (Colimit i o2) (Colimit i t))
-> Map o1 (CGMorphism o2 t)
-> Map o1 (CGMorphism (Colimit i o2) (Colimit i t))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> NaturalTransformation
c1 m1 o1 (CompositionGraph a t) (CGMorphism o2 t) o2
-> Map o1 (CGMorphism o2 t)
forall c1 m1 o1 c2 m2 o2.
NaturalTransformation c1 m1 o1 c2 m2 o2 -> Map o1 m2
components NaturalTransformation
c1 m1 o1 (CompositionGraph a t) (CGMorphism o2 t) o2
nat)
coprojectCone2 :: Cone c1 m1 o1 (CompositionGraph a t) (CGMorphism t t) t
-> Cone
c1
m1
o1
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i t)
coprojectCone2 Cone c1 m1 o1 (CompositionGraph a t) (CGMorphism t t) t
cone = Colimit i t
-> NaturalTransformation
c1
m1
o1
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i t)
-> Cone
c1
m1
o1
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i t)
forall o2 c1 m1 o1 c2 m2.
o2
-> NaturalTransformation c1 m1 o1 c2 m2 o2
-> Cone c1 m1 o1 c2 m2 o2
unsafeCone (t -> Colimit i t
forall i t. t -> Colimit i t
Coprojection (t -> Colimit i t) -> t -> Colimit i t
forall a b. (a -> b) -> a -> b
$ Cone c1 m1 o1 (CompositionGraph a t) (CGMorphism t t) t -> t
forall c1 m1 o1 c2 m2 o2. Cone c1 m1 o1 c2 m2 o2 -> o2
apex Cone c1 m1 o1 (CompositionGraph a t) (CGMorphism t t) t
cone) (NaturalTransformation
c1 m1 o1 (CompositionGraph a t) (CGMorphism t t) t
-> NaturalTransformation
c1
m1
o1
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i t)
forall {m1} {o1} {c1} {t} {t} {a} {o2} {i} {i} {i} {i} {i}.
(Morphism m1 o1, FiniteCategory c1 m1 o1, Eq o1, Eq m1, Eq c1,
Eq t, Eq t, Eq a, Eq o2) =>
NaturalTransformation
c1 m1 o1 (CompositionGraph a t) (CGMorphism o2 t) o2
-> NaturalTransformation
c1
m1
o1
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i o2) (Colimit i t))
(Colimit i o2)
coprojectNat2 (NaturalTransformation
c1 m1 o1 (CompositionGraph a t) (CGMorphism t t) t
-> NaturalTransformation
c1
m1
o1
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i t))
-> NaturalTransformation
c1 m1 o1 (CompositionGraph a t) (CGMorphism t t) t
-> NaturalTransformation
c1
m1
o1
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i t)
forall a b. (a -> b) -> a -> b
$ Cone c1 m1 o1 (CompositionGraph a t) (CGMorphism t t) t
-> NaturalTransformation
c1 m1 o1 (CompositionGraph a t) (CGMorphism t t) t
forall c1 m1 o1 c2 m2 o2.
Cone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCone Cone c1 m1 o1 (CompositionGraph a t) (CGMorphism t t) t
cone)
coprojectTripod :: Tripod (CompositionGraph a t) (CGMorphism o t) o
-> Tripod
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i o) (Colimit i t))
(Colimit i o)
coprojectTripod Tripod (CompositionGraph a t) (CGMorphism o t) o
tripod = Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i o) (Colimit i t))
(Colimit i o)
-> CGMorphism (Colimit i o) (Colimit i t)
-> Tripod
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i o) (Colimit i t))
(Colimit i o)
forall c m o.
Cone DiscreteTwo DiscreteTwoAr DiscreteTwoAr c m o
-> m -> Tripod c m o
unsafeTripod (Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CompositionGraph a t)
(CGMorphism o t)
o
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i o) (Colimit i t))
(Colimit i o)
forall {m1} {o1} {c1} {t} {t} {a} {t} {i} {i} {i} {i} {i}.
(Morphism m1 o1, FiniteCategory c1 m1 o1, Eq o1, Eq m1, Eq c1,
Eq t, Eq t, Eq a, Eq t) =>
Cone c1 m1 o1 (CompositionGraph a t) (CGMorphism t t) t
-> Cone
c1
m1
o1
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i t)
coprojectCone2 (Tripod (CompositionGraph a t) (CGMorphism o t) o
-> Cone
DiscreteTwo
DiscreteTwoAr
DiscreteTwoAr
(CompositionGraph a t)
(CGMorphism o t)
o
forall c m o.
Tripod c m o -> Cone DiscreteTwo DiscreteTwoAr DiscreteTwoAr c m o
twoCone Tripod (CompositionGraph a t) (CGMorphism o t) o
tripod)) (CGMorphism o t -> CGMorphism (Colimit i o) (Colimit i t)
forall {t} {t} {i} {i}.
(Eq t, Eq t) =>
CGMorphism t t -> CGMorphism (Colimit i t) (Colimit i t)
coprojectCGMorphism (Tripod (CompositionGraph a t) (CGMorphism o t) o -> CGMorphism o t
forall c m o. Tripod c m o -> m
evalMap Tripod (CompositionGraph a t) (CGMorphism o t) o
tripod))
coprojectSketch :: Sketch n t -> Sketch (Colimit i n) (Colimit i t)
coprojectSketch Sketch n t
s = Sketch{underlyingCategory :: CategorySketch (Colimit i n) (Colimit i t)
underlyingCategory = CompositionGraph n t -> CategorySketch (Colimit i n) (Colimit i t)
forall {a} {t} {i} {i}.
(Eq a, Eq t) =>
CompositionGraph a t
-> CompositionGraph (Colimit i a) (Colimit i t)
coprojectCG (CompositionGraph n t
-> CategorySketch (Colimit i n) (Colimit i t))
-> CompositionGraph n t
-> CategorySketch (Colimit i n) (Colimit i t)
forall a b. (a -> b) -> a -> b
$ Sketch n t -> CompositionGraph n t
forall n e. Sketch n e -> CategorySketch n e
underlyingCategory Sketch n t
s, distinguishedCocones :: Set (CoconeSketch (Colimit i n) (Colimit i t))
distinguishedCocones = Cocone
(CompositionGraph n t)
(CGMorphism n t)
n
(CompositionGraph n t)
(CGMorphism n t)
n
-> CoconeSketch (Colimit i n) (Colimit i t)
forall {o1} {t} {a} {t} {t} {t} {i} {i} {i} {i} {i} {i} {i} {i} {i}
{i}.
(Eq o1, Eq t, Eq a, Eq t, Eq t, Eq t) =>
Cocone
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism t t)
t
-> Cocone
(CompositionGraph (Colimit i o1) (Colimit i t))
(CGMorphism (Colimit i o1) (Colimit i t))
(Colimit i o1)
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i t)
coprojectCocone (Cocone
(CompositionGraph n t)
(CGMorphism n t)
n
(CompositionGraph n t)
(CGMorphism n t)
n
-> CoconeSketch (Colimit i n) (Colimit i t))
-> Set
(Cocone
(CompositionGraph n t)
(CGMorphism n t)
n
(CompositionGraph n t)
(CGMorphism n t)
n)
-> Set (CoconeSketch (Colimit i n) (Colimit i t))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sketch n t
-> Set
(Cocone
(CompositionGraph n t)
(CGMorphism n t)
n
(CompositionGraph n t)
(CGMorphism n t)
n)
forall n e. Sketch n e -> Set (CoconeSketch n e)
distinguishedCocones Sketch n t
s, distinguishedCones :: Set (ConeSketch (Colimit i n) (Colimit i t))
distinguishedCones = Cone
(CompositionGraph n t)
(CGMorphism n t)
n
(CompositionGraph n t)
(CGMorphism n t)
n
-> ConeSketch (Colimit i n) (Colimit i t)
forall {o1} {t} {a} {t} {t} {t} {i} {i} {i} {i} {i} {i} {i} {i} {i}
{i}.
(Eq o1, Eq t, Eq a, Eq t, Eq t, Eq t) =>
Cone
(CompositionGraph o1 t)
(CGMorphism o1 t)
o1
(CompositionGraph a t)
(CGMorphism t t)
t
-> Cone
(CompositionGraph (Colimit i o1) (Colimit i t))
(CGMorphism (Colimit i o1) (Colimit i t))
(Colimit i o1)
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i t)
coprojectCone (Cone
(CompositionGraph n t)
(CGMorphism n t)
n
(CompositionGraph n t)
(CGMorphism n t)
n
-> ConeSketch (Colimit i n) (Colimit i t))
-> Set
(Cone
(CompositionGraph n t)
(CGMorphism n t)
n
(CompositionGraph n t)
(CGMorphism n t)
n)
-> Set (ConeSketch (Colimit i n) (Colimit i t))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sketch n t
-> Set
(Cone
(CompositionGraph n t)
(CGMorphism n t)
n
(CompositionGraph n t)
(CGMorphism n t)
n)
forall n e. Sketch n e -> Set (ConeSketch n e)
distinguishedCones Sketch n t
s, distinguishedTripods :: Set (TripodSketch (Colimit i n) (Colimit i t))
distinguishedTripods = Tripod (CompositionGraph n t) (CGMorphism n t) n
-> TripodSketch (Colimit i n) (Colimit i t)
forall {t} {t} {a} {o} {i} {i} {i} {i} {i}.
(Eq t, Eq t, Eq a, Eq o) =>
Tripod (CompositionGraph a t) (CGMorphism o t) o
-> Tripod
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i o) (Colimit i t))
(Colimit i o)
coprojectTripod (Tripod (CompositionGraph n t) (CGMorphism n t) n
-> TripodSketch (Colimit i n) (Colimit i t))
-> Set (Tripod (CompositionGraph n t) (CGMorphism n t) n)
-> Set (TripodSketch (Colimit i n) (Colimit i t))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sketch n t
-> Set (Tripod (CompositionGraph n t) (CGMorphism n t) n)
forall n e. Sketch n e -> Set (TripodSketch n e)
distinguishedTripods Sketch n t
s}
coprojectSketchMorphism :: SketchMorphism n t -> SketchMorphism (Colimit i n) (Colimit i t)
coprojectSketchMorphism SketchMorphism n t
sm = SketchMorphism{sourceSketch :: Sketch (Colimit i n) (Colimit i t)
sourceSketch = Sketch n t -> Sketch (Colimit i n) (Colimit i t)
forall {n} {t} {i} {i}.
(Eq n, Eq t) =>
Sketch n t -> Sketch (Colimit i n) (Colimit i t)
coprojectSketch (Sketch n t -> Sketch (Colimit i n) (Colimit i t))
-> Sketch n t -> Sketch (Colimit i n) (Colimit i t)
forall a b. (a -> b) -> a -> b
$ SketchMorphism n t -> Sketch n t
forall n e. SketchMorphism n e -> Sketch n e
sourceSketch SketchMorphism n t
sm, targetSketch :: Sketch (Colimit i n) (Colimit i t)
targetSketch = Sketch n t -> Sketch (Colimit i n) (Colimit i t)
forall {n} {t} {i} {i}.
(Eq n, Eq t) =>
Sketch n t -> Sketch (Colimit i n) (Colimit i t)
coprojectSketch (Sketch n t -> Sketch (Colimit i n) (Colimit i t))
-> Sketch n t -> Sketch (Colimit i n) (Colimit i t)
forall a b. (a -> b) -> a -> b
$ SketchMorphism n t -> Sketch n t
forall n e. SketchMorphism n e -> Sketch n e
targetSketch SketchMorphism n t
sm, underlyingFunctor :: FunctorSketch (Colimit i n) (Colimit i t)
underlyingFunctor = Diagram
(CompositionGraph n t)
(CGMorphism n t)
n
(CompositionGraph n t)
(CGMorphism n t)
n
-> FunctorSketch (Colimit i n) (Colimit i t)
forall {a} {t} {a} {t} {t} {t} {t} {t} {o1} {o2} {i} {i} {i} {i}
{i} {i} {i} {i} {i} {i}.
(Eq a, Eq t, Eq a, Eq t, Eq t, Eq t, Eq t, Eq t) =>
Diagram
(CompositionGraph a t)
(CGMorphism t t)
o1
(CompositionGraph a t)
(CGMorphism t t)
o2
-> Diagram
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i o1)
(CompositionGraph (Colimit i a) (Colimit i t))
(CGMorphism (Colimit i t) (Colimit i t))
(Colimit i o2)
coprojectDiag (Diagram
(CompositionGraph n t)
(CGMorphism n t)
n
(CompositionGraph n t)
(CGMorphism n t)
n
-> FunctorSketch (Colimit i n) (Colimit i t))
-> Diagram
(CompositionGraph n t)
(CGMorphism n t)
n
(CompositionGraph n t)
(CGMorphism n t)
n
-> FunctorSketch (Colimit i n) (Colimit i t)
forall a b. (a -> b) -> a -> b
$ SketchMorphism n t
-> Diagram
(CompositionGraph n t)
(CGMorphism n t)
n
(CompositionGraph n t)
(CGMorphism n t)
n
forall n e. SketchMorphism n e -> FunctorSketch n e
underlyingFunctor SketchMorphism n t
sm}
containsLantern :: (Eq n, Eq e) => Sketch n e -> Maybe (LightConstruction n e)
containsLantern :: forall n e.
(Eq n, Eq e) =>
Sketch n e -> Maybe (LightConstruction n e)
containsLantern Sketch n e
s = Set (LightConstruction n e) -> Maybe (LightConstruction n e)
forall a. Set a -> Maybe a
Set.setToMaybe Set (LightConstruction n e)
lanterns
where
lanterns :: Set (LightConstruction n e)
lanterns = [ConeSketch n e
-> ArrowSketch n e -> ArrowSketch n e -> LightConstruction n e
forall n e.
ConeSketch n e
-> CGMorphism n e -> CGMorphism n e -> LightConstruction n e
Lantern ConeSketch n e
dinstinguishedCone (CommaMorphism
n
One
(ArrowSketch n e)
One
(NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> ArrowSketch n e
forall c1 m1 o1 c2 m2 o2. ConeMorphism c1 m1 o1 c2 m2 o2 -> m2
bindingMorphismCone CommaMorphism
n
One
(ArrowSketch n e)
One
(NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
f) (CommaMorphism
n
One
(ArrowSketch n e)
One
(NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> ArrowSketch n e
forall c1 m1 o1 c2 m2 o2. ConeMorphism c1 m1 o1 c2 m2 o2 -> m2
bindingMorphismCone CommaMorphism
n
One
(ArrowSketch n e)
One
(NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
g) | ConeSketch n e
dinstinguishedCone <- Sketch n e -> Set (ConeSketch n e)
forall n e. Sketch n e -> Set (ConeSketch n e)
distinguishedCones Sketch n e
s, ConeSketch n e
cone <- ConeCategory
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Set (ConeSketch n e)
forall c m o. FiniteCategory c m o => c -> Set o
ob (Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> ConeCategory
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 c2 m2 o2.
(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) =>
Diagram c1 m1 o1 c2 m2 o2 -> ConeCategory c1 m1 o1 c2 m2 o2
coneCategory (ConeSketch n e
-> Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2) =>
Cone c1 m1 o1 c2 m2 o2 -> Diagram c1 m1 o1 c2 m2 o2
baseCone ConeSketch n e
dinstinguishedCone)), CommaMorphism
n
One
(ArrowSketch n e)
One
(NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
f <- ConeCategory
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> ConeSketch n e
-> ConeSketch n e
-> Set
(CommaMorphism
n
One
(ArrowSketch n e)
One
(NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n))
forall c m o.
(Category c m o, Morphism m o) =>
c -> o -> o -> Set m
ar (Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> ConeCategory
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 c2 m2 o2.
(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) =>
Diagram c1 m1 o1 c2 m2 o2 -> ConeCategory c1 m1 o1 c2 m2 o2
coneCategory (ConeSketch n e
-> Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2) =>
Cone c1 m1 o1 c2 m2 o2 -> Diagram c1 m1 o1 c2 m2 o2
baseCone ConeSketch n e
dinstinguishedCone)) ConeSketch n e
cone ConeSketch n e
dinstinguishedCone, CommaMorphism
n
One
(ArrowSketch n e)
One
(NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
g <- ConeCategory
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> ConeSketch n e
-> ConeSketch n e
-> Set
(CommaMorphism
n
One
(ArrowSketch n e)
One
(NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n))
forall c m o.
(Category c m o, Morphism m o) =>
c -> o -> o -> Set m
ar (Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> ConeCategory
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 c2 m2 o2.
(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) =>
Diagram c1 m1 o1 c2 m2 o2 -> ConeCategory c1 m1 o1 c2 m2 o2
coneCategory (ConeSketch n e
-> Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2) =>
Cone c1 m1 o1 c2 m2 o2 -> Diagram c1 m1 o1 c2 m2 o2
baseCone ConeSketch n e
dinstinguishedCone)) ConeSketch n e
cone ConeSketch n e
dinstinguishedCone, CommaMorphism
n
One
(ArrowSketch n e)
One
(NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
f CommaMorphism
n
One
(ArrowSketch n e)
One
(NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> CommaMorphism
n
One
(ArrowSketch n e)
One
(NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> Bool
forall a. Eq a => a -> a -> Bool
/= CommaMorphism
n
One
(ArrowSketch n e)
One
(NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
g]
containsSpotlight :: (Eq n, Eq e) => Sketch n e -> Maybe (LightConstruction n e)
containsSpotlight :: forall n e.
(Eq n, Eq e) =>
Sketch n e -> Maybe (LightConstruction n e)
containsSpotlight Sketch n e
s = Set (LightConstruction n e) -> Maybe (LightConstruction n e)
forall a. Set a -> Maybe a
Set.setToMaybe Set (LightConstruction n e)
spotlights
where
spotlights :: Set (LightConstruction n e)
spotlights = [Cone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> n
-> n
-> Cone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> LightConstruction n e
forall n e.
ConeSketch n e -> n -> n -> ConeSketch n e -> LightConstruction n e
Spotlight Cone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
dinstinguishedCone n
i n
j Cone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
cone | Cone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
dinstinguishedCone <- Sketch n e
-> Set
(Cone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n)
forall n e. Sketch n e -> Set (ConeSketch n e)
distinguishedCones Sketch n e
s, n
i <- CategorySketch n e -> Set n
forall c m o. FiniteCategory c m o => c -> Set o
ob (Cone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> CategorySketch n e
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2, Eq c2, Eq m2, Eq o2) =>
Cone c1 m1 o1 c2 m2 o2 -> c1
indexingCategoryCone Cone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
dinstinguishedCone), n
j <- CategorySketch n e -> Set n
forall c m o. FiniteCategory c m o => c -> Set o
ob (Cone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> CategorySketch n e
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2, Eq c2, Eq m2, Eq o2) =>
Cone c1 m1 o1 c2 m2 o2 -> c1
indexingCategoryCone Cone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
dinstinguishedCone), n
i n -> n -> Bool
forall a. Eq a => a -> a -> Bool
/= n
j, (Cone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> NaturalTransformation
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
forall c1 m1 o1 c2 m2 o2.
Cone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCone Cone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
dinstinguishedCone) NaturalTransformation
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> n -> CGMorphism n e
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
NaturalTransformation c1 m1 o1 c2 m2 o2 -> o1 -> m2
=>$ n
i CGMorphism n e -> CGMorphism n e -> Bool
forall a. Eq a => a -> a -> Bool
== (Cone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> NaturalTransformation
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
forall c1 m1 o1 c2 m2 o2.
Cone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCone Cone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
dinstinguishedCone) NaturalTransformation
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> n -> CGMorphism n e
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
NaturalTransformation c1 m1 o1 c2 m2 o2 -> o1 -> m2
=>$ n
j, Cone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
cone <- ConeCategory
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> Set
(Cone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n)
forall c m o. FiniteCategory c m o => c -> Set o
ob (Diagram
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> ConeCategory
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
forall c1 m1 o1 c2 m2 o2.
(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) =>
Diagram c1 m1 o1 c2 m2 o2 -> ConeCategory c1 m1 o1 c2 m2 o2
coneCategory (Cone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> Diagram
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2) =>
Cone c1 m1 o1 c2 m2 o2 -> Diagram c1 m1 o1 c2 m2 o2
baseCone Cone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
dinstinguishedCone)), (Cone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> NaturalTransformation
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
forall c1 m1 o1 c2 m2 o2.
Cone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCone Cone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
cone) NaturalTransformation
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> n -> CGMorphism n e
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
NaturalTransformation c1 m1 o1 c2 m2 o2 -> o1 -> m2
=>$ n
i CGMorphism n e -> CGMorphism n e -> Bool
forall a. Eq a => a -> a -> Bool
/= (Cone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> NaturalTransformation
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
forall c1 m1 o1 c2 m2 o2.
Cone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCone Cone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
cone) NaturalTransformation
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> n -> CGMorphism n e
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
NaturalTransformation c1 m1 o1 c2 m2 o2 -> o1 -> m2
=>$ n
j]
containsCrescentMoon :: (Eq n, Eq e) => Sketch n e -> Maybe (LightConstruction n e)
containsCrescentMoon :: forall n e.
(Eq n, Eq e) =>
Sketch n e -> Maybe (LightConstruction n e)
containsCrescentMoon Sketch n e
s = Set (LightConstruction n e) -> Maybe (LightConstruction n e)
forall a. Set a -> Maybe a
Set.setToMaybe Set (LightConstruction n e)
crescentMoons
where
atLeastTwo :: Set a -> Bool
atLeastTwo Set a
x
| Set a -> Bool
forall a. Set a -> Bool
Set.null Set a
x = Bool
False
| Set a -> Bool
forall a. Set a -> Bool
Set.null ((a -> Bool) -> Set a -> Set a
forall a. (a -> Bool) -> Set a -> Set a
Set.filter (a -> a -> Bool
forall a. Eq a => a -> a -> Bool
/= (Set a -> a
forall a. Set a -> a
anElement Set a
x)) Set a
x) = Bool
False
| Bool
otherwise = Bool
True
crescentMoons :: Set (LightConstruction n e)
crescentMoons = [Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Map n n
-> Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> n
-> LightConstruction n e
forall n e.
ConeSketch n e
-> ConeSketch n e
-> Map n n
-> ConeSketch n e
-> n
-> LightConstruction n e
CrescentMoon Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
dc1 Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
dc2 Map n n
inj Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
c n
x | Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
dc1 <- Sketch n e
-> Set
(Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
forall n e. Sketch n e -> Set (ConeSketch n e)
distinguishedCones Sketch n e
s, Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
dc2 <- Sketch n e
-> Set
(Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
forall n e. Sketch n e -> Set (ConeSketch n e)
distinguishedCones Sketch n e
s, Map n n
inj <- Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
dc1 Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Set (Map n n)
forall c1 m1 o1 c2 m2 o2 m3 o3 c3.
(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,
Morphism m3 o3, Eq c3, Eq m3, Eq o3) =>
Cone c1 m1 o1 c3 m3 o3 -> Cone c2 m2 o2 c3 m3 o3 -> Set (Map o1 o2)
`topInjectionsCone` Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
dc2, Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
c <- ConeCategory
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Set
(Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
forall c m o. FiniteCategory c m o => c -> Set o
ob (Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> ConeCategory
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 c2 m2 o2.
(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) =>
Diagram c1 m1 o1 c2 m2 o2 -> ConeCategory c1 m1 o1 c2 m2 o2
coneCategory (Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2) =>
Cone c1 m1 o1 c2 m2 o2 -> Diagram c1 m1 o1 c2 m2 o2
baseCone Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
dc1)), n
x <- CategorySketch n e -> Set n
forall c m o. FiniteCategory c m o => c -> Set o
ob (Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> CategorySketch n e
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2, Eq c2, Eq m2, Eq o2) =>
Cone c1 m1 o1 c2 m2 o2 -> c1
indexingCategoryCone Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
dc2), Bool -> Bool
not ((n -> Maybe n
forall a. a -> Maybe a
Just (n -> Maybe n) -> n -> Maybe n
forall a b. (a -> b) -> a -> b
$ (Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2) =>
Cone c1 m1 o1 c2 m2 o2 -> Diagram c1 m1 o1 c2 m2 o2
baseCone Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
dc2) Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> n -> n
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ n
x) Maybe n -> Set (Maybe n) -> Bool
forall a. Eq a => a -> Set a -> Bool
`isIn` (((n -> n) -> Maybe n -> Maybe n
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2) =>
Cone c1 m1 o1 c2 m2 o2 -> Diagram c1 m1 o1 c2 m2 o2
baseCone Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
dc2 Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> n -> n
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$)) (Maybe n -> Maybe n) -> Set (Maybe n) -> Set (Maybe n)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ((Map n n
inj Map n n -> n -> Maybe n
forall k v. Eq k => Map k v -> k -> Maybe v
|?|) (n -> Maybe n) -> Set n -> Set (Maybe n)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (CategorySketch n e -> Set n
forall c m o. FiniteCategory c m o => c -> Set o
ob (Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> CategorySketch n e
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2, Eq c2, Eq m2, Eq o2) =>
Cone c1 m1 o1 c2 m2 o2 -> c1
indexingCategoryCone Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
dc1))))), Set (ArrowSketch n e) -> Bool
forall {a}. Eq a => Set a -> Bool
atLeastTwo (Set (ArrowSketch n e) -> Bool) -> Set (ArrowSketch n e) -> Bool
forall a b. (a -> b) -> a -> b
$ CategorySketch n e -> n -> n -> Set (ArrowSketch n e)
forall c m o.
(Category c m o, Morphism m o) =>
c -> o -> o -> Set m
ar (Sketch n e -> CategorySketch n e
forall n e. Sketch n e -> CategorySketch n e
underlyingCategory Sketch n e
s) (Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> n
forall c1 m1 o1 c2 m2 o2. Cone c1 m1 o1 c2 m2 o2 -> o2
apex Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
c) (Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2) =>
Cone c1 m1 o1 c2 m2 o2 -> Diagram c1 m1 o1 c2 m2 o2
baseCone Cone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
dc2 Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> n -> n
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ n
x)]
containsColantern :: (Eq n, Eq e) => Sketch n e -> Maybe (LightConstruction n e)
containsColantern :: forall n e.
(Eq n, Eq e) =>
Sketch n e -> Maybe (LightConstruction n e)
containsColantern Sketch n e
s = Set (LightConstruction n e) -> Maybe (LightConstruction n e)
forall a. Set a -> Maybe a
Set.setToMaybe Set (LightConstruction n e)
colanterns
where
colanterns :: Set (LightConstruction n e)
colanterns = [CoconeSketch n e
-> ArrowSketch n e -> ArrowSketch n e -> LightConstruction n e
forall n e.
CoconeSketch n e
-> CGMorphism n e -> CGMorphism n e -> LightConstruction n e
Colantern CoconeSketch n e
dinstinguishedCocone (CommaMorphism
One
n
One
(ArrowSketch n e)
(NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> ArrowSketch n e
forall c1 m1 o1 c2 m2 o2. CoconeMorphism c1 m1 o1 c2 m2 o2 -> m2
bindingMorphismCocone CommaMorphism
One
n
One
(ArrowSketch n e)
(NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
f) (CommaMorphism
One
n
One
(ArrowSketch n e)
(NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> ArrowSketch n e
forall c1 m1 o1 c2 m2 o2. CoconeMorphism c1 m1 o1 c2 m2 o2 -> m2
bindingMorphismCocone CommaMorphism
One
n
One
(ArrowSketch n e)
(NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
g) | CoconeSketch n e
dinstinguishedCocone <- Sketch n e -> Set (CoconeSketch n e)
forall n e. Sketch n e -> Set (CoconeSketch n e)
distinguishedCocones Sketch n e
s, CoconeSketch n e
cocone <- CoconeCategory
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Set (CoconeSketch n e)
forall c m o. FiniteCategory c m o => c -> Set o
ob (Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> CoconeCategory
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 c2 m2 o2.
(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) =>
Diagram c1 m1 o1 c2 m2 o2 -> CoconeCategory c1 m1 o1 c2 m2 o2
coconeCategory (CoconeSketch n e
-> Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2) =>
Cocone c1 m1 o1 c2 m2 o2 -> Diagram c1 m1 o1 c2 m2 o2
baseCocone CoconeSketch n e
dinstinguishedCocone)), CommaMorphism
One
n
One
(ArrowSketch n e)
(NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
f <- CoconeCategory
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> CoconeSketch n e
-> CoconeSketch n e
-> Set
(CommaMorphism
One
n
One
(ArrowSketch n e)
(NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n))
forall c m o.
(Category c m o, Morphism m o) =>
c -> o -> o -> Set m
ar (Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> CoconeCategory
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 c2 m2 o2.
(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) =>
Diagram c1 m1 o1 c2 m2 o2 -> CoconeCategory c1 m1 o1 c2 m2 o2
coconeCategory (CoconeSketch n e
-> Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2) =>
Cocone c1 m1 o1 c2 m2 o2 -> Diagram c1 m1 o1 c2 m2 o2
baseCocone CoconeSketch n e
dinstinguishedCocone)) CoconeSketch n e
dinstinguishedCocone CoconeSketch n e
cocone, CommaMorphism
One
n
One
(ArrowSketch n e)
(NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
g <- CoconeCategory
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> CoconeSketch n e
-> CoconeSketch n e
-> Set
(CommaMorphism
One
n
One
(ArrowSketch n e)
(NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n))
forall c m o.
(Category c m o, Morphism m o) =>
c -> o -> o -> Set m
ar (Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> CoconeCategory
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 c2 m2 o2.
(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) =>
Diagram c1 m1 o1 c2 m2 o2 -> CoconeCategory c1 m1 o1 c2 m2 o2
coconeCategory (CoconeSketch n e
-> Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2) =>
Cocone c1 m1 o1 c2 m2 o2 -> Diagram c1 m1 o1 c2 m2 o2
baseCocone CoconeSketch n e
dinstinguishedCocone)) CoconeSketch n e
dinstinguishedCocone CoconeSketch n e
cocone, CommaMorphism
One
n
One
(ArrowSketch n e)
(NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
f CommaMorphism
One
n
One
(ArrowSketch n e)
(NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> CommaMorphism
One
n
One
(ArrowSketch n e)
(NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
-> Bool
forall a. Eq a => a -> a -> Bool
/= CommaMorphism
One
n
One
(ArrowSketch n e)
(NaturalTransformation
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
g]
containsCospotlight :: (Eq n, Eq e) => Sketch n e -> Maybe (LightConstruction n e)
containsCospotlight :: forall n e.
(Eq n, Eq e) =>
Sketch n e -> Maybe (LightConstruction n e)
containsCospotlight Sketch n e
s = Set (LightConstruction n e) -> Maybe (LightConstruction n e)
forall a. Set a -> Maybe a
Set.setToMaybe Set (LightConstruction n e)
cospotlights
where
cospotlights :: Set (LightConstruction n e)
cospotlights = [Cocone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> n
-> n
-> Cocone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> LightConstruction n e
forall n e.
CoconeSketch n e
-> n -> n -> CoconeSketch n e -> LightConstruction n e
Cospotlight Cocone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
dinstinguishedCocone n
i n
j Cocone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
cocone | Cocone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
dinstinguishedCocone <- Sketch n e
-> Set
(Cocone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n)
forall n e. Sketch n e -> Set (CoconeSketch n e)
distinguishedCocones Sketch n e
s, n
i <- CategorySketch n e -> Set n
forall c m o. FiniteCategory c m o => c -> Set o
ob (Cocone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> CategorySketch n e
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2, Eq c2, Eq m2, Eq o2) =>
Cocone c1 m1 o1 c2 m2 o2 -> c1
indexingCategoryCocone Cocone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
dinstinguishedCocone), n
j <- CategorySketch n e -> Set n
forall c m o. FiniteCategory c m o => c -> Set o
ob (Cocone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> CategorySketch n e
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2, Eq c2, Eq m2, Eq o2) =>
Cocone c1 m1 o1 c2 m2 o2 -> c1
indexingCategoryCocone Cocone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
dinstinguishedCocone), n
i n -> n -> Bool
forall a. Eq a => a -> a -> Bool
/= n
j, (Cocone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> NaturalTransformation
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
forall c1 m1 o1 c2 m2 o2.
Cocone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCocone Cocone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
dinstinguishedCocone) NaturalTransformation
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> n -> CGMorphism n e
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
NaturalTransformation c1 m1 o1 c2 m2 o2 -> o1 -> m2
=>$ n
i CGMorphism n e -> CGMorphism n e -> Bool
forall a. Eq a => a -> a -> Bool
== (Cocone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> NaturalTransformation
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
forall c1 m1 o1 c2 m2 o2.
Cocone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCocone Cocone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
dinstinguishedCocone) NaturalTransformation
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> n -> CGMorphism n e
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
NaturalTransformation c1 m1 o1 c2 m2 o2 -> o1 -> m2
=>$ n
j, Cocone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
cocone <- CoconeCategory
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> Set
(Cocone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n)
forall c m o. FiniteCategory c m o => c -> Set o
ob (Diagram
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> CoconeCategory
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
forall c1 m1 o1 c2 m2 o2.
(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) =>
Diagram c1 m1 o1 c2 m2 o2 -> CoconeCategory c1 m1 o1 c2 m2 o2
coconeCategory (Cocone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> Diagram
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2) =>
Cocone c1 m1 o1 c2 m2 o2 -> Diagram c1 m1 o1 c2 m2 o2
baseCocone Cocone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
dinstinguishedCocone)), (Cocone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> NaturalTransformation
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
forall c1 m1 o1 c2 m2 o2.
Cocone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCocone Cocone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
cocone) NaturalTransformation
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> n -> CGMorphism n e
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
NaturalTransformation c1 m1 o1 c2 m2 o2 -> o1 -> m2
=>$ n
i CGMorphism n e -> CGMorphism n e -> Bool
forall a. Eq a => a -> a -> Bool
/= (Cocone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> NaturalTransformation
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
forall c1 m1 o1 c2 m2 o2.
Cocone c1 m1 o1 c2 m2 o2 -> NaturalTransformation c1 m1 o1 c2 m2 o2
legsCocone Cocone
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
cocone) NaturalTransformation
(CategorySketch n e)
(CGMorphism n e)
n
(CategorySketch n e)
(CGMorphism n e)
n
-> n -> CGMorphism n e
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
NaturalTransformation c1 m1 o1 c2 m2 o2 -> o1 -> m2
=>$ n
j]
containsCocrescentMoon :: (Eq n, Eq e) => Sketch n e -> Maybe (LightConstruction n e)
containsCocrescentMoon :: forall n e.
(Eq n, Eq e) =>
Sketch n e -> Maybe (LightConstruction n e)
containsCocrescentMoon Sketch n e
s = Set (LightConstruction n e) -> Maybe (LightConstruction n e)
forall a. Set a -> Maybe a
Set.setToMaybe Set (LightConstruction n e)
cocrescentMoons
where
atLeastTwo :: Set a -> Bool
atLeastTwo Set a
x
| Set a -> Bool
forall a. Set a -> Bool
Set.null Set a
x = Bool
False
| Set a -> Bool
forall a. Set a -> Bool
Set.null ((a -> Bool) -> Set a -> Set a
forall a. (a -> Bool) -> Set a -> Set a
Set.filter (a -> a -> Bool
forall a. Eq a => a -> a -> Bool
/= (Set a -> a
forall a. Set a -> a
anElement Set a
x)) Set a
x) = Bool
False
| Bool
otherwise = Bool
True
cocrescentMoons :: Set (LightConstruction n e)
cocrescentMoons = [Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Map n n
-> Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> n
-> LightConstruction n e
forall n e.
CoconeSketch n e
-> CoconeSketch n e
-> Map n n
-> CoconeSketch n e
-> n
-> LightConstruction n e
CocrescentMoon Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
dcc1 Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
dcc2 Map n n
inj Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
cc n
x | Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
dcc1 <- Sketch n e
-> Set
(Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
forall n e. Sketch n e -> Set (CoconeSketch n e)
distinguishedCocones Sketch n e
s, Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
dcc2 <- Sketch n e
-> Set
(Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
forall n e. Sketch n e -> Set (CoconeSketch n e)
distinguishedCocones Sketch n e
s, Map n n
inj <- Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
dcc1 Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Set (Map n n)
forall c1 m1 o1 c2 m2 o2 m3 o3 c3.
(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,
Morphism m3 o3, Eq c3, Eq m3, Eq o3) =>
Cocone c1 m1 o1 c3 m3 o3
-> Cocone c2 m2 o2 c3 m3 o3 -> Set (Map o1 o2)
`bottomInjectionsCocone` Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
dcc2, Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
cc <- CoconeCategory
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Set
(Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n)
forall c m o. FiniteCategory c m o => c -> Set o
ob (Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> CoconeCategory
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 c2 m2 o2.
(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) =>
Diagram c1 m1 o1 c2 m2 o2 -> CoconeCategory c1 m1 o1 c2 m2 o2
coconeCategory (Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2) =>
Cocone c1 m1 o1 c2 m2 o2 -> Diagram c1 m1 o1 c2 m2 o2
baseCocone Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
dcc1)), n
x <- CategorySketch n e -> Set n
forall c m o. FiniteCategory c m o => c -> Set o
ob (Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> CategorySketch n e
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2, Eq c2, Eq m2, Eq o2) =>
Cocone c1 m1 o1 c2 m2 o2 -> c1
indexingCategoryCocone Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
dcc2), Bool -> Bool
not ((n -> Maybe n
forall a. a -> Maybe a
Just (n -> Maybe n) -> n -> Maybe n
forall a b. (a -> b) -> a -> b
$ (Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2) =>
Cocone c1 m1 o1 c2 m2 o2 -> Diagram c1 m1 o1 c2 m2 o2
baseCocone Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
dcc2) Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> n -> n
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ n
x) Maybe n -> Set (Maybe n) -> Bool
forall a. Eq a => a -> Set a -> Bool
`isIn` (((n -> n) -> Maybe n -> Maybe n
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2) =>
Cocone c1 m1 o1 c2 m2 o2 -> Diagram c1 m1 o1 c2 m2 o2
baseCocone Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
dcc2 Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> n -> n
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$)) (Maybe n -> Maybe n) -> Set (Maybe n) -> Set (Maybe n)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ((Map n n
inj Map n n -> n -> Maybe n
forall k v. Eq k => Map k v -> k -> Maybe v
|?|) (n -> Maybe n) -> Set n -> Set (Maybe n)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (CategorySketch n e -> Set n
forall c m o. FiniteCategory c m o => c -> Set o
ob (Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> CategorySketch n e
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2, Eq c2, Eq m2, Eq o2) =>
Cocone c1 m1 o1 c2 m2 o2 -> c1
indexingCategoryCocone Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
dcc1))))), Set (ArrowSketch n e) -> Bool
forall {a}. Eq a => Set a -> Bool
atLeastTwo (Set (ArrowSketch n e) -> Bool) -> Set (ArrowSketch n e) -> Bool
forall a b. (a -> b) -> a -> b
$ CategorySketch n e -> n -> n -> Set (ArrowSketch n e)
forall c m o.
(Category c m o, Morphism m o) =>
c -> o -> o -> Set m
ar (Sketch n e -> CategorySketch n e
forall n e. Sketch n e -> CategorySketch n e
underlyingCategory Sketch n e
s) (Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
forall c1 m1 o1 m2 o2 c2.
(FiniteCategory c1 m1 o1, Morphism m1 o1, Eq c1, Eq m1, Eq o1,
Morphism m2 o2) =>
Cocone c1 m1 o1 c2 m2 o2 -> Diagram c1 m1 o1 c2 m2 o2
baseCocone Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
dcc2 Diagram
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> n -> n
forall o1 c1 m1 c2 m2 o2.
Eq o1 =>
Diagram c1 m1 o1 c2 m2 o2 -> o1 -> o2
->$ n
x) (Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
-> n
forall c1 m1 o1 c2 m2 o2. Cocone c1 m1 o1 c2 m2 o2 -> o2
nadir Cocone
(CategorySketch n e)
(ArrowSketch n e)
n
(CategorySketch n e)
(ArrowSketch n e)
n
cc)]
data LightConstruction n e =
Lantern (ConeSketch n e) (CGMorphism n e) (CGMorphism n e) |
Spotlight (ConeSketch n e) n n (ConeSketch n e) |
CrescentMoon (ConeSketch n e) (ConeSketch n e) (Map n n) (ConeSketch n e) n |
Colantern (CoconeSketch n e) (CGMorphism n e) (CGMorphism n e) |
Cospotlight (CoconeSketch n e) n n (CoconeSketch n e) |
CocrescentMoon (CoconeSketch n e) (CoconeSketch n e) (Map n n) (CoconeSketch n e) n
deriving (LightConstruction n e -> LightConstruction n e -> Bool
(LightConstruction n e -> LightConstruction n e -> Bool)
-> (LightConstruction n e -> LightConstruction n e -> Bool)
-> Eq (LightConstruction n e)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall n e.
(Eq e, Eq n) =>
LightConstruction n e -> LightConstruction n e -> Bool
$c== :: forall n e.
(Eq e, Eq n) =>
LightConstruction n e -> LightConstruction n e -> Bool
== :: LightConstruction n e -> LightConstruction n e -> Bool
$c/= :: forall n e.
(Eq e, Eq n) =>
LightConstruction n e -> LightConstruction n e -> Bool
/= :: LightConstruction n e -> LightConstruction n e -> Bool
Eq, Int -> LightConstruction n e -> ShowS
[LightConstruction n e] -> ShowS
LightConstruction n e -> [Char]
(Int -> LightConstruction n e -> ShowS)
-> (LightConstruction n e -> [Char])
-> ([LightConstruction n e] -> ShowS)
-> Show (LightConstruction n e)
forall a.
(Int -> a -> ShowS) -> (a -> [Char]) -> ([a] -> ShowS) -> Show a
forall n e.
(Show e, Show n) =>
Int -> LightConstruction n e -> ShowS
forall n e. (Show e, Show n) => [LightConstruction n e] -> ShowS
forall n e. (Show e, Show n) => LightConstruction n e -> [Char]
$cshowsPrec :: forall n e.
(Show e, Show n) =>
Int -> LightConstruction n e -> ShowS
showsPrec :: Int -> LightConstruction n e -> ShowS
$cshow :: forall n e. (Show e, Show n) => LightConstruction n e -> [Char]
show :: LightConstruction n e -> [Char]
$cshowList :: forall n e. (Show e, Show n) => [LightConstruction n e] -> ShowS
showList :: [LightConstruction n e] -> ShowS
Show, (forall x. LightConstruction n e -> Rep (LightConstruction n e) x)
-> (forall x.
Rep (LightConstruction n e) x -> LightConstruction n e)
-> Generic (LightConstruction n e)
forall x. Rep (LightConstruction n e) x -> LightConstruction n e
forall x. LightConstruction n e -> Rep (LightConstruction n e) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall n e x.
Rep (LightConstruction n e) x -> LightConstruction n e
forall n e x.
LightConstruction n e -> Rep (LightConstruction n e) x
$cfrom :: forall n e x.
LightConstruction n e -> Rep (LightConstruction n e) x
from :: forall x. LightConstruction n e -> Rep (LightConstruction n e) x
$cto :: forall n e x.
Rep (LightConstruction n e) x -> LightConstruction n e
to :: forall x. Rep (LightConstruction n e) x -> LightConstruction n e
Generic, Int -> Int -> [Char] -> LightConstruction n e -> [Char]
Int -> LightConstruction n e -> [Char]
(Int -> LightConstruction n e -> [Char])
-> (Int -> Int -> [Char] -> LightConstruction n e -> [Char])
-> (Int -> LightConstruction n e -> [Char])
-> PrettyPrint (LightConstruction n e)
forall a.
(Int -> a -> [Char])
-> (Int -> Int -> [Char] -> a -> [Char])
-> (Int -> a -> [Char])
-> PrettyPrint a
forall n e.
(PrettyPrint n, PrettyPrint e, Eq e, Eq n) =>
Int -> Int -> [Char] -> LightConstruction n e -> [Char]
forall n e.
(PrettyPrint n, PrettyPrint e, Eq e, Eq n) =>
Int -> LightConstruction n e -> [Char]
$cpprint :: forall n e.
(PrettyPrint n, PrettyPrint e, Eq e, Eq n) =>
Int -> LightConstruction n e -> [Char]
pprint :: Int -> LightConstruction n e -> [Char]
$cpprintWithIndentations :: forall n e.
(PrettyPrint n, PrettyPrint e, Eq e, Eq n) =>
Int -> Int -> [Char] -> LightConstruction n e -> [Char]
pprintWithIndentations :: Int -> Int -> [Char] -> LightConstruction n e -> [Char]
$cpprintIndent :: forall n e.
(PrettyPrint n, PrettyPrint e, Eq e, Eq n) =>
Int -> LightConstruction n e -> [Char]
pprintIndent :: Int -> LightConstruction n e -> [Char]
PrettyPrint, LightConstruction n e -> LightConstruction n e
(LightConstruction n e -> LightConstruction n e)
-> Simplifiable (LightConstruction n e)
forall a. (a -> a) -> Simplifiable a
forall n e.
(Simplifiable n, Simplifiable e, Eq e, Eq n) =>
LightConstruction n e -> LightConstruction n e
$csimplify :: forall n e.
(Simplifiable n, Simplifiable e, Eq e, Eq n) =>
LightConstruction n e -> LightConstruction n e
simplify :: LightConstruction n e -> LightConstruction n e
Simplifiable)
containsLightConstruction :: (Eq n, Eq e) => Sketch n e -> Maybe (LightConstruction n e)
containsLightConstruction :: forall n e.
(Eq n, Eq e) =>
Sketch n e -> Maybe (LightConstruction n e)
containsLightConstruction Sketch n e
s
| Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (LightConstruction n e) -> Bool
forall a. Maybe a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Maybe (LightConstruction n e) -> Bool)
-> Maybe (LightConstruction n e) -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (LightConstruction n e)
lant = Maybe (LightConstruction n e)
lant
| Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (LightConstruction n e) -> Bool
forall a. Maybe a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Maybe (LightConstruction n e) -> Bool)
-> Maybe (LightConstruction n e) -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (LightConstruction n e)
spot = Maybe (LightConstruction n e)
spot
| Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (LightConstruction n e) -> Bool
forall a. Maybe a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Maybe (LightConstruction n e) -> Bool)
-> Maybe (LightConstruction n e) -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (LightConstruction n e)
moon = Maybe (LightConstruction n e)
moon
| Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (LightConstruction n e) -> Bool
forall a. Maybe a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Maybe (LightConstruction n e) -> Bool)
-> Maybe (LightConstruction n e) -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (LightConstruction n e)
colant = Maybe (LightConstruction n e)
colant
| Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (LightConstruction n e) -> Bool
forall a. Maybe a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Maybe (LightConstruction n e) -> Bool)
-> Maybe (LightConstruction n e) -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (LightConstruction n e)
cospot = Maybe (LightConstruction n e)
cospot
| Bool -> Bool
not (Bool -> Bool) -> Bool -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (LightConstruction n e) -> Bool
forall a. Maybe a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Maybe (LightConstruction n e) -> Bool)
-> Maybe (LightConstruction n e) -> Bool
forall a b. (a -> b) -> a -> b
$ Maybe (LightConstruction n e)
comoon = Maybe (LightConstruction n e)
comoon
| Bool
otherwise = Maybe (LightConstruction n e)
forall a. Maybe a
Nothing
where
lant :: Maybe (LightConstruction n e)
lant = Sketch n e -> Maybe (LightConstruction n e)
forall n e.
(Eq n, Eq e) =>
Sketch n e -> Maybe (LightConstruction n e)
containsLantern Sketch n e
s
spot :: Maybe (LightConstruction n e)
spot = Sketch n e -> Maybe (LightConstruction n e)
forall n e.
(Eq n, Eq e) =>
Sketch n e -> Maybe (LightConstruction n e)
containsSpotlight Sketch n e
s
moon :: Maybe (LightConstruction n e)
moon = Sketch n e -> Maybe (LightConstruction n e)
forall n e.
(Eq n, Eq e) =>
Sketch n e -> Maybe (LightConstruction n e)
containsCrescentMoon Sketch n e
s
colant :: Maybe (LightConstruction n e)
colant = Sketch n e -> Maybe (LightConstruction n e)
forall n e.
(Eq n, Eq e) =>
Sketch n e -> Maybe (LightConstruction n e)
containsColantern Sketch n e
s
cospot :: Maybe (LightConstruction n e)
cospot = Sketch n e -> Maybe (LightConstruction n e)
forall n e.
(Eq n, Eq e) =>
Sketch n e -> Maybe (LightConstruction n e)
containsCospotlight Sketch n e
s
comoon :: Maybe (LightConstruction n e)
comoon = Sketch n e -> Maybe (LightConstruction n e)
forall n e.
(Eq n, Eq e) =>
Sketch n e -> Maybe (LightConstruction n e)
containsCocrescentMoon Sketch n e
s