Module

BinaryProduct.lean

Nyll.GaloisCohomology.Cyclic.Herbrand.HerbrandLowDegree.BinaryProduct
15 declarations indexed from sourceView source ↗

Low-degree Tate cohomology of binary products

This specializes the dependent-product calculation to two possibly different coefficient groups. It is used to join the unrestricted and integral parts of a supported idele group.

Declarations

CyclicCohomology.BinaryCoefficientFamily

The two-element dependent family associated with A × B.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open CyclicCohomology.ProfiniteCohomology.Herbrand
universe uG uA
variable {G : Type uG} [Group G] [Fintype G]
variable (A B : Type uA)
variable [CommGroup A] [CommGroup B]
variable [MulDistribMulAction G A] [MulDistribMulAction G B]
abbrev BinaryCoefficientFamily : Bool → Type uA
  | false => A
  | true => B
CyclicCohomology.binaryCoefficientFamilyCommGroup
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open CyclicCohomology.ProfiniteCohomology.Herbrand
universe uG uA
variable {G : Type uG} [Group G] [Fintype G]
variable (A B : Type uA)
variable [CommGroup A] [CommGroup B]
variable [MulDistribMulAction G A] [MulDistribMulAction G B]
instance binaryCoefficientFamilyCommGroup :
    ∀ i, CommGroup (BinaryCoefficientFamily A B i)
  | false => inferInstance
  | true => inferInstance
CyclicCohomology.binaryCoefficientFamilyAction

The componentwise G-action on the binary coefficient family.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open CyclicCohomology.ProfiniteCohomology.Herbrand
universe uG uA
variable {G : Type uG} [Group G] [Fintype G]
variable (A B : Type uA)
variable [CommGroup A] [CommGroup B]
variable [MulDistribMulAction G A] [MulDistribMulAction G B]
def binaryCoefficientFamilyAction :
    ∀ i, MulDistribMulAction G
      (BinaryCoefficientFamily A B i)
  | false => inferInstance
  | true => inferInstance
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open CyclicCohomology.ProfiniteCohomology.Herbrand
universe uG uA
variable {G : Type uG} [Group G] [Fintype G]
variable (A B : Type uA)
variable [CommGroup A] [CommGroup B]
variable [MulDistribMulAction G A] [MulDistribMulAction G B]
instance
    (i : Bool) :
    MulDistribMulAction G
      (BinaryCoefficientFamily A B i)
CyclicCohomology.prodEquivBinaryCoefficientFamily

Reindex a binary product as a dependent family over Bool.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open CyclicCohomology.ProfiniteCohomology.Herbrand
universe uG uA
variable {G : Type uG} [Group G] [Fintype G]
variable (A B : Type uA)
variable [CommGroup A] [CommGroup B]
variable [MulDistribMulAction G A] [MulDistribMulAction G B]
def prodEquivBinaryCoefficientFamily :
    A × B ≃* ∀ i, BinaryCoefficientFamily A B i where
  toFun x
    | false => x.1
    | true => x.2
  invFun x := ⟨x false, x true⟩
  left_inv _ := rfl
  right_inv x := by
    funext i
    cases i <;> rfl
  map_mul' _ _ := by
    funext i
    cases i <;> rfl
CyclicCohomology.prodEquivBinaryCoefficientFamily_smul

The binary reindexing is equivariant for the componentwise actions.

Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open CyclicCohomology.ProfiniteCohomology.Herbrand
universe uG uA
variable {G : Type uG} [Group G] [Fintype G]
variable (A B : Type uA)
variable [CommGroup A] [CommGroup B]
variable [MulDistribMulAction G A] [MulDistribMulAction G B]
omit [Fintype G] in
theorem prodEquivBinaryCoefficientFamily_smul
    (g : G) (x : A × B) :
    letI : ∀ i, MulDistribMulAction G
        (BinaryCoefficientFamily A B i) :=
      binaryCoefficientFamilyAction A B
    letI : MulDistribMulAction G
        (∀ i, BinaryCoefficientFamily A B i) :=
      piMulDistribMulAction G
        (BinaryCoefficientFamily A B)
    prodEquivBinaryCoefficientFamily A B (g • x) =
      g • prodEquivBinaryCoefficientFamily A B x := by
  funext i
  cases i <;> rfl
