oalg-base-3.0.0.0: Algebraic structures on oriented entities and limits as a tool kit to solve algebraic problems.
Copyright(c) Erich Gut
LicenseBSD3
Maintainerzerich.gut@gmail.com
Safe HaskellNone
LanguageHaskell2010

OAlg.Entity.Diagram.Definition

Description

definition of Diagrams on Oriented structures.

Duality Each diagram admits a co-diagram just by reversing the arrows and leaving the points untouched. In the following it will be demonstrated how to work - respectively - how to switch between a diagram and its co-diagram and how this duality-concept is implemented.

Let d be a diagram in Diagram t n m x over a Oriented structure x. To get the co-diagram d' of d just use the code:

Contravariant2 i   = toDualOpOrt
SDualBi (Left1 d') = amapF i (SDualBi (Right1 d))

where toDualOpOrt is the duality operator with type IsoO Ort Op x (Op x) which can be applied to SDualBi.

And to get the diagram d of a given co-diagram d' just use the code:

Contravariant2 i   = toDualOpOrt
SDualBi (Right1 d) = amapF (inv2 i) (SDualBi (Left1 d'))

where inv2 i is the inverse of i. As the application of IsoO Ort Op on SDualBi is functorial, the two mappings amapF i and amapF (inv2 i) are inverse to each other.

To implement this behavior, follow the following steps:

First implement two functions on Diagram t n m x, where the one maps it to Diagram t n m y according to a covariant homomorphism on Oriented structures (see dgMapCov) and the other maps it to Diagram (Dual t) n m y (see dgMapCnt).

Now define the duality on the types according

type instance Dual1 (Diagram t n m) = Diagram (Dual t) n m

With this definitions you can implement the mapping dgMapS on SDualBi by

dgMapS = vmapBi dgMapCov dgMapCov dgMapCnt dgMapCnt

where vmapBi implements the duality mapping on SDualBi.

Finally on can declare the

instance (HomDisjunctiveOriented h, t ~ Dual (Dual t))
  => ApplicativeG (SDualBi (Diagram t n m)) h (->) where
  amapG = dgMapS

and because of the given implementation of dgMapCov, dgMapCnt and the property of vmapBi on can declare:

instance
  ( HomOrientedDisjunctive h
  , FunctorialOriented h
  , t ~ Dual (Dual t)
  )
  => FunctorialG (SDualBi (Diagram t n m)) h (->)
Synopsis

Diagram

data Diagram (t :: DiagramType) (n :: N') (m :: N') a where Source #

diagram for a Oriented structure a of type t having n points and m arrows.

Properties Let d be in Diagram t n m a for a Oriented structure a, then holds:

  1. If d matches DiagramChainTo e as then holds: e == end a0 and start ai == end ai+1 for all i = 0..m-2 where a0:|..:|ai:|..:|am-1:|Nil = as.
  2. If d matches DiagramChainFrom s as then holds: s == start a0 and end ai == start ai+1 for all i = 0..m-2 where a0:|..:|ai:|..:|am-1:|Nil = as.
  3. If d matches DiagramParallelLR l r as then holds: orientation a == l:>r for all a in as.
  4. If d matches DiagramParallelRL l r as then holds: orientation a == r:>l for all a in as.
  5. If d matches DiagramSink e as then holds: e == end a for all a in as.
  6. If d matches DiagramSource s as then holds: s == start a for all a in as.
  7. If d matches DiagramGeneral ps aijs then holds pi == start aij and pj == end aij for all aij in aijs and ps = p0..pn-1@.

Constructors

DiagramEmpty :: forall a. Diagram 'Empty 'N0 'N0 a 
DiagramDiscrete :: forall (n :: N') a. FinList n (Point a) -> Diagram 'Discrete n 'N0 a 
DiagramChainTo :: forall a (m :: N'). Point a -> FinList m a -> Diagram ('Chain 'To) (m + 1) m a 
DiagramChainFrom :: forall a (m :: N'). Point a -> FinList m a -> Diagram ('Chain 'From) (m + 1) m a 
DiagramParallelLR :: forall a (m :: N'). Point a -> Point a -> FinList m a -> Diagram ('Parallel 'LeftToRight) ('S N1) m a 
DiagramParallelRL :: forall a (m :: N'). Point a -> Point a -> FinList m a -> Diagram ('Parallel 'RightToLeft) ('S N1) m a 
DiagramSink :: forall a (m :: N'). Point a -> FinList m a -> Diagram ('Star 'To) (m + 1) m a 
DiagramSource :: forall a (m :: N'). Point a -> FinList m a -> Diagram ('Star 'From) (m + 1) m a 
DiagramGeneral :: forall (n :: N') a (m :: N'). FinList n (Point a) -> FinList m (a, Orientation N) -> Diagram 'General n m a 

Instances

Instances details
Diagrammatic Diagram Source # 
Instance details

Defined in OAlg.Entity.Diagram.Diagrammatic

Methods

diagram :: forall (t :: DiagramType) (n :: N') (m :: N') x. Diagram t n m x -> Diagram t n m x Source #

NaturalDiagrammaticFree Dst Diagram n m Source # 
Instance details

Defined in OAlg.Entity.Slice.Free

(CategoryDisjunctive h, HomOrientedDisjunctive h, FunctorialOriented h, t ~ Dual (Dual t)) => NaturalDiagrammatic h Diagram t n m Source # 
Instance details

Defined in OAlg.Entity.Diagram.Diagrammatic

Diagrammatic d => Natural s (->) (SDualBi (DiagramG d t n m)) (SDualBi (DiagramG Diagram t n m)) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Diagrammatic

Methods

roh :: Struct s x -> SDualBi (DiagramG d t n m) x -> SDualBi (DiagramG Diagram t n m) x Source #

(HomOrientedDisjunctive h, FunctorialOriented h, t ~ Dual (Dual t)) => NaturalTransformable h (->) (SDualBi (DiagramG Diagram t n m)) (SDualBi (DiagramG Diagram t n m)) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Diagrammatic

(CategoryDisjunctive h, HomSlicedOriented i h, FunctorialOriented h, t ~ Dual (Dual t)) => NaturalTransformable h (->) (SDualBi (DiagramG (SliceDiagram i) t n m)) (SDualBi (DiagramG Diagram t n m)) Source # 
Instance details

Defined in OAlg.Entity.Slice.Adjunction

(HomOrientedSlicedFree h, FunctorialOriented h, t ~ Dual (Dual t)) => NaturalTransformable h (->) (SDualBi (DiagramG DiagramFree t n m)) (SDualBi (DiagramG Diagram t n m)) Source # 
Instance details

Defined in OAlg.Entity.Slice.Free

Diagrammatic d => Natural s (->) (DiagramG d t n m) (DiagramG Diagram t n m) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Diagrammatic

Methods

roh :: Struct s x -> DiagramG d t n m x -> DiagramG Diagram t n m x Source #

(Eq a, EqPoint a) => EqDual1 (Diagram t n m :: Type -> Type) (a :: Type) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

(Show a, ShowPoint a) => ShowDual1 (Diagram t n m :: Type -> Type) (a :: Type) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

Oriented x => EqDual1 (DiagramG Diagram t n m :: Type -> Type) (x :: Type) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Diagrammatic

Oriented x => ShowDual1 (DiagramG Diagram t n m :: Type -> Type) (x :: Type) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Diagrammatic

(Eq x, EqPoint x) => EqDual1 (Cone s p Diagram t n m :: Type -> Type) (x :: Type) Source # 
Instance details

Defined in OAlg.Limes.Cone.Duality

(Show x, ShowPoint x) => ShowDual1 (Cone s p Diagram t n m :: Type -> Type) (x :: Type) Source # 
Instance details

Defined in OAlg.Limes.Cone.Duality

(Oriented x, XStandardOrtSite 'To x, XStandardOrtSite 'From x, Attestable m, n ~ (m + 1)) => XStandardDual1 (SDualBi (Diagram ('Chain 'From) n m)) x Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

(Oriented x, XStandardOrtSite 'To x, XStandardOrtSite 'From x, Attestable m, n ~ (m + 1)) => XStandardDual1 (SDualBi (Diagram ('Chain 'To) n m)) x Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

(Attestable m, n ~ (m + 1)) => TransformableG (SDualBi (Diagram ('Chain 'From) n m)) OrtSiteX EqE Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

Methods

tauG :: Struct OrtSiteX x -> Struct EqE (SDualBi (Diagram ('Chain 'From) n m) x) Source #

(Attestable m, n ~ (m + 1)) => TransformableG (SDualBi (Diagram ('Chain 'To) n m)) OrtSiteX EqE Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

Methods

tauG :: Struct OrtSiteX x -> Struct EqE (SDualBi (Diagram ('Chain 'To) n m) x) Source #

(HomOrientedDisjunctive h, t ~ Dual (Dual t)) => ApplicativeG (SDualBi (Diagram t n m)) h (->) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

Methods

amapG :: h x y -> SDualBi (Diagram t n m) x -> SDualBi (Diagram t n m) y Source #

(HomOrientedDisjunctive h, t ~ Dual (Dual t)) => ApplicativeG (SDualBi (DiagramG Diagram t n m)) h (->) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Diagrammatic

Methods

amapG :: h x y -> SDualBi (DiagramG Diagram t n m) x -> SDualBi (DiagramG Diagram t n m) y Source #

(HomOrientedDisjunctive h, FunctorialOriented h, t ~ Dual (Dual t)) => FunctorialG (SDualBi (Diagram t n m)) h (->) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

(HomOrientedDisjunctive h, FunctorialOriented h, t ~ Dual (Dual t)) => FunctorialG (SDualBi (DiagramG Diagram t n m)) h (->) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Diagrammatic

(CategoryDisjunctive h, HomSlicedDistributive i h, FunctorialOriented h, p ~ Dual (Dual p), t ~ Dual (Dual t), s ~ Dst) => NaturalConic (Inv2 h) (LiftableCone i) s p Diagram t n m Source # 
Instance details

Defined in OAlg.Entity.Slice.Liftable

(CategoryDisjunctive h, HomSlicedDistributive i h, FunctorialOriented h, p ~ Dual (Dual p), t ~ Dual (Dual t), s ~ Dst) => NaturalTransformable (Inv2 h) (->) (SDualBi (ConeG (LiftableCone i) s p Diagram t n m)) (SDualBi (ConeG Cone s p Diagram t n m)) Source # 
Instance details

Defined in OAlg.Entity.Slice.Liftable

Oriented a => ValidableDual1 (Diagram t n m) a Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

(Oriented x, XStandardOrtSite 'To x, Attestable m, n ~ (m + 1)) => XStandardDual1 (Diagram ('Chain 'From) n m) x Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

(Oriented x, XStandardOrtSite 'From x, Attestable m, n ~ (m + 1)) => XStandardDual1 (Diagram ('Chain 'To) n m) x Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

HomOriented h => ApplicativeG (Diagram t n m) h (->) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

Methods

amapG :: h x y -> Diagram t n m x -> Diagram t n m y Source #

(HomOriented h, FunctorialOriented h) => FunctorialG (Diagram t n m) h (->) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

(Show a, ShowPoint a) => Show (Diagram t n m a) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

Methods

showsPrec :: Int -> Diagram t n m a -> ShowS #

show :: Diagram t n m a -> String #

showList :: [Diagram t n m a] -> ShowS #

(Show x, ShowPoint x) => Show (FactorChain Diagram s n x) Source # 
Instance details

Defined in OAlg.Limes.Cone.FactorChain

(Eq a, EqPoint a) => Eq (Diagram t n m a) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

Methods

(==) :: Diagram t n m a -> Diagram t n m a -> Bool #

(/=) :: Diagram t n m a -> Diagram t n m a -> Bool #

(Eq x, EqPoint x) => Eq (FactorChain Diagram s n x) Source # 
Instance details

Defined in OAlg.Limes.Cone.FactorChain

Methods

(==) :: FactorChain Diagram s n x -> FactorChain Diagram s n x -> Bool #

(/=) :: FactorChain Diagram s n x -> FactorChain Diagram s n x -> Bool #

Oriented a => Validable (Diagram t n m a) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

Methods

valid :: Diagram t n m a -> Statement Source #

(Oriented a, XStandardOrtSite t a, Attestable m, n ~ (m + 1)) => XStandard (Diagram ('Chain t) n m a) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

Methods

xStandard :: X (Diagram ('Chain t) n m a) Source #

(Oriented a, m ~ N0, XStandardPoint a, Attestable n) => XStandard (Diagram 'Discrete n m a) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

Methods

xStandard :: X (Diagram 'Discrete n m a) Source #

(Oriented a, n ~ N0, m ~ N0) => XStandard (Diagram 'Empty n m a) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

Methods

xStandard :: X (Diagram 'Empty n m a) Source #

(Oriented a, n ~ N2, XStandardOrtOrientation a, Attestable m) => XStandard (Diagram ('Parallel 'LeftToRight) n m a) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

(Oriented a, n ~ N2, XStandardOrtOrientation a, Attestable m) => XStandard (Diagram ('Parallel 'RightToLeft) n m a) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

(Oriented a, XStandardOrtSite 'From a, Attestable m) => XStandard (Diagram ('Star 'From) ('S m) m a) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

Methods

xStandard :: X (Diagram ('Star 'From) ('S m) m a) Source #

(Oriented a, XStandardOrtSite 'To a, Attestable m) => XStandard (Diagram ('Star 'To) ('S m) m a) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

Methods

xStandard :: X (Diagram ('Star 'To) ('S m) m a) Source #

(Oriented a, Typeable t, Typeable n, Typeable m) => Oriented (Diagram ('Chain t) n m a) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

Methods

orientation :: Diagram ('Chain t) n m a -> Orientation (Point (Diagram ('Chain t) n m a)) Source #

start :: Diagram ('Chain t) n m a -> Point (Diagram ('Chain t) n m a) Source #

end :: Diagram ('Chain t) n m a -> Point (Diagram ('Chain t) n m a) Source #

(Oriented a, Typeable d, Typeable n, Typeable m) => Oriented (Diagram ('Parallel d) n m a) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

Methods

orientation :: Diagram ('Parallel d) n m a -> Orientation (Point (Diagram ('Parallel d) n m a)) Source #

start :: Diagram ('Parallel d) n m a -> Point (Diagram ('Parallel d) n m a) Source #

end :: Diagram ('Parallel d) n m a -> Point (Diagram ('Parallel d) n m a) Source #

EqPoint a => EqPoint (Diagram ('Chain t) n m a) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

EqPoint a => EqPoint (Diagram ('Parallel d) n m a) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

ShowPoint a => ShowPoint (Diagram ('Chain t) n m a) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

ShowPoint a => ShowPoint (Diagram ('Parallel d) n m a) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

TypeablePoint a => TypeablePoint (Diagram ('Chain t) n m a) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

TypeablePoint a => TypeablePoint (Diagram ('Parallel d) n m a) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

Oriented a => ValidablePoint (Diagram ('Chain t) n m a) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

Oriented a => ValidablePoint (Diagram ('Parallel d) n m a) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

(Distributive x, XStandardEligibleConeKernel N1 x, XStandardEligibleConeFactorKernel N1 x, XStandardEligibleConeCokernel N1 x, XStandardEligibleConeFactorCokernel N1 x) => Validable (VarianceG t Cone Cone Diagram n x) Source # 
Instance details

Defined in OAlg.Limes.Exact.Deviation

(Distributive x, XStandardEligibleConeKernel N1 x, XStandardEligibleConeFactorKernel N1 x, XStandardEligibleConeCokernel N1 x, XStandardEligibleConeFactorCokernel N1 x, Typeable t, Typeable n) => Validable (VarianceGHom t Cone Cone Diagram n x) Source # 
Instance details

Defined in OAlg.Limes.Exact.Deviation

type Dual1 (Diagram t n m :: Type -> Type) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

type Dual1 (Diagram t n m :: Type -> Type) = Diagram (Dual t) n m
type Point (Diagram ('Chain t) n m a) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

type Point (Diagram ('Chain t) n m a) = Point a
type Point (Diagram ('Parallel d) n m a) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

type Point (Diagram ('Parallel d) n m a) = Point a

data DiagramType Source #

the types of a Diagram.

Instances

Instances details
Show DiagramType Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

Eq DiagramType Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

Ord DiagramType Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

type Dual 'Discrete Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

type Dual 'Empty Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

type Dual 'Empty = 'Empty
type Dual 'General Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

type Dual ('Chain t :: DiagramType) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

type Dual ('Chain t :: DiagramType) = 'Chain (Dual t)
type Dual ('Parallel t :: DiagramType) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

type Dual ('Parallel t :: DiagramType) = 'Parallel (Dual t)
type Dual ('Star t :: DiagramType) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

type Dual ('Star t :: DiagramType) = 'Star (Dual t)

rt' :: forall (t :: DiagramType). (Dual (Dual t) :~: t) -> Dual (Dual (Dual t)) :~: Dual t Source #

Dual is well defined on diagram types.

dgType :: forall (t :: DiagramType) (n :: N') (m :: N') a. Diagram t n m a -> DiagramType Source #

the type of a diagram.

dgTypeRefl :: forall (t :: DiagramType) (n :: N') (m :: N') a. Diagram t n m a -> Dual (Dual t) :~: t Source #

reflexivity of the underlying diagram type.

dgPoints :: forall a (t :: DiagramType) (n :: N') (m :: N'). Oriented a => Diagram t n m a -> FinList n (Point a) Source #

the points of a diagram.

dgCenter :: forall (t :: Site) (n :: N') (m :: N') c. Diagram ('Star t) n m c -> Point c Source #

the center point of a Star-diagram.

dgArrows :: forall (t :: DiagramType) (n :: N') (m :: N') a. Diagram t n m a -> FinList m a Source #

the arrows of a diagram.

dgQuiver :: forall a (t :: DiagramType) (n :: N') (m :: N'). Oriented a => Diagram t n m a -> Quiver n m Source #

the underlying quiver of a diagram.

Duality

dgMapS :: forall h (t :: DiagramType) x y (n :: N') (m :: N'). (HomOrientedDisjunctive h, t ~ Dual (Dual t)) => h x y -> SDualBi (Diagram t n m) x -> SDualBi (Diagram t n m) y Source #

the canonically induced application given by dgMap and dgMapCnt.

dgMapCov :: forall (h :: Type -> Type -> Type) x y (t :: DiagramType) (n :: N') (m :: N'). HomOrientedDisjunctive h => Variant2 'Covariant h x y -> Diagram t n m x -> Diagram t n m y Source #

mapping of a diagramm via a Covariant homomorphism on Oriented structures.

dgMapCnt :: forall (h :: Type -> Type -> Type) x y (t :: DiagramType) (n :: N') (m :: N'). HomOrientedDisjunctive h => Variant2 'Contravariant h x y -> Diagram t n m x -> Dual1 (Diagram t n m) y Source #

mapping of a diagram via a Contravariant homomorphism on Oriented structures.

Properties Let d be in 'Diagram t n m a and Contravariant2 h in Variant2 Contravariant h a b with HomOrientedDisjunctive s o h, then holds:

  1. dgArrows (dgMapCov q h d) == amap1 (amap h) (dgArrows d).
  2. dgPoints (dgMapCov q h d) == amap1 (pmap h) (dgPoints d).

where q is any proxy in q s o.

dgMap :: forall h x y (t :: DiagramType) (n :: N') (m :: N'). HomOriented h => h x y -> Diagram t n m x -> Diagram t n m y Source #

mapping of a diagram via a Covariant homomorphism on Oriented structures.

Properties Let d be in 'Diagram t n m a and Covariant2 h in Variant2 Covariant h a b with HomOrientedDisjunctive s o h, then holds:

  1. dgArrows (dgMapCov q h d) == amap1 (amap h) (dgArrows d).
  2. dgPoints (dgMapCov q h d) == amap1 (pmap h) (dgPoints d).

where q is any proxy in q s o.

Chain

chnToStart :: forall a (n :: N') (m :: N'). Oriented a => Diagram ('Chain 'To) n m a -> Point a Source #

the last point of the chain.

chnFromStart :: forall (n :: N') (m :: N') a. Diagram ('Chain 'From) n m a -> Point a Source #

the first point of the chain.

Parallel

dgPrlAdjZero :: forall a (n :: N') (m :: N'). Distributive a => Diagram ('Parallel 'LeftToRight) n m a -> Diagram ('Parallel 'LeftToRight) n (m + 1) a Source #

adjoins a zero arrow as the first parallel arrow.

dgPrlTail :: forall (d :: Direction) (n :: N') (m :: N') a. Diagram ('Parallel d) n (m + 1) a -> Diagram ('Parallel d) n m a Source #

the _tail__ of a parallel diagram.

dgPrlDiffHead :: forall a (d :: Direction) (n :: N') (m :: N'). Abelian a => Diagram ('Parallel d) n (m + 1) a -> Diagram ('Parallel d) n (m + 1) a Source #

subtracts to every arrow of the parallel diagram the first arrow.

dgPrlDiffTail :: forall a (d :: Direction) (n :: N') (m :: N'). Abelian a => Diagram ('Parallel d) n (m + 1) a -> Diagram ('Parallel d) n m a Source #

subtracts the first arrow to all the others an drops it.

SomeDiagram

data SomeDiagram a where Source #

some diagram.

Constructors

SomeDiagram :: forall (t :: DiagramType) (n :: N') (m :: N') a. Diagram t n m a -> SomeDiagram a 

Instances

Instances details
(HomOriented h, DualisableOriented s o) => ApplicativeG SomeDiagram (HomDisj s o h) (->) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

Methods

amapG :: HomDisj s o h x y -> SomeDiagram x -> SomeDiagram y Source #

(HomOriented h, DualisableOriented s o) => FunctorialG SomeDiagram (HomDisj s o h) (->) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

Oriented a => Show (SomeDiagram a) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

Oriented a => Eq (SomeDiagram a) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

Oriented a => Validable (SomeDiagram a) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

sdgMap :: forall (h :: Type -> Type -> Type) s (o :: Type -> Type) x y. (HomOriented h, DualisableOriented s o) => HomDisj s o h x y -> SomeDiagram x -> SomeDiagram y Source #

mapping of some diagram.

X

data XDiagram (t :: DiagramType) (n :: N') (m :: N') a where Source #

generator for random variables of diagrams.

Constructors

XDiagramEmpty :: forall a. XDiagram 'Empty 'N0 'N0 a 
XDiagramDiscrete :: forall (n :: N') a. Any n -> X (Point a) -> XDiagram 'Discrete n 'N0 a 
XDiagramChainTo :: forall (m :: N') a. Any m -> XOrtSite 'To a -> XDiagram ('Chain 'To) (m + 1) m a 
XDiagramChainFrom :: forall (m :: N') a. Any m -> XOrtSite 'From a -> XDiagram ('Chain 'From) (m + 1) m a 
XDiagramParallelLR :: forall (m :: N') a. Any m -> XOrtOrientation a -> XDiagram ('Parallel 'LeftToRight) ('S N1) m a 
XDiagramParallelRL :: forall (m :: N') a. Any m -> XOrtOrientation a -> XDiagram ('Parallel 'RightToLeft) ('S N1) m a 
XDiagramSink :: forall (m :: N') a. Any m -> XOrtSite 'To a -> XDiagram ('Star 'To) (m + 1) m a 
XDiagramSource :: forall (m :: N') a. Any m -> XOrtSite 'From a -> XDiagram ('Star 'From) (m + 1) m a 

Instances

Instances details
type Dual1 (XDiagram t n m :: Type -> Type) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

type Dual1 (XDiagram t n m :: Type -> Type) = XDiagram (Dual t) n m
type Dual (XDiagram t n m a :: Type) Source # 
Instance details

Defined in OAlg.Entity.Diagram.Definition

type Dual (XDiagram t n m a :: Type) = Dual1 (XDiagram t n m) (Op a)

xDiagram :: forall a (t :: DiagramType) (n :: N') (m :: N'). Oriented a => (Dual (Dual t) :~: t) -> XDiagram t n m a -> X (Diagram t n m a) Source #

the induced random variables of diagrams.

xDiagramChain :: forall x (m :: N') (n :: N') (t :: Site). (Oriented x, Attestable m, n ~ (m + 1)) => XOrtSite t x -> X (Diagram ('Chain t) n m x) Source #

random variable for Chains.

xSomeDiagram :: Oriented a => X SomeNatural -> XOrtSite 'To a -> XOrtSite 'From a -> XOrtOrientation a -> X (SomeDiagram a) Source #

the induced random variable of some diagrams.

dstSomeDiagram :: Oriented a => Int -> X (SomeDiagram a) -> IO () Source #

distribution of a random variable of some diagrams.

xSomeDiagramOrnt :: Entity p => X SomeNatural -> X p -> X (SomeDiagram (Orientation p)) Source #

random variable of some diagram of Orientation p.