noether-0.0.1: library/Noether/Algebra/Single/AbelianGroup.hs
module Noether.Algebra.Single.AbelianGroup where
import Noether.Lemmata.TypeFu
import Noether.Algebra.Single.Commutative
import Noether.Algebra.Single.Group
type family AbelianGroupS (op :: k) (a :: Type) = (r :: AbelianGroupE)
data AbelianGroupE
= AbelianGroup_Commutative_Group CommutativeE GroupE
| AbelianGroupNamed Symbol AbelianGroupE
class AbelianGroupK (op :: k) a (s :: AbelianGroupE)
instance (GroupK op a zm, CommutativeK op a zl) =>
AbelianGroupK op a (AbelianGroup_Commutative_Group zl zm)
instance (KnownSymbol sym, AbelianGroupK op a s) =>
AbelianGroupK op a (AbelianGroupNamed sym s)
type AbelianGroupC op a = AbelianGroupK op a (AbelianGroupS op a)