CyclicCohomology.piHerbrandH0EquivProd
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open CyclicCohomology.ProfiniteCohomology.Herbrand
universe uG uA
variable {G : Type uG} [Group G] [Fintype G]
variable (A B : Type uA)
variable [CommGroup A] [CommGroup B]
variable [MulDistribMulAction G A] [MulDistribMulAction G B]
def piHerbrandH0EquivProd :
    (∀ i, HerbrandH0 G
      (BinaryCoefficientFamily A B i)) ≃*
        HerbrandH0 G A × HerbrandH0 G B where
  toFun x := ⟨x false, x true⟩
  invFun x
    | false => x.1
    | true => x.2
  left_inv x := by
    funext i
    cases i <;> rfl
  right_inv _ := rfl
  map_mul' _ _ := rfl
CyclicCohomology.piHerbrandHMinusOneEquivProd
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open CyclicCohomology.ProfiniteCohomology.Herbrand
universe uG uA
variable {G : Type uG} [Group G] [Fintype G]
variable (A B : Type uA)
variable [CommGroup A] [CommGroup B]
variable [MulDistribMulAction G A] [MulDistribMulAction G B]
def piHerbrandHMinusOneEquivProd
    (σ : G) :
    (∀ i, HerbrandHMinusOne G
      (BinaryCoefficientFamily A B i) σ) ≃*
        HerbrandHMinusOne G A σ ×
          HerbrandHMinusOne G B σ where
  toFun x := ⟨x false, x true⟩
  invFun x
    | false => x.1
    | true => x.2
  left_inv x := by
    funext i
    cases i <;> rfl
  right_inv _ := rfl
  map_mul' _ _ := rfl
CyclicCohomology.herbrandH0ProdEquiv

Degree-zero Tate cohomology commutes with a binary product.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open CyclicCohomology.ProfiniteCohomology.Herbrand
universe uG uA
variable {G : Type uG} [Group G] [Fintype G]
variable (A B : Type uA)
variable [CommGroup A] [CommGroup B]
variable [MulDistribMulAction G A] [MulDistribMulAction G B]
def herbrandH0ProdEquiv :
    HerbrandH0 G (A × B) ≃*
      HerbrandH0 G A × HerbrandH0 G B
CyclicCohomology.herbrandHMinusOneProdEquiv

Degree-minus-one Tate cohomology commutes with a binary product.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open CyclicCohomology.ProfiniteCohomology.Herbrand
universe uG uA
variable {G : Type uG} [Group G] [Fintype G]
variable (A B : Type uA)
variable [CommGroup A] [CommGroup B]
variable [MulDistribMulAction G A] [MulDistribMulAction G B]
def herbrandHMinusOneProdEquiv
    (σ : G) :
    HerbrandHMinusOne G (A × B) σ ≃*
      HerbrandHMinusOne G A σ ×
        HerbrandHMinusOne G B σ
CyclicCohomology.herbrandH0ProdFinite

Finiteness of degree zero is preserved by a binary product.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open CyclicCohomology.ProfiniteCohomology.Herbrand
universe uG uA
variable {G : Type uG} [Group G] [Fintype G]
variable (A B : Type uA)
variable [CommGroup A] [CommGroup B]
variable [MulDistribMulAction G A] [MulDistribMulAction G B]
theorem herbrandH0ProdFinite
    [Finite (HerbrandH0 G A)]
    [Finite (HerbrandH0 G B)] :
    Finite (HerbrandH0 G (A × B))
CyclicCohomology.herbrandHMinusOneProdFinite

