2017-03-10 16:51:37 +00:00
|
|
|
|
/-
|
|
|
|
|
Author: Jeremy Avigad
|
|
|
|
|
-/
|
|
|
|
|
import .module_chain_complex
|
|
|
|
|
open eq pointed sigma fiber equiv is_equiv sigma.ops is_trunc nat trunc
|
|
|
|
|
open algebra function succ_str
|
2017-03-30 19:43:54 +00:00
|
|
|
|
open left_module
|
2017-03-10 16:51:37 +00:00
|
|
|
|
|
|
|
|
|
section short_five
|
|
|
|
|
variable {R : Ring}
|
|
|
|
|
variables {A₀ B₀ C₀ A₁ B₁ C₁ : LeftModule R}
|
|
|
|
|
variables {f₀ : A₀ →lm B₀} {g₀ : B₀ →lm C₀}
|
|
|
|
|
variables {f₁ : A₁ →lm B₁} {g₁ : B₁ →lm C₁}
|
|
|
|
|
variables {h : A₀ →lm A₁} {k : B₀ →lm B₁} {l : C₀ →lm C₁}
|
|
|
|
|
|
|
|
|
|
premise (short_exact₀ : is_short_exact f₀ g₀)
|
|
|
|
|
premise (short_exact₁ : is_short_exact f₁ g₁)
|
|
|
|
|
premise (hsquare₁ : hsquare f₀ f₁ h k)
|
|
|
|
|
premise (hsquare₂ : hsquare g₀ g₁ k l)
|
|
|
|
|
|
|
|
|
|
include short_exact₀ short_exact₁ hsquare₁ hsquare₂
|
|
|
|
|
|
2017-06-02 16:15:31 +00:00
|
|
|
|
open algebra.is_short_exact
|
2017-03-10 16:51:37 +00:00
|
|
|
|
|
|
|
|
|
lemma short_five_mono [embh : is_embedding h] [embl : is_embedding l] :
|
|
|
|
|
is_embedding k :=
|
|
|
|
|
have is_embedding f₁, from is_emb short_exact₁,
|
|
|
|
|
is_embedding_of_is_add_hom k
|
|
|
|
|
(take b, suppose k b = 0,
|
|
|
|
|
have l (g₀ b) = 0, by rewrite [hsquare₂, ▸*, this, respect_zero],
|
|
|
|
|
have g₀ b = 0, from eq_zero_of_eq_zero_of_is_embedding this,
|
|
|
|
|
image.elim (ker_in_im short_exact₀ _ this)
|
|
|
|
|
(take a,
|
|
|
|
|
suppose f₀ a = b,
|
|
|
|
|
have f₁ (h a) = 0, by rewrite [-hsquare₁, ▸*, this]; assumption,
|
|
|
|
|
have h a = 0, from eq_zero_of_eq_zero_of_is_embedding this,
|
|
|
|
|
have a = 0, from eq_zero_of_eq_zero_of_is_embedding this,
|
|
|
|
|
show b = 0, by rewrite [-`f₀ a = b`, this, respect_zero]))
|
|
|
|
|
|
|
|
|
|
lemma short_five_epi (surjh : is_surjective h) (surjl : is_surjective l) :
|
|
|
|
|
is_surjective k :=
|
|
|
|
|
have surjg₀ : is_surjective g₀, from is_surj short_exact₀,
|
|
|
|
|
take b₁ : B₁,
|
|
|
|
|
image.elim (surjl (g₁ b₁)) (
|
|
|
|
|
take c₀ : C₀,
|
|
|
|
|
assume lc₀ : l c₀ = g₁ b₁,
|
|
|
|
|
image.elim (surjg₀ c₀) (
|
|
|
|
|
take b₀ : B₀,
|
|
|
|
|
assume g₀b₀ : g₀ b₀ = c₀,
|
|
|
|
|
have g₁ (k b₀ - b₁) = 0, by rewrite [respect_sub, -hsquare₂, ▸*, g₀b₀, lc₀, sub_self],
|
|
|
|
|
image.elim (ker_in_im short_exact₁ _ this) (
|
|
|
|
|
take a₁ : A₁,
|
|
|
|
|
assume f₁a₁ : f₁ a₁ = k b₀ - b₁,
|
|
|
|
|
image.elim (surjh a₁) (
|
|
|
|
|
take a₀ : A₀,
|
|
|
|
|
assume ha₀ : h a₀ = a₁,
|
|
|
|
|
have k (f₀ a₀) = k b₀ - b₁, by rewrite [hsquare₁, ▸*, ha₀, f₁a₁],
|
|
|
|
|
have k (b₀ - f₀ a₀) = b₁, by rewrite [respect_sub, this, sub_sub_self],
|
2017-06-02 16:15:31 +00:00
|
|
|
|
image.mk _ this))))
|
2017-03-10 16:51:37 +00:00
|
|
|
|
end short_five
|
|
|
|
|
|
|
|
|
|
section short_exact
|
|
|
|
|
open module_chain_complex
|
|
|
|
|
variables {R : Ring} {N : succ_str}
|
|
|
|
|
|
|
|
|
|
record is_short_exact_at (C : module_chain_complex R N) (n : N) :=
|
|
|
|
|
(is_contr_0 : is_contr (C n))
|
|
|
|
|
(is_exact_at_1 : is_exact_at_m C n)
|
|
|
|
|
(is_exact_at_2 : is_exact_at_m C (S n))
|
|
|
|
|
(is_exact_at_3 : is_exact_at_m C (S (S n)))
|
|
|
|
|
(is_contr_4 : is_contr (C (S (S (S (S n))))))
|
|
|
|
|
|
|
|
|
|
/- TODO: show that this gives rise to a short exact sequence in the sense above -/
|
|
|
|
|
end short_exact
|
|
|
|
|
|
|
|
|
|
section short_five_redux
|
|
|
|
|
open module_chain_complex
|
|
|
|
|
variables {R : Ring} {N : succ_str}
|
|
|
|
|
|
|
|
|
|
/- TODO: restate short five in these terms -/
|
|
|
|
|
end short_five_redux
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/- TODO: state and prove strong_four, adapting the template below.
|
|
|
|
|
|
|
|
|
|
section strong_four
|
|
|
|
|
variables {R : Type} [ring R]
|
|
|
|
|
variables {A B C D A' B' C' D' : Type}
|
|
|
|
|
variables [left_module R A] [left_module R B] [left_module R C] [left_module R D]
|
|
|
|
|
variables [left_module R A'] [left_module R B'] [left_module R C'] [left_module R D']
|
|
|
|
|
|
|
|
|
|
variables (ρ : A → B) [is_module_hom R ρ]
|
|
|
|
|
variables (σ : B → C) [is_module_hom R σ]
|
|
|
|
|
variables (τ : C → D) [is_module_hom R τ]
|
|
|
|
|
variable (chainρσ : ∀ a, σ (ρ a) = 0)
|
|
|
|
|
variable (exactρσ : ∀ {b}, σ b = 0 → ∃ a, ρ a = b)
|
|
|
|
|
variable (chainστ : ∀ b, τ (σ b) = 0)
|
|
|
|
|
variable (exactστ : ∀ {c}, τ c = 0 → ∃ b, σ b = c)
|
|
|
|
|
|
|
|
|
|
variables (ρ' : A' → B') [is_module_hom R ρ']
|
|
|
|
|
variables (σ' : B' → C') [is_module_hom R σ']
|
|
|
|
|
variables (τ' : C' → D') [is_module_hom R τ']
|
|
|
|
|
variable (chainρ'σ' : ∀ a', σ' (ρ' a') = 0)
|
|
|
|
|
variable (exactρ'σ' : ∀ {b'}, σ' b' = 0 → ∃ a', ρ' a' = b')
|
|
|
|
|
variable (chainσ'τ' : ∀ b', τ' (σ' b') = 0)
|
|
|
|
|
variable (exactσ'τ' : ∀ {c'}, τ' c' = 0 → ∃ b', σ' b' = c')
|
|
|
|
|
|
|
|
|
|
variables (α : A → A') [is_module_hom R α]
|
|
|
|
|
variables (β : B → B') [is_module_hom R β]
|
|
|
|
|
variables (γ : C → C') [is_module_hom R γ]
|
|
|
|
|
variables (δ : D → D') [is_module_hom R δ]
|
|
|
|
|
|
|
|
|
|
variables (sq₁ : comm_square ρ ρ' α β)
|
|
|
|
|
variables (sq₂ : comm_square σ σ' β γ)
|
|
|
|
|
variables (sq₃ : comm_square τ τ' γ δ)
|
|
|
|
|
|
|
|
|
|
include sq₃ σ' sq₂ exactρ'σ' sq₁ chainρσ
|
|
|
|
|
|
|
|
|
|
theorem strong_four_a (epiα : is_surjective α) (monoδ : is_embedding δ) (c : C) (γc0 : γ c = 0) :
|
|
|
|
|
Σ b, (β b = 0 × σ b = c) :=
|
|
|
|
|
have δ (τ c) = 0, by rewrite [sq₃, γc0, hom_zero],
|
|
|
|
|
have τ c = 0, from eq_zero_of_eq_zero_of_is_embedding this,
|
|
|
|
|
obtain b (σbc : σ b = c), from exactστ this,
|
|
|
|
|
have σ' (β b) = 0, by rewrite [-sq₂, σbc, γc0],
|
|
|
|
|
obtain a' (ρ'a'βb : ρ' a' = β b), from exactρ'σ' this,
|
|
|
|
|
obtain a (αaa' : α a = a'), from epiα a',
|
|
|
|
|
exists.intro (b - ρ a)
|
|
|
|
|
(pair
|
|
|
|
|
(show β (b - ρ a) = 0, by rewrite [hom_sub, -ρ'a'βb, sq₁, αaa', sub_self])
|
|
|
|
|
(show σ (b - ρ a) = c, from calc
|
|
|
|
|
σ (b - ρ a) = σ b - σ (ρ a) : hom_sub _
|
|
|
|
|
... = σ b : by rewrite [chainρσ, sub_zero]
|
|
|
|
|
... = c : σbc))
|
|
|
|
|
|
|
|
|
|
end strong_four
|
|
|
|
|
-/
|