All proofs
Project-declaredLean 4.33.0-rc1 · mathlib@6c5a9081e9b7

Group Cohomology trivial Cohomology of even of odd

groupCohomology.trivialCohomology_of_even_of_odd

Project documentation

If H²ⁿ⁺²(H,M) and H²ᵐ⁺¹(H,M) are both zero for every subgroup H of G then M is acyclic. -/ theorem groupCohomology.trivialCohomology_of_even_of_odd_of_solvable [Finite G] [Group.IsSolvable G] (M : Rep R G) (n m : ℕ) -- todo: don't quantify over all types (h_even : ∀ (H : Type) [Group H] {φ : H →* G} (_ : Function.Injective φ), IsZero (groupCohom...

Exact Lean statement

theorem groupCohomology.trivialCohomology_of_even_of_odd [Finite G]
    (M : Rep R G) (n m : ℕ)
    -- todo: don't quantify over all types
    (h_even : ∀ (H : Type) [Group H] {φ : H →* G} (_ : Function.Injective φ),
      IsZero (groupCohomology (M ↓ φ) (2 * n + 2)))
    (h_odd : ∀ (H : Type) [Group H] {φ : H →* G} (_ : Function.Injective φ),
      IsZero (groupCohomology (M ↓ φ) (2 * m + 1))) :
    M.TrivialCohomology

Formal artifact

Lean source

Canonical source
Full Lean sourceLean 4
theorem groupCohomology.trivialCohomology_of_even_of_odd [Finite G]    (M : Rep R G) (n m : )    -- todo: don't quantify over all types    (h_even :  (H : Type) [Group H] {φ : H →* G} (_ : Function.Injective φ),      IsZero (groupCohomology (M ↓ φ) (2 * n + 2)))    (h_odd :  (H : Type) [Group H] {φ : H →* G} (_ : Function.Injective φ),      IsZero (groupCohomology (M ↓ φ) (2 * m + 1))) :    M.TrivialCohomology := by  constructor  -- let `S` be a subgroup of `G`  intro S u  refine @ModuleCat.isZero_of_subsingleton R _ _    (@Unique.instSubsingleton _ ⟨⟨0, fun x => (?_ : x = 0))  -- `Hᵘ⁺¹(S, M)` is torsion  have hx : Nat.card S • x = 0 := by    classical    have : Fintype S := Fintype.ofFinite S    apply torsion_of_finite_of_neZero  -- it suffices to show that for every prime `p`, it has no `p^∞` torsion  have hk : 0 < Nat.card S := Nat.card_pos  generalize Nat.card S = k at hx hk  induction k using Nat.recOnPrimePow with  | zero => simp at hk  | one => simpa using hx  | prime_pow_mul a p c hp ha hc ih =>    refine ih ?_ (Nat.pos_of_mul_pos_left hk)    -- let `v` be an arbitrary Sylow-`p` subgroup of `S`    obtain v : Nonempty (Sylow p S) := inferInstance    rw [mul_smul] at hx    -- the `p^∞` torsion injects into `Hᵘ⁺¹(v,M)`, so it suffices that `Hᵘ⁺¹(v,M)` is trivial    haveI : Fact p.Prime := hp    apply (groupCohomology_Sylow (Nat.add_one_pos u) (M ↓ S.subtype) (a • x) p v c, hx).mtr    -- `Hᵘ⁺¹(v,M)` is trivial if `M` has trivial cohomology    refine @Subsingleton.eq_zero _ _ (ModuleCat.subsingleton_of_isZero      (@isZero_of_trivialCohomology R v _ _ _ ?_ (u + 1) _)) _    -- `v` is a `p`-group, so it is solvable    have : Fact p.Prime := hp    have : Group.IsNilpotent v := v.isPGroup'.isNilpotent -- todo: make this an instance?    have : Fintype v := Fintype.ofFinite v    classical    -- therefore `M` has trivial cohomology if it has an even and an odd trivial cohomology    apply trivialCohomology_of_even_of_odd_of_solvable (M ↓ S.subtypev.toSubgroup.subtype) n m    · -- the even trivial cohomology for `G` lifts to `v`      intro H  _ φ hφ      refine .of_iso (h_even H (φ := (S.subtype.comp v.toSubgroup.subtype).comp φ)        ((S.subtype_injective.comp v.toSubgroup.subtype_injective).comp hφ)) ?_      apply (functor R H (2 * n + 2)).mapIso      exact (Rep.resComp (R := R) (S.subtype.comp v.toSubgroup.subtype) φ).trans        (NatIso.hcomp (Rep.resComp _ _) (Iso.refl _)) |>.symm.app M    · -- the odd trivial cohomology for `G` lifts to `v`      intro H  _ φ hφ      refine .of_iso (h_odd H (φ := (S.subtype.comp v.toSubgroup.subtype).comp φ)        ((S.subtype_injective.comp v.toSubgroup.subtype_injective).comp hφ)) ?_      apply (functor R H (2 * m + 1)).mapIso      exact (Rep.resComp (R := R) (S.subtype.comp v.toSubgroup.subtype) φ).trans        (NatIso.hcomp (Rep.resComp _ _) (Iso.refl _)) |>.symm.app M
Project
Class Field Theory
License
Apache-2.0
Commit
f18cd7fd1575
Source
ClassFieldTheory/Cohomology/TrivialityCriterion.lean:100-155

Reuse this declaration

Bring the exact result into your workflow

The import identifies the source module. Your project still needs the pinned package dependency shown on this page.

What this badge means

This completion status comes from the project or community source. It has not yet been represented here as an independent rebuild and axiom audit.

Continue in this project

Related declarations

Project-declaredLean 4.33.0-rc1

Exists of surjective

groupCohomology.exists_of_surjective

Plain-language statement

Given map f: M ⟶ N and q : ℕ, if H^{q+1}(M) ⟶ H^{q+1}(N) is surjective, then any z : Z^{q+1}(N) can be written as f(z') + d(y) for some z' : Z^{q+1}(M) and y : C^q(M). Note that d is spelled as toCocycles.

number theoryclass field theorylocal fields

Source project: Class Field Theory

Person-level attribution pending.

View proof record