Finiteness of degree minus one is preserved by a binary product.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open CyclicCohomology.ProfiniteCohomology.Herbrand
universe uG uA
variable {G : Type uG} [Group G] [Fintype G]
variable (A B : Type uA)
variable [CommGroup A] [CommGroup B]
variable [MulDistribMulAction G A] [MulDistribMulAction G B]
theorem herbrandHMinusOneProdFinite
    (σ : G)
    [Finite (HerbrandHMinusOne G A σ)]
    [Finite (HerbrandHMinusOne G B σ)] :
    Finite (HerbrandHMinusOne G (A × B) σ)
CyclicCohomology.herbrandH0Prod_card

Cardinality of degree-zero Tate cohomology for a binary product.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open CyclicCohomology.ProfiniteCohomology.Herbrand
universe uG uA
variable {G : Type uG} [Group G] [Fintype G]
variable (A B : Type uA)
variable [CommGroup A] [CommGroup B]
variable [MulDistribMulAction G A] [MulDistribMulAction G B]
theorem herbrandH0Prod_card
    [Finite (HerbrandH0 G A)]
    [Finite (HerbrandH0 G B)] :
    letI : Finite (HerbrandH0 G (A × B)) :=
      herbrandH0ProdFinite A B
    Nat.card (HerbrandH0 G (A × B)) =
      Nat.card (HerbrandH0 G A) *
        Nat.card (HerbrandH0 G B) := by
  rw [Nat.card_congr (herbrandH0ProdEquiv A B).toEquiv,
    Nat.card_prod]
CyclicCohomology.herbrandHMinusOneProd_card

Cardinality of degree-minus-one Tate cohomology for a binary product.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open CyclicCohomology.ProfiniteCohomology.Herbrand
universe uG uA
variable {G : Type uG} [Group G] [Fintype G]
variable (A B : Type uA)
variable [CommGroup A] [CommGroup B]
variable [MulDistribMulAction G A] [MulDistribMulAction G B]
theorem herbrandHMinusOneProd_card
    (σ : G)
    [Finite (HerbrandHMinusOne G A σ)]
    [Finite (HerbrandHMinusOne G B σ)] :
    letI : Finite (HerbrandHMinusOne G (A × B) σ) :=
      herbrandHMinusOneProdFinite A B σ
    Nat.card (HerbrandHMinusOne G (A × B) σ) =
      Nat.card (HerbrandHMinusOne G A σ) *
        Nat.card (HerbrandHMinusOne G B σ) := by
  rw [Nat.card_congr
      (herbrandHMinusOneProdEquiv A B σ).toEquiv,
    Nat.card_prod]
CyclicCohomology.herbrandQuotient_prod

The Herbrand quotient of a binary product is the product of the two Herbrand quotients.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open CyclicCohomology.ProfiniteCohomology.Herbrand
universe uG uA
variable {G : Type uG} [Group G] [Fintype G]
variable (A B : Type uA)
variable [CommGroup A] [CommGroup B]
variable [MulDistribMulAction G A] [MulDistribMulAction G B]
theorem herbrandQuotient_prod
    (σ : G)
    [Finite (HerbrandH0 G A)]
    [Finite (HerbrandHMinusOne G A σ)]
    [Finite (HerbrandH0 G B)]
    [Finite (HerbrandHMinusOne G B σ)] :
    letI : Finite (HerbrandH0 G (A × B)) :=
      herbrandH0ProdFinite A B
    letI : Finite (HerbrandHMinusOne G (A × B) σ) :=
      herbrandHMinusOneProdFinite A B σ
    herbrandQuotient (G := G) (A := A × B) σ =
      herbrandQuotient (G := G) (A := A) σ *
        herbrandQuotient (G := G) (A := B) σ := by
  let : Finite (HerbrandH0 G (A × B)) :=
    herbrandH0ProdFinite A B
  let : Finite (HerbrandHMinusOne G (A × B) σ) :=
    herbrandHMinusOneProdFinite A B σ
  rw [herbrandQuotient_eq_card_ratio,
    herbrandQuotient_eq_card_ratio,
    herbrandQuotient_eq_card_ratio,
    herbrandH0Prod_card A B,
    herbrandHMinusOneProd_card A B σ]
  simp only [Nat.cast_mul]
  exact (div_mul_div_comm _ _ _ _).symm