{-# OPTIONS --cubical-compatible --safe #-}
module Algebra.Module.Bundles.Raw where
open import Algebra.Bundles.Raw
open import Algebra.Core
open import Algebra.Module.Core
open import Level
open import Relation.Nullary.Negation.Core using (¬_)
open import Relation.Binary.Core using (Rel)
private
variable
r ℓr s ℓs : Level
record RawLeftSemimodule (R : Set r) m ℓm : Set (r ⊔ suc (m ⊔ ℓm)) where
infixr 7 _*ₗ_
infixl 6 _+ᴹ_
infix 4 _≈ᴹ_
field
Carrierᴹ : Set m
_≈ᴹ_ : Rel Carrierᴹ ℓm
_+ᴹ_ : Op₂ Carrierᴹ
_*ₗ_ : Opₗ R Carrierᴹ
0ᴹ : Carrierᴹ
+ᴹ-rawMonoid : RawMonoid m ℓm
+ᴹ-rawMonoid = record
{ _≈_ = _≈ᴹ_
; _∙_ = _+ᴹ_
; ε = 0ᴹ
}
open RawMonoid +ᴹ-rawMonoid public
using ()
renaming (rawMagma to +ᴹ-rawMagma; _≉_ to _≉ᴹ_)
record RawLeftModule (R : Set r) m ℓm : Set (r ⊔ suc (m ⊔ ℓm)) where
infix 8 -ᴹ_
infixr 7 _*ₗ_
infixl 6 _+ᴹ_
infix 4 _≈ᴹ_
field
Carrierᴹ : Set m
_≈ᴹ_ : Rel Carrierᴹ ℓm
_+ᴹ_ : Op₂ Carrierᴹ
_*ₗ_ : Opₗ R Carrierᴹ
0ᴹ : Carrierᴹ
-ᴹ_ : Op₁ Carrierᴹ
rawLeftSemimodule : RawLeftSemimodule R m ℓm
rawLeftSemimodule = record
{ _≈ᴹ_ = _≈ᴹ_
; _+ᴹ_ = _+ᴹ_
; _*ₗ_ = _*ₗ_
; 0ᴹ = 0ᴹ
}
open RawLeftSemimodule rawLeftSemimodule public
using (+ᴹ-rawMagma; +ᴹ-rawMonoid; _≉ᴹ_)
+ᴹ-rawGroup : RawGroup m ℓm
+ᴹ-rawGroup = record
{ _≈_ = _≈ᴹ_
; _∙_ = _+ᴹ_
; ε = 0ᴹ
; _⁻¹ = -ᴹ_
}
record RawRightSemimodule (R : Set r) m ℓm : Set (r ⊔ suc (m ⊔ ℓm)) where
infixl 7 _*ᵣ_
infixl 6 _+ᴹ_
infix 4 _≈ᴹ_
field
Carrierᴹ : Set m
_≈ᴹ_ : Rel Carrierᴹ ℓm
_+ᴹ_ : Op₂ Carrierᴹ
_*ᵣ_ : Opᵣ R Carrierᴹ
0ᴹ : Carrierᴹ
+ᴹ-rawMonoid : RawMonoid m ℓm
+ᴹ-rawMonoid = record
{ _≈_ = _≈ᴹ_
; _∙_ = _+ᴹ_
; ε = 0ᴹ
}
open RawMonoid +ᴹ-rawMonoid public
using ()
renaming (rawMagma to +ᴹ-rawMagma; _≉_ to _≉ᴹ_)
record RawRightModule (R : Set r) m ℓm : Set (r ⊔ suc (m ⊔ ℓm)) where
infix 8 -ᴹ_
infixl 7 _*ᵣ_
infixl 6 _+ᴹ_
infix 4 _≈ᴹ_
field
Carrierᴹ : Set m
_≈ᴹ_ : Rel Carrierᴹ ℓm
_+ᴹ_ : Op₂ Carrierᴹ
_*ᵣ_ : Opᵣ R Carrierᴹ
0ᴹ : Carrierᴹ
-ᴹ_ : Op₁ Carrierᴹ
rawRightSemimodule : RawRightSemimodule R m ℓm
rawRightSemimodule = record
{ _≈ᴹ_ = _≈ᴹ_
; _+ᴹ_ = _+ᴹ_
; _*ᵣ_ = _*ᵣ_
; 0ᴹ = 0ᴹ
}
open RawRightSemimodule rawRightSemimodule public
using (+ᴹ-rawMagma; +ᴹ-rawMonoid; _≉ᴹ_)
+ᴹ-rawGroup : RawGroup m ℓm
+ᴹ-rawGroup = record
{ _≈_ = _≈ᴹ_
; _∙_ = _+ᴹ_
; ε = 0ᴹ
; _⁻¹ = -ᴹ_
}
record RawBisemimodule (R : Set r) (S : Set s) m ℓm : Set (r ⊔ s ⊔ suc (m ⊔ ℓm)) where
infixr 7 _*ₗ_
infixl 7 _*ᵣ_
infixl 6 _+ᴹ_
infix 4 _≈ᴹ_
field
Carrierᴹ : Set m
_≈ᴹ_ : Rel Carrierᴹ ℓm
_+ᴹ_ : Op₂ Carrierᴹ
_*ₗ_ : Opₗ R Carrierᴹ
_*ᵣ_ : Opᵣ S Carrierᴹ
0ᴹ : Carrierᴹ
rawLeftSemimodule : RawLeftSemimodule R m ℓm
rawLeftSemimodule = record
{ _≈ᴹ_ = _≈ᴹ_
; _+ᴹ_ = _+ᴹ_
; _*ₗ_ = _*ₗ_
; 0ᴹ = 0ᴹ
}
rawRightSemimodule : RawRightSemimodule S m ℓm
rawRightSemimodule = record
{ _≈ᴹ_ = _≈ᴹ_
; _+ᴹ_ = _+ᴹ_
; _*ᵣ_ = _*ᵣ_
; 0ᴹ = 0ᴹ
}
open RawLeftSemimodule rawLeftSemimodule public
using (+ᴹ-rawMagma; +ᴹ-rawMonoid; _≉ᴹ_)
record RawBimodule (R : Set r) (S : Set s) m ℓm : Set (r ⊔ s ⊔ suc (m ⊔ ℓm)) where
infix 8 -ᴹ_
infixr 7 _*ₗ_
infixl 7 _*ᵣ_
infixl 6 _+ᴹ_
infix 4 _≈ᴹ_
field
Carrierᴹ : Set m
_≈ᴹ_ : Rel Carrierᴹ ℓm
_+ᴹ_ : Op₂ Carrierᴹ
_*ₗ_ : Opₗ R Carrierᴹ
_*ᵣ_ : Opᵣ S Carrierᴹ
0ᴹ : Carrierᴹ
-ᴹ_ : Op₁ Carrierᴹ
rawLeftModule : RawLeftModule R m ℓm
rawLeftModule = record
{ _≈ᴹ_ = _≈ᴹ_
; _+ᴹ_ = _+ᴹ_
; _*ₗ_ = _*ₗ_
; 0ᴹ = 0ᴹ
; -ᴹ_ = -ᴹ_
}
rawRightModule : RawRightModule S m ℓm
rawRightModule = record
{ _≈ᴹ_ = _≈ᴹ_
; _+ᴹ_ = _+ᴹ_
; _*ᵣ_ = _*ᵣ_
; 0ᴹ = 0ᴹ
; -ᴹ_ = -ᴹ_
}
rawBisemimodule : RawBisemimodule R S m ℓm
rawBisemimodule = record
{ _≈ᴹ_ = _≈ᴹ_
; _+ᴹ_ = _+ᴹ_
; _*ₗ_ = _*ₗ_
; _*ᵣ_ = _*ᵣ_
; 0ᴹ = 0ᴹ
}
open RawBisemimodule rawBisemimodule public
using (+ᴹ-rawMagma; +ᴹ-rawMonoid; rawLeftSemimodule; rawRightSemimodule; _≉ᴹ_)
open RawLeftModule rawLeftModule public
using (+ᴹ-rawGroup)
RawSemimodule : ∀ (R : Set r) m ℓm → Set (r ⊔ suc (m ⊔ ℓm))
RawSemimodule R = RawBisemimodule R R
module RawSemimodule {R : Set r} {m ℓm} (M : RawSemimodule R m ℓm) where
open RawBisemimodule M public
rawBisemimodule : RawBisemimodule R R m ℓm
rawBisemimodule = M
RawModule : ∀ (R : Set r) m ℓm → Set (r ⊔ suc(m ⊔ ℓm))
RawModule R = RawBimodule R R
module RawModule {R : Set r} {m ℓm} (M : RawModule R m ℓm) where
open RawBimodule M public
rawBimodule : RawBimodule R R m ℓm
rawBimodule = M
rawSemimodule : RawSemimodule R m ℓm
rawSemimodule = rawBisemimodule