-
Notifications
You must be signed in to change notification settings - Fork 269
Expand file tree
/
Copy pathModule.agda
More file actions
50 lines (37 loc) · 1.62 KB
/
Module.agda
File metadata and controls
50 lines (37 loc) · 1.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
------------------------------------------------------------------------
-- The Agda standard library
--
-- Definition of submodules
------------------------------------------------------------------------
{-# OPTIONS --cubical-compatible --safe #-}
open import Algebra.Bundles using (CommutativeRing)
open import Algebra.Module.Bundles using (Module; RawModule)
module Algebra.Module.Construct.Sub.Module {c ℓ cm ℓm} {R : CommutativeRing c ℓ} (M : Module R cm ℓm) where
private
module R = CommutativeRing R
module M = Module M
open import Algebra.Construct.Sub.Group M.+ᴹ-group
open import Algebra.Module.Structures using (IsModule)
open import Algebra.Module.Morphism.Structures using (IsModuleMonomorphism)
import Algebra.Module.Morphism.ModuleMonomorphism as ModuleMonomorphism
open import Level using (suc; _⊔_)
record Submodule cm′ ℓm′ : Set (c ⊔ cm ⊔ ℓm ⊔ suc (cm′ ⊔ ℓm′)) where
field
Sub : RawModule R.Carrier cm′ ℓm′
private
module Sub = RawModule Sub
field
ι : Sub.Carrierᴹ → M.Carrierᴹ
ι-monomorphism : IsModuleMonomorphism Sub M.rawModule ι
module ι = IsModuleMonomorphism ι-monomorphism
isModule : IsModule R Sub._≈ᴹ_ Sub._+ᴹ_ Sub.0ᴹ Sub.-ᴹ_ Sub._*ₗ_ Sub._*ᵣ_
isModule = ModuleMonomorphism.isModule ι-monomorphism R.isCommutativeRing M.isModule
⟨module⟩ : Module R _ _
⟨module⟩ = record { isModule = isModule }
open Module ⟨module⟩ public hiding (isModule)
subgroup : Subgroup cm′ ℓm′
subgroup = record
{ Sub = Sub.+ᴹ-rawGroup
; ι = ι
; ι-monomorphism = ι.+ᴹ-isGroupMonomorphism
}