oalg-base-1.1.4.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 HaskellSafe-Inferred
LanguageHaskell2010

OAlg.Limes.Cone.Definition

Description

definition of Cones over Diagrams.

Synopsis

Cone

data Cone s p t n m a where Source #

cone over a diagram.

Properties Let c be in Cone s p t n m a then holds:

  1. If c matches ConeProjective d t cs for a Multiplicative structure a then holds:

    1. For all ci in cs holds: start ci == t and end ci == pi where pi in dgPoints d.
    2. For all aij in dgArrows d holds: aij * ci == cj where ci, cj in cs.
  2. If c matches ConeInjective d t cs for a Multiplicative structure a then holds:

    1. For all ci in cs holds: end ci == t and start ci == pi where pi in dgPoints d.
    2. For all aij in dgArrows d holds: cj * aij == ci where ci, cj in cs.
  3. If c matches ConeKernel p k for a Distributive structure a then holds:

    1. end k == p0 where p0 in dgPoints p
    2. For all a in dgArrows p holds: a * k == zero (t :> p1) where t = start k and p0, p1 in dgPoints p.
  4. If c matches ConeCokernel p k for a Distributive structure a then holds:

    1. start k == p0 where p0 in cnPoints c
    2. For all a in dgArrows p holds: k * a == zero (p1 :> t) where t = end k and p0, p1 in dgPoints p.

Instances

Instances details
HomDistributive h => Applicative1 h (Cone Dst p t n m) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

Methods

amap1 :: h a b -> Cone Dst p t n m a -> Cone Dst p t n m b Source #

HomMultiplicative h => Applicative1 h (Cone Mlt p t n m) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

Methods

amap1 :: h a b -> Cone Mlt p t n m a -> Cone Mlt p t n m b Source #

Show (Cone s p t n m a) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

Methods

showsPrec :: Int -> Cone s p t n m a -> ShowS #

show :: Cone s p t n m a -> String #

showList :: [Cone s p t n m a] -> ShowS #

Eq (Cone s p t n m a) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

Methods

(==) :: Cone s p t n m a -> Cone s p t n m a -> Bool #

(/=) :: Cone s p t n m a -> Cone s p t n m a -> Bool #

Validable (Cone s p t n m a) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

Methods

valid :: Cone s p t n m a -> Statement Source #

