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.Slice.Sliced

Description

Oriented structures with a distinguished Point.

Synopsis

Sliced

class (Entity1 i, Singleton1 i, Oriented c) => Sliced (i :: Type -> Type) c where Source #

Slicing Oriented structures at a distinguished Point, given by the type of the index i.

Note The constraint Singleton1 i ensures that the distinguished point depends only on the type i c.

Methods

slicePoint :: i c -> Point c Source #

the distingueished point of the given index type i.

Instances

Instances details
Sliced i c => Sliced i (Op c) Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

Methods

slicePoint :: i (Op c) -> Point (Op c) Source #

Sliced (Proxy :: Type -> Type) OS Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

sliceIndex :: Sliced i x => q i x -> i x Source #

the slice index according to the proxy type.

Hom

Oriented

class (HomOrientedDisjunctive h, Transformable (ObjectClass h) (Sld i)) => HomSlicedOriented (i :: Type -> Type) (h :: Type -> Type -> Type) Source #

homomorphisms between Sliced structures, i.e homomorphisms between Oriented structures where pmap preserves the distinguished point.

Property Let HomSlicedOriented i h, then holds:

  1. For all x, y and h in h x y holds: pmap h px == py, where px = slicePoint $ sliceIndexDomain $ sldHom q h, py = slicePoint $ sliceIndexRange $ sldHom q h and q is any proxy in q i.

Instances

Instances details
(CategoryDisjunctive h, HomSlicedOriented i h) => HomSlicedOriented i (Inv2 h) Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

(TransformableOrt s, TransformableType s, TransformableOp s) => HomSlicedOriented i (Sub (s, Sld i) (HomDisjEmpty s Op)) Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

(TransformableOrt s, TransformableType s, TransformableOp s) => HomSlicedOriented i (Sub (s, Sld i) (IsoO s Op)) Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

(Transformable s Ort, TransformableOp (s, Sld i)) => HomSlicedOriented i (HomDisjEmpty (s, Sld i) Op) Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

Attestable k => HomSlicedOriented (Free k) (Sub (Dst, SldFr) (HomDisjEmpty Dst Op)) Source # 
Instance details

Defined in OAlg.Entity.Slice.Free

data Sld (i :: Type -> Type) Source #

type index for Sliced structures.

Instances

Instances details
TransformableG Op (Sld i) (Sld i) Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

Methods

tauG :: Struct (Sld i) x -> Struct (Sld i) (Op x) Source #

(TransformableOrt s, TransformableType s, TransformableOp s) => HomSlicedOriented i (Sub (s, Sld i) (HomDisjEmpty s Op)) Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

(TransformableOrt s, TransformableType s, TransformableOp s) => HomSlicedOriented i (Sub (s, Sld i) (IsoO s Op)) Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

(Transformable s Ort, TransformableOp (s, Sld i)) => HomSlicedOriented i (HomDisjEmpty (s, Sld i) Op) Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

TransformableGRefl Op (Dst, Sld i) Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

TransformableGRefl Op (Mlt, Sld i) Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

TransformableGRefl Op (Ort, Sld i) Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

TransformableG Op (s, Sld i) (Sld i) Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

Methods

tauG :: Struct (s, Sld i) x -> Struct (Sld i) (Op x) Source #

TransformableAdd s => TransformableAdd (s, Sld i) Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

TransformableType (s, Sld i) Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

TransformableDst s => TransformableDst (s, Sld i) Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

TransformableFbr s => TransformableFbr (s, Sld i) Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

TransformableFbrOrt s => TransformableFbrOrt (s, Sld i) Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

TransformableMlt s => TransformableMlt (s, Sld i) Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

Transformable s Ort => TransformableOrt (s, Sld i) Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

TransformableOp (Dst, Sld i) Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

TransformableOp (Mlt, Sld i) Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

TransformableOp (Ort, Sld i) Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

Transformable s Add => Transformable (s, Sld i) Add Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

Methods

tau :: Struct (s, Sld i) x -> Struct Add x Source #

Transformable s Dst => Transformable (s, Sld i) Dst Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

Methods

tau :: Struct (s, Sld i) x -> Struct Dst x Source #

Transformable s Fbr => Transformable (s, Sld i) Fbr Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

