{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE StandaloneKindSignatures #-}
{-# LANGUAGE ConstraintKinds #-}
module OAlg.Structure.Algebraic.Definition
(
Algebraic, Alg, TransformableAlg
, AlgebraicSemiring, AlgebraicRing, AlgebraicField
)
where
import OAlg.Prelude
import OAlg.Structure.Oriented
import OAlg.Structure.Multiplicative.Definition
import OAlg.Structure.Fibred.Definition
import OAlg.Structure.FibredOriented
import OAlg.Structure.Additive.Definition
import OAlg.Structure.Distributive.Definition
import OAlg.Structure.Vectorial.Definition
import OAlg.Structure.Ring.Definition
class (Distributive a, Vectorial a) => Algebraic a
instance Algebraic ()
instance Algebraic Int
instance Algebraic Integer
instance Algebraic N
instance Algebraic Z
instance Algebraic Q
instance Entity p => Algebraic (Orientation p)
instance Algebraic a => Algebraic (Op a)
class (Semiring r, Commutative r, Algebraic r, Scalar r ~ r) => AlgebraicSemiring r
instance AlgebraicSemiring Int
instance AlgebraicSemiring Integer
instance AlgebraicSemiring N
instance AlgebraicSemiring Z
instance AlgebraicSemiring Q
type AlgebraicRing r = (AlgebraicSemiring r, Ring r)
type AlgebraicField r = (AlgebraicSemiring r, Field r)
data Alg k
type instance Structure (Alg k) x = (Algebraic x, k ~ Scalar x)
instance Transformable (Alg k) Typ where tau :: forall x. Struct (Alg k) x -> Struct Typ x
tau Struct (Alg k) x
Struct = Struct Typ x
forall s x. Structure s x => Struct s x
Struct
instance Transformable (Alg k) Ent where tau :: forall x. Struct (Alg k) x -> Struct Ent x
tau Struct (Alg k) x
Struct = Struct Ent x
forall s x. Structure s x => Struct s x
Struct
instance Transformable (Alg k) Ort where tau :: forall x. Struct (Alg k) x -> Struct Ort x
tau Struct (Alg k) x
Struct = Struct Ort x
forall s x. Structure s x => Struct s x
Struct
instance Transformable (Alg k) Mlt where tau :: forall x. Struct (Alg k) x -> Struct Mlt x
tau Struct (Alg k) x
Struct = Struct Mlt x
forall s x. Structure s x => Struct s x
Struct
instance Transformable (Alg k) Fbr where tau :: forall x. Struct (Alg k) x -> Struct Fbr x
tau Struct (Alg k) x
Struct = Struct Fbr x
forall s x. Structure s x => Struct s x
Struct
instance Transformable (Alg k) FbrOrt where tau :: forall x. Struct (Alg k) x -> Struct FbrOrt x
tau Struct (Alg k) x
Struct = Struct FbrOrt x
forall s x. Structure s x => Struct s x
Struct
instance Transformable (Alg k) Add where tau :: forall x. Struct (Alg k) x -> Struct Add x
tau Struct (Alg k) x
Struct = Struct Add x
forall s x. Structure s x => Struct s x
Struct
instance Transformable (Alg k) Dst where tau :: forall x. Struct (Alg k) x -> Struct Dst x
tau Struct (Alg k) x
Struct = Struct Dst x
forall s x. Structure s x => Struct s x
Struct
instance Transformable (Alg k) (Vec k) where tau :: forall x. Struct (Alg k) x -> Struct (Vec k) x
tau Struct (Alg k) x
Struct = Struct (Vec k) x
forall s x. Structure s x => Struct s x
Struct
instance TransformableG Op (Alg k) (Alg k) where tauG :: forall x. Struct (Alg k) x -> Struct (Alg k) (Op x)
tauG Struct (Alg k) x
Struct = Struct (Alg k) (Op x)
forall s x. Structure s x => Struct s x
Struct
class ( TransformableDst (s k)
, TransformableVec k s
, Transformable (s k) (Alg k)
) => TransformableAlg k s
instance TransformableTyp (Alg k)
instance TransformableOrt (Alg k)
instance TransformableMlt (Alg k)
instance TransformableFbr (Alg k)
instance TransformableFbrOrt (Alg k)
instance TransformableAdd (Alg k)
instance TransformableDst (Alg k)
instance TransformableVec k Alg
instance TransformableAlg k Alg