(Entity p, t ~ 'Parallel 'RightToLeft, n ~ N2, XStandard p, XStandard (Diagram t n m (Orientation p))) => XStandard (Cone Dst 'Injective t n m (Orientation p)) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

Methods

xStandard :: X (Cone Dst 'Injective t n m (Orientation p)) Source #

(Entity p, t ~ 'Parallel 'LeftToRight, n ~ N2, XStandard p, XStandard (Diagram t n m (Orientation p))) => XStandard (Cone Dst 'Projective t n m (Orientation p)) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

Methods

xStandard :: X (Cone Dst 'Projective t n m (Orientation p)) Source #

(Entity p, XStandard p, XStandard (Diagram t n m (Orientation p))) => XStandard (Cone Mlt 'Injective t n m (Orientation p)) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

Methods

xStandard :: X (Cone Mlt 'Injective t n m (Orientation p)) Source #

(Entity p, XStandard p, XStandard (Diagram t n m (Orientation p))) => XStandard (Cone Mlt 'Projective t n m (Orientation p)) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

Methods

xStandard :: X (Cone Mlt 'Projective t n m (Orientation p)) Source #

(Typeable s, Typeable p, Typeable t, Typeable n, Typeable m, Typeable a) => Entity (Cone s p t n m a) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

(Oriented a, Typeable s, Typeable p, Typeable d, Typeable m) => Oriented (Cone s p ('Parallel d) N2 m a) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

Associated Types

type Point (Cone s p ('Parallel d) N2 m a) Source #

Methods

orientation :: Cone s p ('Parallel d) N2 m a -> Orientation (Point (Cone s p ('Parallel d) N2 m a)) Source #

start :: Cone s p ('Parallel d) N2 m a -> Point (Cone s p ('Parallel d) N2 m a) Source #

end :: Cone s p ('Parallel d) N2 m a -> Point (Cone s p ('Parallel d) N2 m a) Source #

type Dual (Cone s p t n m a :: Type) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

type Dual (Cone s p t n m a :: Type) = Cone s (Dual p) (Dual t) n m (Op a)
type Point (Cone s p ('Parallel d) N2 m a) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

type Point (Cone s p ('Parallel d) N2 m a) = Point a

data Perspective Source #

concept of Projective and Injective.

Constructors

Projective 
Injective 

Instances

Instances details
Bounded Perspective Source # 
Instance details

Defined in OAlg.Limes.Perspective

Enum Perspective Source # 
Instance details

Defined in OAlg.Limes.Perspective

Show Perspective Source # 
Instance details

Defined in OAlg.Limes.Perspective

Eq Perspective Source # 
Instance details

Defined in OAlg.Limes.Perspective

Ord Perspective Source # 
Instance details

Defined in OAlg.Limes.Perspective

type Dual 'Injective Source # 
Instance details

Defined in OAlg.Limes.Perspective

type Dual 'Projective Source # 
Instance details

Defined in OAlg.Limes.Perspective

cnDiagram :: Cone s p t n m a -> Diagram t n m a Source #

the underlying diagram.

cnDiagramTypeRefl :: Cone s p t n m a -> Dual (Dual t) :~: t Source #

reflexivity of the underlying diagram type.

tip :: Cone s p t n m a -> Point a Source #

the tip of a cone.

Property Let c be in Cone s p t n m a for a Oriented structure then holds:

  1. If p is equal to Projective then holds: start ci == tip c for all ci in shell c.
  2. If p is equal to Injective then holds: end ci == tip c for all ci in shell c.

shell :: Cone s p t n m a -> FinList n a Source #

the shell of a cone.

Property Let c be in Cone s p t n m a for a Oriented structure then holds:

  1. If p is equal to Projective then holds: fmap end (shell c) == cnPoints c.
  2. If p is equal to Injective then holds: fmap start (shell c) == cnPoints c.

cnArrows :: Cone s p t n m a -> FinList m a Source #

the arrows of the underlying diagram, i.e. dgArrows . cnDiagram.

cnPoints :: Oriented a => Cone s p t n m a -> FinList n (Point a) Source #

the points of the underlying diagram, i.e. dgPoints . cnDiagram.

cnMap :: Hom s h => h a b -> Cone s p t n m a -> Cone s p t n m b Source #

mapping of a cone.

cnMapMlt :: Hom Mlt h => h a b -> Cone Mlt p t n m a -> Cone Mlt p t n m b Source #

mapping of a cone under a Multiplicative homomorphism.

cnMapDst :: Hom Dst h => h a b -> Cone Dst p t n m a -> Cone Dst p t n m b Source #

mapping of a cone under a Distributive homomorphism.

Distributive

cnZeroHead :: Cone Dst p t n m a -> ConeZeroHead Mlt p t n (m + 1) a Source #

embedding of a cone in a distributive structure to its multiplicative cone.

cnKernel :: (Distributive a, p ~ Projective, t ~ Parallel LeftToRight) => ConeZeroHead Mlt p t n (m + 1) a -> Cone Dst p t n m a Source #

the kernel cone of a zero headed parallel cone, i.e. the inverse of cnZeroHead.

cnCokernel :: (Distributive a, p ~ Injective, t ~ Parallel RightToLeft) => ConeZeroHead Mlt p t n (m + 1) a -> Cone Dst p t n m a Source #

the cokernel cone of a zero headed parallel cone, i.e. the inverse of cnZeroHead.

cnDiffHead :: (Distributive a, Abelian a) => Cone Mlt p (Parallel d) n (m + 1) a -> ConeZeroHead Mlt p (Parallel d) n (m + 1) a Source #

subtracts to every arrow of the underlying parallel diagram the first arrow and adapts the shell accordingly.

newtype ConeZeroHead s p t n m a Source #

predicate for cones where the first arrow of its underlying diagram is equal to zero.

Constructors

ConeZeroHead (Cone s p t n m a) 

Instances

Instances details
Show (ConeZeroHead s p t n m a) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

Methods

showsPrec :: Int -> ConeZeroHead s p t n m a -> ShowS #

show :: ConeZeroHead s p t n m a -> String #

showList :: [ConeZeroHead s p t n m a] -> ShowS #

Eq (ConeZeroHead s p t n m a) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

Methods

(==) :: ConeZeroHead s p t n m a -> ConeZeroHead s p t n m a -> Bool #

(/=) :: ConeZeroHead s p t n m a -> ConeZeroHead s p t n m a -> Bool #

Distributive a => Validable (ConeZeroHead s p d n ('S m) a) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

Methods

valid :: ConeZeroHead s p d n ('S m) a -> Statement Source #

(Distributive a, Typeable s, Typeable p, Typeable t, Typeable n, Typeable m) => Entity (ConeZeroHead s p t n ('S m) a) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

type Dual (ConeZeroHead s p t n m a :: TYPE LiftedRep) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

type Dual (ConeZeroHead s p t n m a :: TYPE LiftedRep) = ConeZeroHead s (Dual p) (Dual t) n m (Op a)

coConeZeroHead :: ConeZeroHead s p t n m a -> Dual (ConeZeroHead s p t n m a) Source #

to the dual, with its inverse coConeZeroHead.

czFromOpOp :: ConeStruct s a -> ConeZeroHead s p t n m (Op (Op a)) -> ConeZeroHead s p t n m a Source #

from the bidual.

coConeZeroHeadInv :: ConeStruct s a -> (Dual (Dual p) :~: p) -> (Dual (Dual t) :~: t) -> Dual (ConeZeroHead s p t n m a) -> ConeZeroHead s p t n m a Source #

from the dual, with its inverse coConeZeroHead.

Duality

cnToOp :: ConeDuality s f g a -> f a -> g (Op a) Source #

to g (Op a).

cnFromOp :: ConeDuality s f g a -> g (Op a) -> f a Source #

from g (Op a).

data ConeDuality s f g a where Source #

Op-duality between cone types.

Constructors

ConeDuality :: ConeStruct s a -> (f a :~: Cone s p t n m a) -> (g (Op a) :~: Dual (Cone s p t n m a)) -> (Dual (Dual p) :~: p) -> (Dual (Dual t) :~: t) -> ConeDuality s f g a 

coCone :: Cone s p t n m a -> Dual (Cone s p t n m a) Source #

to the dual cone, with its inverse coConeInv.

coConeInv :: ConeStruct s a -> (Dual (Dual p) :~: p) -> (Dual (Dual t) :~: t) -> Dual (Cone s p t n m a) -> Cone s p t n m a Source #

from the dual cone, with its inverse coCone.

cnFromOpOp :: ConeStruct s a -> Cone s p t n m (Op (Op a)) -> Cone s p t n m a Source #

from Op . Op.

Cone Struct

data ConeStruct s a where Source #

cone structures.

Instances

Instances details
Show (ConeStruct s a) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

Methods

showsPrec :: Int -> ConeStruct s a -> ShowS #

show :: ConeStruct s a -> String #

showList :: [ConeStruct s a] -> ShowS #

Eq (ConeStruct s a) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

Methods

(==) :: ConeStruct s a -> ConeStruct s a -> Bool #

(/=) :: ConeStruct s a -> ConeStruct s a -> Bool #

cnStructOp :: ConeStruct s a -> ConeStruct s (Op a) Source #

the opposite cone structure.

cnStructMlt :: ConeStruct s a -> Struct Mlt a Source #

the Multiplicative structure of a cone structure.

cnStruct :: ConeStruct s a -> Struct s a Source #

the associated structure of a cone structure.

Orientation

cnPrjOrnt :: Entity p => p -> Diagram t n m (Orientation p) -> Cone Mlt Projective t n m (Orientation p) Source #

the projective cone on Orientation with the underlying given diagram and tip with the given point.

cnInjOrnt :: Entity p => p -> Diagram t n m (Orientation p) -> Cone Mlt Injective t n m (Orientation p) Source #

the injective cone on Orientation with the underlying given diagram and tip with the given point.

Chain

cnPrjChainTo :: Multiplicative a => FactorChain To n a -> Cone Mlt Projective (Chain To) (n + 1) n a Source #

the induced Projective cone with ending factor given by the given FactorChain.

Property Let h = FactorChain f d be in FactorChain To n a for a Multiplicative structure a and ConeProjective d' _ (_:|..:|c:|Nil) = cnPrjChainTo h then holds: d' == d and c == f.

cnPrjChainToInv :: Cone Mlt Projective (Chain To) (n + 1) n a -> FactorChain To n a Source #

the underlying factor chain of a projective chain to cone, i.e the inverse of cnPrjChainToInv.

cnPrjChainFrom :: Multiplicative a => FactorChain From n a -> Cone Mlt Projective (Chain From) (n + 1) n a Source #

the induced Projective cone with starting factor given by the given FactorChain.

Property Let h = FactorChain f d be in FactorChain From n a for a Multiplicative structure a and ConeProjective d' _ (c:|_) = cnPrjChainFrom h then holds: d' == d and c == f.

cnPrjChainFromInv :: Cone Mlt Projective (Chain From) (n + 1) n a -> FactorChain From n a Source #

the underlying factor chain of a projective chain from cone, i.e. the inverse of cnPrjChainFrom.

data FactorChain s n a Source #

predicate for a factor with end point at the starting point of the given chain.

Property

  1. Let FactorChain f d be in FactorChain To n a for a Multiplicative structure a then holds: end f == chnToStart d.
  2. Let FactorChain f d be in FactorChain From n a for a Multiplicative structure a then holds: end f == chnFromStart d.

Constructors

FactorChain a (Diagram (Chain s) (n + 1) n a) 

Instances

Instances details
Oriented a => Show (FactorChain s n a) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

Methods

showsPrec :: Int -> FactorChain s n a -> ShowS #

show :: FactorChain s n a -> String #

showList :: [FactorChain s n a] -> ShowS #

Oriented a => Eq (FactorChain s n a) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

Methods

(==) :: FactorChain s n a -> FactorChain s n a -> Bool #

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

Oriented a => Validable (FactorChain 'From n a) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

Oriented a => Validable (FactorChain 'To n a) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

Methods

valid :: FactorChain 'To n a -> Statement Source #

(Multiplicative a, Typeable n) => Entity (FactorChain 'From n a) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition

(Multiplicative a, Typeable n) => Entity (FactorChain 'To n a) Source # 
Instance details

Defined in OAlg.Limes.Cone.Definition