File: Mathlib/CategoryTheory/Sites/NonabelianCohomology/H1.lean

full_name: CategoryTheory.PresheafOfGroups.ZeroCochain
code: /-- A zero cochain consists of a family of sections. -/
def ZeroCochain 
goal: Type (max w w')

full_name: CategoryTheory.PresheafOfGroups.instGroupZeroCochain
code: instance : Group (ZeroCochain G U) 
goal: Group (CategoryTheory.PresheafOfGroups.ZeroCochain G U)

full_name: CategoryTheory.PresheafOfGroups.Cochain₀.one_apply
code: @[simp, nolint simpNF]
lemma one_apply (i : I) : (1 : ZeroCochain G U) i = 1 
goal: 1 i = 1

full_name: CategoryTheory.PresheafOfGroups.Cochain₀.inv_apply
code: @[simp]
lemma inv_apply (γ : ZeroCochain G U) (i : I) : γ⁻¹ i = (γ i)⁻¹ 
goal: γ⁻¹ i = (γ i)⁻¹

full_name: CategoryTheory.PresheafOfGroups.Cochain₀.mul_apply
code: @[simp]
lemma mul_apply (γ₁ γ₂ : ZeroCochain G U) (i : I) : (γ₁ * γ₂) i = γ₁ i * γ₂ i 
goal: (γ₁ * γ₂) i = γ₁ i * γ₂ i

full_name: CategoryTheory.PresheafOfGroups.OneCochain.ev
code: /-- A 1-cochain of a presheaf of groups `G : Cᵒᵖ ⥤ Grp` on a family `U : I → C` of objects
consists of the data of an element in `G.obj (Opposite.op T)` whenever we have elements
`i` and `j` in `I` and maps `a : T ⟶ U i` and `b : T ⟶ U j`, and it must satisfy a compatibility
with respect to precomposition. (When the binary product of `U i` and `U j` exists, this
data for all `T`, `a` and `b` corresponds to the data of a section of `G` on this product.) -/
@[ext]
structure OneCochain where
  /-- the data involved in a 1-cochain -/
  ev (i j : I) ⦃T : C⦄ (a : T ⟶ U i) (b : T ⟶ U j) : G.obj (Opposite.op T)
  ev_precomp (i j : I) ⦃T T' : C⦄ (φ : T ⟶ T') (a : T' ⟶ U i) (b : T' ⟶ U j) :
    G.map φ.op (ev i j a b) = ev i j (φ ≫ a) (φ ≫ b) := by aesop
goal: ↑(G.obj (Opposite.op T))

full_name: CategoryTheory.PresheafOfGroups.OneCochain.ev_precomp
code: /-- A 1-cochain of a presheaf of groups `G : Cᵒᵖ ⥤ Grp` on a family `U : I → C` of objects
consists of the data of an element in `G.obj (Opposite.op T)` whenever we have elements
`i` and `j` in `I` and maps `a : T ⟶ U i` and `b : T ⟶ U j`, and it must satisfy a compatibility
with respect to precomposition. (When the binary product of `U i` and `U j` exists, this
data for all `T`, `a` and `b` corresponds to the data of a section of `G` on this product.) -/
@[ext]
structure OneCochain where
  /-- the data involved in a 1-cochain -/
  ev (i j : I) ⦃T : C⦄ (a : T ⟶ U i) (b : T ⟶ U j) : G.obj (Opposite.op T)
  ev_precomp (i j : I) ⦃T T' : C⦄ (φ : T ⟶ T') (a : T' ⟶ U i) (b : T' ⟶ U j) :
    G.map φ.op (ev i j a b) = ev i j (φ ≫ a) (φ ≫ b) := by aesop
goal: (G.map φ.op) (self.ev i j a b) =
  self.ev i j (CategoryTheory.CategoryStruct.comp φ a) (CategoryTheory.CategoryStruct.comp φ b)

