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.Hom.Multiplicative

Description

definition of homomorphisms between Multiplicative structures.

Synopsis

Disjunctive

class (HomOrientedDisjunctive h, Transformable (ObjectClass h) Mlt) => HomMultiplicativeDisjunctive (h :: Type -> Type -> Type) Source #

disjunctive family of homomorphisms between Multiplicative structures.

Propoerty Let HomMultiplicativeDisjunctive h, then for all a, b and h in h a b holds:

  1. If variant2 h == Covariant then holds:

    1. For all p in Point a holds: amap h (one p) == one (pmap h p).
    2. For all x, y in a with start x == end y holds: amap h (x * y) == amap h x * amap h y.
  2. If variant2 h == Contravariant then holds:

    1. For all p in Point a holds: amap h (one p) == one (pmap h p).
    2. For all x, y in a with start x == end y holds: amap h (x * y) == amap h y * amap h x.

toDualOpMlt :: Multiplicative x => Variant2 'Contravariant (IsoO Mlt Op) x (Op x) Source #

the canonical Contravariant isomorphism on Multiplicative structures between x and Op x.

homDisjOpMlt :: HomMultiplicative h => h x y -> Variant2 'Covariant (HomDisj Mlt Op h) x y Source #

embedding a multiplicative homomorphism into a covariant HomDisj Mlt Op.

Covariant

class (HomOriented h, Transformable (ObjectClass h) Mlt) => HomMultiplicative (h :: Type -> Type -> Type) Source #

covariant family of homomorphisms between Multiplicative structures.

Propoerty Let HomMultiplicative h, then for all a, b and h in h a b holds:

  1. For all p in Point a holds: amap h (one p) == one (pmap h p).
  2. For all x, y in a with start x == end y holds: amaph (x * y) == amap h x * amap h y.

Dualisable

class (DualisableOriented s o, Transformable s Mlt) => DualisableMultiplicative s (o :: Type -> Type) Source #

duality according to o on s-structured Multiplicative types,

Properties Let DualisableMultiplicative o s then for all x and s in Struct s x holds:

  1. For all p in Point x holds: toDualArw q s (one p) == one (toDualPnt q s p).
  2. For all x, y in x with start x == end y holds: toDualArw q s (x * y) == toDualArw q s y * toDualArw q s x.

where q is any proxy for o.

Instances

Instances details
(TransformableOrt s, TransformableMlt s, TransformableOp s, TransformableType s) => DualisableMultiplicative s Op Source # 
Instance details

Defined in OAlg.Hom.Multiplicative

X

data XHomMlt x Source #

random variable for testing multiplicative homomorphisms.

xMltHomMlt :: XMlt x -> XHomMlt x Source #

the underlying XHomMlt.

xosHomMlt :: forall x (d :: Site). Multiplicative x => XOrtSite d x -> XHomMlt x Source #

the XHomMlt given by a XOrtSite d

Proposition

prpHomDisjMultiplicative :: forall (h :: Type -> Type -> Type) s (o :: Type -> Type) x y. (HomMultiplicative h, DualisableMultiplicative s o) => Struct MltX x -> HomDisj s o h x y -> Statement Source #

validity according to HomMultiplicativeDisjunctive.

prpDualisableMultiplicativeOne :: forall s (o :: Type -> Type) q x. DualisableMultiplicative s o => q o -> Struct s x -> X (Point x) -> Statement Source #

validity according to DualisableMultiplicative, property 1.

prpDualisableMultiplicativeMlt :: forall s (o :: Type -> Type) q x. DualisableMultiplicative s o => q o -> Struct s x -> X (Mltp2 x) -> Statement Source #

validity according to DualisableMultiplicative, property 2.

relMapMltOne :: Struct Mlt x -> Struct Mlt y -> (x -> y) -> (Point x -> Point y) -> X (Point x) -> Statement Source #

validity that one maps to one according to the given mapplings.

relMapMltCov :: Struct Mlt x -> Struct Mlt y -> (x -> y) -> X (Mltp2 x) -> Statement Source #

validity of * as covariant operation according to the given mapping.

relMapMltCnt :: Struct Mlt x -> Struct Mlt y -> (x -> y) -> X (Mltp2 x) -> Statement Source #

validity of * as contravariant operation according to the given mapping.