The semigroups-actions package

[Tags: bsd3, library]

In mathematics, an action of a semigroup on a set is an operation that associates each element of the semigroup is with a transformation on the set.


[Skip to ReadMe]

Properties

Version0.1
Change logNone available
Dependenciesbase (>=2 && <5), containers (>=0.3 && <0.6), semigroups (==0.8.*) [details]
LicenseBSD3
CopyrightCopyright (C) 2012 Petr Pudlák
AuthorPetr Pudlák
MaintainerPetr Pudlák <petr.mvd@gmail.com>
Stabilityprovisional
CategoryAlgebra, Data, Data Structures, Math
Home pagehttp://github.com/ppetr/semigroups-actions/
Bug trackerhttp://github.com/ppetr/semigroups-actions/issues
Source repositoryhead: git clone git://github.com/ppetr/semigroups-actions.git
UploadedThu Dec 20 21:48:01 UTC 2012 by PetrPudlak
DistributionsNixOS:0.1
Downloads234 total (13 in last 30 days)
Votes
0 []
StatusDocs uploaded by user
Build status unknown [no reports yet]

Modules

[Index]

Flags

NameDescriptionDefault
base2Disabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainers' corner

For package maintainers and hackage trustees

Readme for semigroups-actions-0.1

semigroups-actions

In mathematics, an action of a semigroup on a set is an operation that associates each element of the semigroup is with a transformation on the set. See Wikipedia articles on semigroup action and group action.

This package complements and depends on semigroups.

It requires MultiParamTypeClasses extension.

Examples

Similarly to semigroups, semigroup (or monoid) actions arise almost everywhere (if you look for them).

Natural numbers acting on monoids

The multiplication monoid of natural numbers acts on any other monoid:

n `act` x = x <> ... <> x -- x appears n-times

So 0 `act` x == mempty, 3 `act` x == x <> x <> x etc. TODO efficiency

This is expressed by newtype Repeat and instance

instance (Monoid w, Whole n) => SemigroupAct (Product n) (Repeat w) where

Many different concepts can be expressed using such an action, including

Self-application

Any semigroup (or monoid) can be viewed as acting on itself. In this case, act simply becomes <>. This is expressed by the SelfAct type:

newtype SelfAct a = SelfAct a
instance Semigroup g => Semigroup (SelfAct g) where
    (SelfAct x) <> (SelfAct y) = SelfAct $ x <> y

Matrices acting on vectors

Matrices with multiplication can be viewed as a group acting on vectors.

Copyright

Copyright 2012, Petr Pudlák

Contact: petr.pudlak.name or through github.

License: BSD3