Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,10 @@ Deprecated names
New modules
-----------

* `Algebra.Construct.Sub.Group` for the definition of subgroups.

* `Algebra.Module.Construct.Sub.Bimodule` for the definition of subbimodules.

* `Algebra.Properties.BooleanRing`.

* `Algebra.Properties.BooleanSemiring`.
Expand Down
40 changes: 40 additions & 0 deletions src/Algebra/Construct/Sub/Group.agda
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
------------------------------------------------------------------------
-- The Agda standard library
--
-- Definition of subgroups
------------------------------------------------------------------------

{-# OPTIONS --safe --cubical-compatible #-}

open import Algebra.Bundles using (Group; RawGroup)

module Algebra.Construct.Sub.Group {c ℓ} (G : Group c ℓ) where

private
module G = Group G

open import Algebra.Structures using (IsGroup)
open import Algebra.Morphism.Structures using (IsGroupMonomorphism)
import Algebra.Morphism.GroupMonomorphism as GroupMonomorphism
open import Level using (suc; _⊔_)

record Subgroup c′ ℓ′ : Set (c ⊔ ℓ ⊔ suc (c′ ⊔ ℓ′)) where
field
domain : RawGroup c′ ℓ′

private
module H = RawGroup domain

field
ι : H.Carrier → G.Carrier
ι-monomorphism : IsGroupMonomorphism domain G.rawGroup ι

module ι = IsGroupMonomorphism ι-monomorphism

isGroup : IsGroup H._≈_ H._∙_ H.ε H._⁻¹
isGroup = GroupMonomorphism.isGroup ι-monomorphism G.isGroup

group : Group _ _
group = record { isGroup = isGroup }

open Group group public hiding (isGroup)
47 changes: 47 additions & 0 deletions src/Algebra/Module/Construct/Sub/Bimodule.agda
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
------------------------------------------------------------------------
-- The Agda standard library
--
-- Definition of submodules
------------------------------------------------------------------------

{-# OPTIONS --cubical-compatible --safe #-}

open import Algebra.Bundles using (Ring)
open import Algebra.Module.Bundles using (Bimodule; RawBimodule)

module Algebra.Module.Construct.Sub.Bimodule {cr ℓr cs ℓs cm ℓm} {R : Ring cr ℓr} {S : Ring cs ℓs} (M : Bimodule R S cm ℓm) where

private
module R = Ring R
module S = Ring S
module M = Bimodule M

open import Algebra.Construct.Sub.Group M.+ᴹ-group
open import Algebra.Module.Structures using (IsBimodule)
open import Algebra.Module.Morphism.Structures using (IsBimoduleMonomorphism)
import Algebra.Module.Morphism.BimoduleMonomorphism as BimoduleMonomorphism
open import Level using (suc; _⊔_)

record Subbimodule cm′ ℓm′ : Set (cr ⊔ cs ⊔ cm ⊔ ℓm ⊔ suc (cm′ ⊔ ℓm′)) where
field
domain : RawBimodule R.Carrier S.Carrier cm′ ℓm′

private
module N = RawBimodule domain

field
ι : N.Carrierᴹ → M.Carrierᴹ
ι-monomorphism : IsBimoduleMonomorphism domain M.rawBimodule ι

module ι = IsBimoduleMonomorphism ι-monomorphism

isBimodule : IsBimodule R S N._≈ᴹ_ N._+ᴹ_ N.0ᴹ N.-ᴹ_ N._*ₗ_ N._*ᵣ_
isBimodule = BimoduleMonomorphism.isBimodule ι-monomorphism R.isRing S.isRing M.isBimodule

bimodule : Bimodule R S _ _
bimodule = record { isBimodule = isBimodule }

open Bimodule bimodule public hiding (isBimodule)

subgroup : Subgroup cm′ ℓm′
subgroup = record { ι-monomorphism = ι.+ᴹ-isGroupMonomorphism }