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.Category.Dualisable

Description

generalized duality for categories.

Synopsis

Dualisable

class (ReflexiveG r c o d, Transformable1 o r) => DualisableG r (c :: Type -> Type -> Type) (o :: Type -> Type) (d :: Type -> Type) where Source #

category c equipped with a duality via a reflection.

Property Let DualisableG r c o d, then for all x and r in Struct r x holds:

  1. toDualG' q r' . toDualG' q r .=. u.
  2. toDualG' q r . v .=. v' . toDualG' q r''.
  3. fromDualG' q r .=. v . toDualG' q r'.

where q is any proxy in q c o d, r' = tau1 r , r'' = tau1 r', Inv2 u v = reflG' q r and Inv2 _ v' = reflG' q r'.

Note The properties above imply that toDualG r and fromDualG r are inverse in c for all x and r in Struct r x and hence establish a duality within r structured types.

Minimal complete definition

toDualG

Methods

toDualG :: Struct r x -> c (d x) (d (o x)) Source #

fromDualG :: Struct r x -> c (d (o x)) (d x) Source #

Instances

Instances details
DualisableG OrtX EqualExtOrt Op Id Source # 
Instance details

Defined in OAlg.Category.Dualisable

Methods

toDualG :: Struct OrtX x -> EqualExtOrt (Id x) (Id (Op x)) Source #

fromDualG :: Struct OrtX x -> EqualExtOrt (Id (Op x)) (Id x) Source #

DualisableG OrtX EqualExtOrt Op Pnt Source # 
Instance details

Defined in OAlg.Category.Dualisable

Methods

toDualG :: Struct OrtX x -> EqualExtOrt (Pnt x) (Pnt (Op x)) Source #

fromDualG :: Struct OrtX x -> EqualExtOrt (Pnt (Op x)) (Pnt x) Source #

(Transformable r Type, TransformableOp r) => DualisableG r (->) Op Id Source # 
Instance details

Defined in OAlg.Category.Dualisable

Methods

toDualG :: Struct r x -> Id x -> Id (Op x) Source #

fromDualG :: Struct r x -> Id (Op x) -> Id x Source #

(Transformable r Type, TransformableOp r, Transformable r FbrOrt) => DualisableG r (->) Op Rt Source # 
Instance details

Defined in OAlg.Category.Dualisable

Methods

toDualG :: Struct r x -> Rt x -> Rt (Op x) Source #

fromDualG :: Struct r x -> Rt (Op x) -> Rt x Source #

(Transformable r Type, TransformableOp r) => DualisableG r (->) Op Pnt Source # 
Instance details

Defined in OAlg.Category.Dualisable

Methods

toDualG :: Struct r x -> Pnt x -> Pnt (Op x) Source #

fromDualG :: Struct r x -> Pnt (Op x) -> Pnt x Source #

data DualityG r (c :: Type -> Type -> Type) (o :: Type -> Type) (d :: Type -> Type) where Source #

attest of being DualisableG.

Constructors

DualityG :: forall r (c :: Type -> Type -> Type) (o :: Type -> Type) (d :: Type -> Type). DualisableG r c o d => DualityG r c o d 

class DualisableG r (->) o Id => DualisableGId r (o :: Type -> Type) Source #

helper class to avoid undecidable instances.

Instances

Instances details
(TransformableType r, TransformableOp r) => DualisableGId r Op Source # 
Instance details

Defined in OAlg.Category.Dualisable

class DualisableG r (->) o Pnt => DualisableGPnt r (o :: Type -> Type) Source #

helper class to avoid undecidable instances.

Instances

Instances details
(TransformableType r, TransformableOp r) => DualisableGPnt r Op Source # 
Instance details

Defined in OAlg.Category.Dualisable

class (Category c, Transformable r (ObjectClass c)) => ReflexiveG r (c :: Type -> Type -> Type) (o :: Type -> Type) (d :: Type -> Type) where Source #

category c equipped with a reflection on a subset of ObjectClass c given by r.

Methods

reflG :: Struct r x -> Inv2 c (d x) (d (o (o x))) Source #

Instances

Instances details
ReflexiveG OrtX EqualExtOrt Op Id Source # 
Instance details

Defined in OAlg.Category.Dualisable

Methods

reflG :: Struct OrtX x -> Inv2 EqualExtOrt (Id x) (Id (Op (Op x))) Source #

ReflexiveG OrtX EqualExtOrt Op Pnt Source # 
Instance details

Defined in OAlg.Category.Dualisable

Methods

reflG :: Struct OrtX x -> Inv2 EqualExtOrt (Pnt x) (Pnt (Op (Op x))) Source #

Transformable r Type => ReflexiveG r (->) Op Id Source # 
Instance details

Defined in OAlg.Category.Dualisable

Methods

reflG :: Struct r x -> Inv2 (->) (Id x) (Id (Op (Op x))) Source #

Transformable r Type => ReflexiveG r (->) Op Rt Source # 
Instance details

Defined in OAlg.Category.Dualisable

Methods

reflG :: Struct r x -> Inv2 (->) (Rt x) (Rt (Op (Op x))) Source #

Transformable r Type => ReflexiveG r (->) Op Pnt Source # 
Instance details

Defined in OAlg.Category.Dualisable

Methods

reflG :: Struct r x -> Inv2 (->) (Pnt x) (Pnt (Op (Op x))) Source #

reflG' :: forall r (c :: Type -> Type -> Type) o d q x. ReflexiveG r c o d => q c o d -> Struct r x -> Inv2 c (d x) (d (o (o x))) Source #

prefixing a proxy.

toDualG' :: DualisableG r c o d => q c o d -> Struct r x -> c (d x) (d (o x)) Source #

prefixing a proxy.

tauO :: Transformable1 o s => Struct s x -> Struct s (o x) Source #

propagating the s structure to o.

Dualisable Pairing

class (ReflexiveG r c o a, ReflexiveG r c o b, Transformable1 o r) => DualisableGPair r (c :: Type -> Type -> Type) (o :: Type -> Type) (a :: Type -> Type) (b :: Type -> Type) where Source #

category c equipped with a duality pairing between a and b via reflections.

Minimal complete definition

toDualGLft, toDualGRgt

Methods

toDualGLft :: Struct r x -> c (a x) (b (o x)) Source #

toDualGRgt :: Struct r x -> c (b x) (a (o x)) Source #

fromDualGLft :: Struct r x -> c (b (o x)) (a x) Source #

fromDualGRgt :: Struct r x -> c (a (o x)) (b x) Source #

class DualisableGPair r c o d (Dual1 d) => DualisableGBi r (c :: Type -> Type -> Type) (o :: Type -> Type) (d :: Type -> Type) Source #

category c equipped with a duality pairing between d and its dual Dual1 d via reflections.

Proposition

prpDualisableG :: forall r (c :: Type -> Type -> Type) (o :: Type -> Type) (d :: Type -> Type) q x. (DualisableG r c o d, EqExt c) => q c o d -> Struct r x -> Statement Source #

validity according to DualisableG.