full_name: CategoryTheory.PresheafOfGroups.OneCochain
code: /-- A 1-cochain of a presheaf of groups `G : Cᵒᵖ ⥤ Grp` on a family `U : I → C` of objects
consists of the data of an element in `G.obj (Opposite.op T)` whenever we have elements
`i` and `j` in `I` and maps `a : T ⟶ U i` and `b : T ⟶ U j`, and it must satisfy a compatibility
with respect to precomposition. (When the binary product of `U i` and `U j` exists, this
data for all `T`, `a` and `b` corresponds to the data of a section of `G` on this product.) -/
@[ext]
structure OneCochain where
  /-- the data involved in a 1-cochain -/
  ev (i j : I) ⦃T : C⦄ (a : T ⟶ U i) (b : T ⟶ U j) : G.obj (Opposite.op T)
  ev_precomp (i j : I) ⦃T T' : C⦄ (φ : T ⟶ T') (a : T' ⟶ U i) (b : T' ⟶ U j) :
    G.map φ.op (ev i j a b) = ev i j (φ ≫ a) (φ ≫ b) := by aesop
goal: Type (max (max (max u v) w) w')

full_name: CategoryTheory.PresheafOfGroups.OneCochain.instOne
code: instance : One (OneCochain G U) 
goal: One (CategoryTheory.PresheafOfGroups.OneCochain G U)

full_name: CategoryTheory.PresheafOfGroups.OneCochain.one_ev
code: @[simp]
lemma one_ev (i j : I) {T : C} (a : T ⟶ U i) (b : T ⟶ U j) :
    (1 : OneCochain G U).ev i j a b = 1 
goal: CategoryTheory.PresheafOfGroups.OneCochain.ev 1 i j a b = 1

full_name: CategoryTheory.PresheafOfGroups.OneCochain.instMul
code: instance : Mul (OneCochain G U) 
goal: Mul (CategoryTheory.PresheafOfGroups.OneCochain G U)

full_name: CategoryTheory.PresheafOfGroups.OneCochain.mul_ev
code: @[simp]
lemma mul_ev (γ₁ γ₂ : OneCochain G U) (i j : I) {T : C} (a : T ⟶ U i) (b : T ⟶ U j) :
    (γ₁ * γ₂).ev i j a b = γ₁.ev i j a b * γ₂.ev i j a b 
goal: (γ₁ * γ₂).ev i j a b = γ₁.ev i j a b * γ₂.ev i j a b

full_name: CategoryTheory.PresheafOfGroups.OneCochain.instInv
code: instance : Inv (OneCochain G U) 
goal: Inv (CategoryTheory.PresheafOfGroups.OneCochain G U)

full_name: CategoryTheory.PresheafOfGroups.OneCochain.inv_ev
code: @[simp]
lemma inv_ev (γ : OneCochain G U) (i j : I) {T : C} (a : T ⟶ U i) (b : T ⟶ U j) :
    (γ⁻¹).ev i j a b = (γ.ev i j a b)⁻¹ 
goal: γ⁻¹.ev i j a b = (γ.ev i j a b)⁻¹

full_name: CategoryTheory.PresheafOfGroups.OneCochain.instGroup
code: instance : Group (OneCochain G U) 
goal: Group (CategoryTheory.PresheafOfGroups.OneCochain G U)

full_name: CategoryTheory.PresheafOfGroups.OneCocycle
code: /-- A 1-cocycle is a 1-cochain which satisfies the cocycle condition. -/
structure OneCocycle extends OneCochain G U where
  ev_trans (i j k : I) ⦃T : C⦄ (a : T ⟶ U i) (b : T ⟶ U j) (c : T ⟶ U k) :
      ev i j a b * ev j k b c = ev i k a c := by aesop
goal: Type (max (max (max u v) w) w')

full_name: CategoryTheory.PresheafOfGroups.OneCocycle.ev_trans
code: /-- A 1-cocycle is a 1-cochain which satisfies the cocycle condition. -/
structure OneCocycle extends OneCochain G U where
  ev_trans (i j k : I) ⦃T : C⦄ (a : T ⟶ U i) (b : T ⟶ U j) (c : T ⟶ U k) :
      ev i j a b * ev j k b c = ev i k a c := by aesop
goal: self.ev i j a b * self.ev j k b c = self.ev i k a c

full_name: CategoryTheory.PresheafOfGroups.OneCocycle.instOne
code: instance : One (OneCocycle G U) 
goal: One (CategoryTheory.PresheafOfGroups.OneCocycle G U)

full_name: CategoryTheory.PresheafOfGroups.OneCocycle.one_toOneCochain
code: @[simp]
lemma one_toOneCochain : (1 : OneCocycle G U).toOneCochain = 1 
goal: CategoryTheory.PresheafOfGroups.OneCocycle.toOneCochain 1 = 1

full_name: CategoryTheory.PresheafOfGroups.OneCocycle.ev_refl
code: @[simp]
lemma ev_refl (γ : OneCocycle G U) (i : I) ⦃T : C⦄ (a : T ⟶ U i) :
    γ.ev i i a a = 1 
goal: γ.ev i i a a = 1

full_name: CategoryTheory.PresheafOfGroups.OneCocycle.ev_symm
code: lemma ev_symm (γ : OneCocycle G U) (i j : I) ⦃T : C⦄ (a : T ⟶ U i) (b : T ⟶ U j) :
    γ.ev i j a b = (γ.ev j i b a)⁻¹ 
goal: γ.ev i j a b = (γ.ev j i b a)⁻¹

full_name: CategoryTheory.PresheafOfGroups.OneCohomologyRelation
code: /-- The assertion that two cochains in `OneCochain G U` are cohomologous via
an explicit zero-cochain. -/
def OneCohomologyRelation (γ₁ γ₂ : OneCochain G U) (α : ZeroCochain G U) : Prop 
goal: Prop

full_name: CategoryTheory.PresheafOfGroups.OneCohomologyRelation.refl
code: lemma refl (γ : OneCochain G U) : OneCohomologyRelation γ γ 1 
goal: CategoryTheory.PresheafOfGroups.OneCohomologyRelation γ γ 1

full_name: CategoryTheory.PresheafOfGroups.OneCohomologyRelation.symm
code: lemma symm {γ₁ γ₂ : OneCochain G U} {α : ZeroCochain G U} (h : OneCohomologyRelation γ₁ γ₂ α) :
    OneCohomologyRelation γ₂ γ₁ α⁻¹ 
goal: CategoryTheory.PresheafOfGroups.OneCohomologyRelation γ₂ γ₁ α⁻¹

full_name: CategoryTheory.PresheafOfGroups.OneCohomologyRelation.trans
code: lemma trans {γ₁ γ₂ γ₃ : OneCochain G U} {α β : ZeroCochain G U}
    (h₁₂ : OneCohomologyRelation γ₁ γ₂ α) (h₂₃ : OneCohomologyRelation γ₂ γ₃ β) :
    OneCohomologyRelation γ₁ γ₃ (β * α) 
goal: CategoryTheory.PresheafOfGroups.OneCohomologyRelation γ₁ γ₃ (β * α)

full_name: CategoryTheory.PresheafOfGroups.OneCocycle.IsCohomologous
code: /-- The cohomology (equivalence) relation on 1-cocycles. -/
def IsCohomologous (γ₁ γ₂ : OneCocycle G U) : Prop 
goal: Prop

full_name: CategoryTheory.PresheafOfGroups.OneCocycle.equivalence_isCohomologous
code: lemma equivalence_isCohomologous :
    _root_.Equivalence (IsCohomologous (G := G) (U := U)) 
goal: Equivalence CategoryTheory.PresheafOfGroups.OneCocycle.IsCohomologous

full_name: CategoryTheory.PresheafOfGroups.H1
code: /-- The cohomology in degree 1 of a presheaf of groups
`G : Cᵒᵖ ⥤ Grp` on a family of objects `U : I → C`. -/
def H1 
goal: Type (max (max (max u v) w) w')

full_name: CategoryTheory.PresheafOfGroups.OneCocycle.class
code: /-- The cohomology class of a 1-cocycle. -/
def OneCocycle.class (γ : OneCocycle G U) : H1 G U 
goal: CategoryTheory.PresheafOfGroups.H1 G U

full_name: CategoryTheory.PresheafOfGroups.instOneH1
code: instance : One (H1 G U) 
goal: One (CategoryTheory.PresheafOfGroups.H1 G U)

full_name: CategoryTheory.PresheafOfGroups.OneCocycle.class_eq_iff
code: lemma OneCocycle.class_eq_iff (γ₁ γ₂ : OneCocycle G U) :
    γ₁.class = γ₂.class ↔ γ₁.IsCohomologous γ₂ 
goal: γ₁.class = γ₂.class ↔ γ₁.IsCohomologous γ₂

full_name: CategoryTheory.PresheafOfGroups.OneCocycle.IsCohomologous.class_eq
code: lemma OneCocycle.IsCohomologous.class_eq {γ₁ γ₂ : OneCocycle G U} (h : γ₁.IsCohomologous γ₂) :
    γ₁.class = γ₂.class 
goal: γ₁.class = γ₂.class