chain complexes of modules
This commit is contained in:
parent
153c8499af
commit
41bc4b6673
1 changed files with 57 additions and 0 deletions
57
algebra/module_chain_complex.hlean
Normal file
57
algebra/module_chain_complex.hlean
Normal file
|
@ -0,0 +1,57 @@
|
|||
/-
|
||||
Author: Jeremy Avigad
|
||||
-/
|
||||
import homotopy.chain_complex ..algebra.module ..algebra.is_short_exact ..move_to_lib
|
||||
open eq pointed sigma fiber equiv is_equiv sigma.ops is_trunc nat trunc
|
||||
open algebra function
|
||||
open chain_complex
|
||||
open succ_str
|
||||
open algebra.left_module
|
||||
|
||||
structure module_chain_complex (R : Ring) (N : succ_str) : Type :=
|
||||
(mod : N → LeftModule R)
|
||||
(hom : Π (n : N), left_module.homomorphism (mod (S n)) (mod n))
|
||||
(is_chain_complex :
|
||||
Π (n : N) (x : mod (S (S n))), hom n (hom (S n) x) = 0)
|
||||
|
||||
namespace module_chain_complex
|
||||
variables {R : Ring} {N : succ_str}
|
||||
|
||||
definition mcc_mod [unfold 2] [coercion] (C : module_chain_complex R N) (n : N) :
|
||||
LeftModule R :=
|
||||
module_chain_complex.mod C n
|
||||
|
||||
definition mcc_carr [unfold 2] [coercion] (C : module_chain_complex R N) (n : N) :
|
||||
Type :=
|
||||
C n
|
||||
|
||||
definition mcc_pcarr [unfold 2] [coercion] (C : module_chain_complex R N) (n : N) :
|
||||
Set* :=
|
||||
mcc_mod C n
|
||||
|
||||
definition mcc_hom (C : module_chain_complex R N) {n : N} : C (S n) →lm C n :=
|
||||
module_chain_complex.hom C n
|
||||
|
||||
definition mcc_is_chain_complex (C : module_chain_complex R N) (n : N) (x : C (S (S n))) :
|
||||
mcc_hom C (mcc_hom C x) = 0 :=
|
||||
module_chain_complex.is_chain_complex C n x
|
||||
|
||||
protected definition to_chain_complex [coercion] (C : module_chain_complex R N) :
|
||||
chain_complex N :=
|
||||
chain_complex.mk
|
||||
(λ n, mcc_pcarr C n)
|
||||
(λ n, pmap_of_homomorphism (@mcc_hom R N C n))
|
||||
(mcc_is_chain_complex C)
|
||||
|
||||
-- maybe we don't even need this?
|
||||
definition is_exact_at_m (C : module_chain_complex R N) (n : N) : Type :=
|
||||
is_exact_at C n
|
||||
end module_chain_complex
|
||||
|
||||
namespace left_module
|
||||
variable {R : Ring}
|
||||
variables {A₀ B₀ C₀ : LeftModule R}
|
||||
variables (f₀ : A₀ →lm B₀) (g₀ : B₀ →lm C₀)
|
||||
|
||||
definition is_short_exact := @_root_.is_short_exact _ _ C₀ f₀ g₀
|
||||
end left_module
|
Loading…
Reference in a new issue