forked from agda/agda-stdlib
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathModuleMonomorphism.agda
More file actions
54 lines (42 loc) · 2.05 KB
/
ModuleMonomorphism.agda
File metadata and controls
54 lines (42 loc) · 2.05 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
51
52
53
54
------------------------------------------------------------------------
-- The Agda standard library
--
-- Consequences of a monomorphism between modules
------------------------------------------------------------------------
{-# OPTIONS --safe --cubical-compatible #-}
open import Algebra.Module.Bundles.Raw using (RawModule)
open import Algebra.Module.Morphism.Structures using (IsModuleMonomorphism)
module Algebra.Module.Morphism.ModuleMonomorphism
{r a b ℓ₁ ℓ₂} {R : Set r} {M : RawModule R a ℓ₁} {N : RawModule R b ℓ₂} {⟦_⟧}
(isModuleMonomorphism : IsModuleMonomorphism M N ⟦_⟧)
where
open IsModuleMonomorphism M N isModuleMonomorphism
private
module M = RawModule M
module N = RawModule N
open import Algebra.Bundles using (CommutativeRing)
open import Algebra.Core using (Op₂)
open import Algebra.Module.Structures using (IsModule)
open import Algebra.Structures using (IsCommutativeRing)
open import Relation.Binary.Core using (Rel)
------------------------------------------------------------------------
-- Re-exports
open import Algebra.Module.Morphism.BimoduleMonomorphism isBimoduleMonomorphism public
open import Algebra.Module.Morphism.SemimoduleMonomorphism isSemimoduleMonomorphism public
using (*ₗ-*ᵣ-coincident; isSemimodule)
------------------------------------------------------------------------
-- Structures
module _ {ℓr} {_≈_ : Rel R ℓr} {_+_ _*_ -_ 0# 1#} (R-isCommutativeRing : IsCommutativeRing _≈_ _+_ _*_ -_ 0# 1#) where
private
R-commutativeRing : CommutativeRing _ _
R-commutativeRing = record { isCommutativeRing = R-isCommutativeRing }
open IsCommutativeRing R-isCommutativeRing
isModule
: IsModule R-commutativeRing N._≈ᴹ_ N._+ᴹ_ N.0ᴹ N.-ᴹ_ N._*ₗ_ N._*ᵣ_
→ IsModule R-commutativeRing M._≈ᴹ_ M._+ᴹ_ M.0ᴹ M.-ᴹ_ M._*ₗ_ M._*ᵣ_
isModule isModule = record
{ isBimodule = isBimodule isRing isRing NN.isBimodule
; *ₗ-*ᵣ-coincident = *ₗ-*ᵣ-coincident NN.+ᴹ-isMagma NN.*ₗ-*ᵣ-coincident
}
where
module NN = IsModule isModule