Methods

tau :: Struct (s, Sld i) x -> Struct Fbr x Source #

Transformable s FbrOrt => Transformable (s, Sld i) FbrOrt Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

Methods

tau :: Struct (s, Sld i) x -> Struct FbrOrt x Source #

Transformable s Mlt => Transformable (s, Sld i) Mlt Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

Methods

tau :: Struct (s, Sld i) x -> Struct Mlt x Source #

Transformable s Ort => Transformable (s, Sld i) Ort Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

Methods

tau :: Struct (s, Sld i) x -> Struct Ort x Source #

Transformable (s, Sld i) Type Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

Methods

tau :: Struct (s, Sld i) x -> Struct Type x Source #

Attestable k => Transformable (s, SldFr) (Sld (Free k)) Source # 
Instance details

Defined in OAlg.Entity.Slice.Free

Methods

tau :: Struct (s, SldFr) x -> Struct (Sld (Free k)) x Source #

Transformable (s, Sld i) (Sld i) Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

Methods

tau :: Struct (s, Sld i) x -> Struct (Sld i) x Source #

Transformable (s, Sld i) s => TransformableObjectClass (s, Sld i) (HomDisjEmpty s Op) Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

type Structure (Sld i) x Source # 
Instance details

Defined in OAlg.Entity.Slice.Sliced

type Structure (Sld i) x = Sliced i x

sliceIndexDomain :: Homomorphous (Sld i) x y -> i x Source #

the slice index for the domain.

sliceIndexRange :: Homomorphous (Sld i) x y -> i y Source #

the slice index for the range.

sldHom :: forall (i :: Type -> Type) h q x y. HomSlicedOriented i h => q i -> h x y -> Homomorphous (Sld i) x y Source #

the induced homomorphous structure.

toDualOpOrtSld :: forall (i :: Type -> Type) x. Sliced i x => Variant2 'Contravariant (IsoO (Ort, Sld i) Op) x (Op x) Source #

contravariant isomorphism on Sliced Oriented structures.

toDualOpOrtSld' :: forall (i :: Type -> Type) x q. Sliced i x => q i -> Variant2 'Contravariant (IsoO (Ort, Sld i) Op) x (Op x) Source #

contravariant isomorphism on Sliced Oriented structures according to the proxy type.

Multiplicative

type HomSlicedMultiplicative (i :: Type -> Type) (h :: Type -> Type -> Type) = (HomSlicedOriented i h, HomMultiplicativeDisjunctive h) Source #

disjunctive multiplicative homomorphism respecting the slice structure.

toDualOpMltSld :: forall (i :: Type -> Type) x. (Sliced i x, Multiplicative x) => Variant2 'Contravariant (IsoO (Mlt, Sld i) Op) x (Op x) Source #

contravariant isomorphism on Sliced Multiplicative structures.

toDualOpMltSld' :: forall (i :: Type -> Type) x q. (Sliced i x, Multiplicative x) => q i -> Variant2 'Contravariant (IsoO (Mlt, Sld i) Op) x (Op x) Source #

contravariant isomorphism on Sliced Multiplicative structures according to the proxy type.

Distributive

type HomSlicedDistributive (i :: Type -> Type) (h :: Type -> Type -> Type) = (HomSlicedOriented i h, HomDistributiveDisjunctive h) Source #

disjunctive distributive homomorphism respecting the slice structure.

toDualOpDstSld :: forall (i :: Type -> Type) x. (Sliced i x, Distributive x) => Variant2 'Contravariant (IsoO (Dst, Sld i) Op) x (Op x) Source #

contravariant isomorphism on Sliced Distributive structures.

toDualOpDstSld' :: forall (i :: Type -> Type) x q. (Sliced i x, Distributive x) => q i -> Variant2 'Contravariant (IsoO (Dst, Sld i) Op) x (Op x) Source #

contravariant isomorphism on Sliced Distributive structures according to the proxy type.

Proposition

prpHomSlicedOriented :: forall (i :: Type -> Type) h q x y. (HomSlicedOriented i h, Show2 h) => q i -> h x y -> Statement Source #

validity according to HomSlicedOriented.