Last active
April 24, 2018 12:30
-
-
Save jcommelin/d097eb8f2587d34e5c337450bca543db to your computer and use it in GitHub Desktop.
Proposed statement of the five lemma
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import tactic | |
import tactic.find | |
import init.function | |
import algebra.group | |
import group_theory.subgroup | |
open function | |
section five_lemma | |
universes u | |
variables {A B : Type u} [group A] [group B] | |
definition ker (f : A → B) [is_group_hom f] := is_group_hom.ker f | |
definition im (f : A → B) [is_group_hom f] := f '' (@set.univ A) | |
variables {A₁ B₁ C₁ D₁ E₁ : Type u} | |
variables {A₂ B₂ C₂ D₂ E₂ : Type u} | |
variables [group A₁] {f₁ : A₁ → B₁} [group B₁] {g₁ : B₁ → C₁} [group C₁] {h₁ : C₁ → D₁} [group D₁] {i₁ : D₁ → E₁} [group E₁] | |
variables {j : A₁ → A₂} {k : B₁ → B₂} {l : C₁ → C₂} {m : D₁ → D₂} {n : E₁ → E₂} | |
variables [group A₂] {f₂ : A₂ → B₂} [group B₂] {g₂ : B₂ → C₂} [group C₂] {h₂ : C₂ → D₂} [group D₂] {i₂ : D₂ → E₂} [group E₂] | |
variables [is_group_hom f₁] [is_group_hom g₁] [is_group_hom h₁] [is_group_hom i₁] | |
variables [is_group_hom f₂] [is_group_hom g₂] [is_group_hom h₂] [is_group_hom i₂] | |
variables [is_group_hom j] [is_group_hom k] [is_group_hom l] [is_group_hom m] [is_group_hom n] | |
lemma five_lemma | |
(com₁ : k ∘ f₁ = f₂ ∘ j) | |
(com₂ : l ∘ g₁ = g₂ ∘ k) | |
(com₃ : m ∘ h₁ = h₂ ∘ l) | |
(com₄ : n ∘ i₁ = i₂ ∘ m) | |
(eB₁ : im f₁ = ker g₁) | |
(eC₁ : im g₁ = ker h₁) | |
(eD₁ : im h₁ = ker i₁) | |
(eB₂ : im f₂ = ker g₂) | |
(eC₂ : im g₂ = ker h₂) | |
(eD₂ : im h₂ = ker i₂) | |
(hj : surjective j) | |
(hk : bijective k) | |
(hm : bijective m) | |
(hn : injective n) | |
: bijective l := | |
begin | |
have := is_group_hom.one f₁, | |
have := is_group_hom.one g₁, | |
have := is_group_hom.one h₁, | |
have := is_group_hom.one i₁, | |
have := is_group_hom.one f₂, | |
have := is_group_hom.one g₂, | |
have := is_group_hom.one h₂, | |
have := is_group_hom.one i₂, | |
have := is_group_hom.one j, | |
have := is_group_hom.one k, | |
have := is_group_hom.one l, | |
have := is_group_hom.one m, | |
have := is_group_hom.one n, | |
split, { | |
apply is_group_hom.inj_of_trivial_ker l, | |
apply set.ext, intro x, | |
split, { -- x ∈ ker n → x = 1 | |
intro hx, | |
rw is_group_hom.mem_ker at hx, | |
simp, | |
have : (h₂ ∘ l) x = 1, unfold comp, cc, | |
have : (m ∘ h₁) x = 1, cc, | |
have : m (h₁ x) = 1, apply_assumption, | |
have : h₁ x = 1, | |
have y : g₁ | |
}, { -- x = 1 → x ∈ ker | |
intro hx, | |
simp at hx, | |
rw is_group_hom.mem_ker, | |
have := is_group_hom.one l, | |
cc | |
} | |
}, { | |
} | |
end | |
end five_lemma |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Update: