oalg-abg-1.0.0.0: Finitely generated abelian groups.
Copyright(c) Erich Gut
LicenseBSD3
Maintainerzerich.gut@gmail.com
Safe HaskellSafe-Inferred
LanguageHaskell2010

OAlg.AbelianGroup.ZMod

Description

Homomorphisms between cyclic groups.

A group is called cyclic if it is generated by one element. Such a group G is obviously abelian and isomorphic to Z/nZ for some n :: N, which is called its order. The group homomorphisms between cyclic groups form a Z-algebraic structure which is presented here.

Synopsis

Cyclic Group

newtype ZMod Source #

cyclic group Z/n, i.e. the quotient group of Z divided by nZ.

Constructors

ZMod N 

Instances

Instances details
Show ZMod Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

Methods

showsPrec :: Int -> ZMod -> ShowS #

show :: ZMod -> String #

showList :: [ZMod] -> ShowS #

Eq ZMod Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

Methods

(==) :: ZMod -> ZMod -> Bool #

(/=) :: ZMod -> ZMod -> Bool #

Ord ZMod Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

Methods

compare :: ZMod -> ZMod -> Ordering #

(<) :: ZMod -> ZMod -> Bool #

(<=) :: ZMod -> ZMod -> Bool #

(>) :: ZMod -> ZMod -> Bool #

(>=) :: ZMod -> ZMod -> Bool #

max :: ZMod -> ZMod -> ZMod #

min :: ZMod -> ZMod -> ZMod #

Validable ZMod Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

Methods

valid :: ZMod -> Statement #

XStandard ZMod Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

Methods

xStandard :: X ZMod #

Entity ZMod Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

zmOrd :: ZMod -> N Source #

order of the cyclic group.

Homomorphism

data ZModHom Source #

additive homomorphisms between cyclic groups ZMod constructable via zmh.

Note The homomorphisms between two cyclic groups a and b form again a cyclic group which will be denoted by ZModHom (a:>b) (see zmhGenOrd).

Instances

Instances details
Show ZModHom Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

Eq ZModHom Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

Methods

(==) :: ZModHom -> ZModHom -> Bool #

(/=) :: ZModHom -> ZModHom -> Bool #

Ord ZModHom Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

Validable ZModHom Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

Methods

valid :: ZModHom -> Statement #

Entity ZModHom Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

Abelian ZModHom Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

Additive ZModHom Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

Algebraic ZModHom Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

Distributive ZModHom Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

Fibred ZModHom Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

Associated Types

type Root ZModHom #

Methods

root :: ZModHom -> Root ZModHom #

FibredOriented ZModHom Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

Commutative ZModHom Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

Invertible ZModHom Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

Multiplicative ZModHom Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

Oriented ZModHom Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

Associated Types

type Point ZModHom #

Vectorial ZModHom Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

Associated Types

type Scalar ZModHom #

Methods

(!) :: Scalar ZModHom -> ZModHom -> ZModHom #

XStandardOrtSite 'From ZModHom Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

XStandardOrtSite 'To ZModHom Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

type Root ZModHom Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

type Point ZModHom Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

type Scalar ZModHom Source # 
Instance details

Defined in OAlg.AbelianGroup.ZMod

toZ :: ZModHom -> Z Source #

the underlying integer.

fromZ :: Z -> ZModHom Source #

the endomorphism in ZMod 0 given by the integer, i.e. the inverse of toZ.

zmh :: Orientation ZMod -> Z -> ZModHom Source #

the induced homomorphism.

Property Let a, b be in ZMod and r in Z then holds:

  1. zmh a b r is valid if and only if zmhEligible a b r is true.
  2. If zmhEligible a b r is false then the evaluation of zmh a b r will end up by throwing a NotEligible-exception.

zmhEligible :: ZMod -> ZMod -> Z -> Bool Source #

predicate to determine the eligibility of a value in Z to induce a homomorphism between the given cyclic groups.

Property Let a = ZMod a', b = ZMod b' be in ZMod and r in Z, then holds: zmhEligible a b r is true if and only if mod0 (r * inj a') b' == 0.

zmhGenOrd :: Orientation ZMod -> (ZModHom, N) Source #

zmhGenOrd (a:>b) = (r,o) where r is a generator for ZModHom(a:>b) with order o.

Note It follows that inj o ! r == zero (a:>b) and ZModHom(a:>b) is isomorphic to Z/o which is represented by ZMod o.

zmhGenerator :: Orientation ZMod -> ZModHom Source #

zmhGenerator (a:>b) = h is a generator for the abelian group ZModHom(a:>b).

X

Since the algebraic structure of ZModHom is not balanced - which means that between any two cyclic groups there may be no nontrivial homomorphisms - it is appropriate to work with XOrtSite instead of XOrtOrientation for random variables with values in ZModHom.

xZModHom :: X Z -> Orientation ZMod -> X ZModHom Source #

random variable for homomorphisms for the given orientation of ZMod.

xZModHomTo :: N -> X Z -> X ZMod -> XOrtSite To ZModHom Source #

random variable for homomorphisms based on xZModTo.

xZModHomFrom :: N -> X Z -> X ZMod -> XOrtSite From ZModHom Source #

random variable for homomorphisms based on xZModFrom.

xZModTo :: N -> ZMod -> X ZMod Source #

random variable of cyclic groups admitting nontrivial homomorphisms to the given group.

xZModFrom :: N -> ZMod -> X ZMod Source #

random variable of cyclic groups admitting non trivial homomorphisms from the given one.

Proposition

prpZModHom :: Statement Source #

validity of the Z-algebraic structure of ZModHom.

Exception

data ZModException Source #

exceptions for cyclic groups which are sub exceptions from SomeOAlgException.

Constructors

NotEligible String