Copyright | (c) 2020-2021 Emily Pillmore |
---|---|

License | BSD-style |

Maintainer | Emily Pillmore <emilypi@cohomolo.gy>, Reed Mullanix <reedmullanix@gmail.com> |

Stability | stable |

Portability | non-portable |

Safe Haskell | Safe |

Language | Haskell2010 |

This module contains definitions for `Cyclic`

groups,
along with the relevant combinators.

# Cyclic groups

`Cyclic`

is a `Group`

that is generated by a single element.
This element is called a *generator* of the group. There can be many
generators for a group, e.g., any representative of an equivalence
class of prime numbers of the integers modulo `n`

, but to make things
easy, we ask for only one generator.

class Group a => Cyclic a where #

A `Group`

G is `Cyclic`

if there exists an element x of G such that for all y in G, there exists an n, such that

y = pow x n

#### Instances

Cyclic () | |

Defined in Data.Group | |

Cyclic a => Cyclic (Identity a) | |

Defined in Data.Group | |

Integral a => Cyclic (Sum a) | |

Defined in Data.Group | |

Cyclic a => Cyclic (Down a) | |

Defined in Data.Group | |

Cyclic (Proxy x) | |

Defined in Data.Group | |

Cyclic a => Cyclic (Const a x) | |

Defined in Data.Group |