Theorem: CategoryTheory.Functor.IsCoverDense.sheafIso_inv_val
File: Mathlib/CategoryTheory/Sites/DenseSubsite.lean

Proof steps:
state_before: C : Type u_1
inst✝⁵ : Category.{?u.102730, u_1} C
D : Type u_2
inst✝⁴ : Category.{?u.102737, u_2} D
E : Type u_3
inst✝³ : Category.{?u.102744, u_3} E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
A : Type u_4
inst✝² : Category.{?u.102796, u_4} A
G : C ⥤ D
inst✝¹ : G.IsCoverDense K
inst✝ : G.IsLocallyFull K
ℱ✝ : Dᵒᵖ ⥤ A
ℱ'✝ ℱ ℱ' : Sheaf K A
i : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val
⊢ { val := (presheafIso i).hom } ≫ { val := (presheafIso i).inv } = 𝟙 ℱ
state_after: case h
C : Type u_1
inst✝⁵ : Category.{?u.102730, u_1} C
D : Type u_2
inst✝⁴ : Category.{?u.102737, u_2} D
E : Type u_3
inst✝³ : Category.{?u.102744, u_3} E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
A : Type u_4
inst✝² : Category.{?u.102796, u_4} A
G : C ⥤ D
inst✝¹ : G.IsCoverDense K
inst✝ : G.IsLocallyFull K
ℱ✝ : Dᵒᵖ ⥤ A
ℱ'✝ ℱ ℱ' : Sheaf K A
i : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val
⊢ ({ val := (presheafIso i).hom } ≫ { val := (presheafIso i).inv }).val = (𝟙 ℱ).val
tactic: ext1
state_before: case h
C : Type u_1
inst✝⁵ : Category.{?u.102730, u_1} C
D : Type u_2
inst✝⁴ : Category.{?u.102737, u_2} D
E : Type u_3
inst✝³ : Category.{?u.102744, u_3} E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
A : Type u_4
inst✝² : Category.{?u.102796, u_4} A
G : C ⥤ D
inst✝¹ : G.IsCoverDense K
inst✝ : G.IsLocallyFull K
ℱ✝ : Dᵒᵖ ⥤ A
ℱ'✝ ℱ ℱ' : Sheaf K A
i : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val
⊢ ({ val := (presheafIso i).hom } ≫ { val := (presheafIso i).inv }).val = (𝟙 ℱ).val
state_after: no goals
tactic: apply (presheafIso i).hom_inv_id
state_before: C : Type u_1
inst✝⁵ : Category.{?u.102730, u_1} C
D : Type u_2
inst✝⁴ : Category.{?u.102737, u_2} D
E : Type u_3
inst✝³ : Category.{?u.102744, u_3} E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
A : Type u_4
inst✝² : Category.{?u.102796, u_4} A
G : C ⥤ D
inst✝¹ : G.IsCoverDense K
inst✝ : G.IsLocallyFull K
ℱ✝ : Dᵒᵖ ⥤ A
ℱ'✝ ℱ ℱ' : Sheaf K A
i : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val
⊢ { val := (presheafIso i).inv } ≫ { val := (presheafIso i).hom } = 𝟙 ℱ'
state_after: case h
C : Type u_1
inst✝⁵ : Category.{?u.102730, u_1} C
D : Type u_2
inst✝⁴ : Category.{?u.102737, u_2} D
E : Type u_3
inst✝³ : Category.{?u.102744, u_3} E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
A : Type u_4
inst✝² : Category.{?u.102796, u_4} A
G : C ⥤ D
inst✝¹ : G.IsCoverDense K
inst✝ : G.IsLocallyFull K
ℱ✝ : Dᵒᵖ ⥤ A
ℱ'✝ ℱ ℱ' : Sheaf K A
i : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val
⊢ ({ val := (presheafIso i).inv } ≫ { val := (presheafIso i).hom }).val = (𝟙 ℱ').val
tactic: ext1
state_before: case h
C : Type u_1
inst✝⁵ : Category.{?u.102730, u_1} C
D : Type u_2
inst✝⁴ : Category.{?u.102737, u_2} D
E : Type u_3
inst✝³ : Category.{?u.102744, u_3} E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
A : Type u_4
inst✝² : Category.{?u.102796, u_4} A
G : C ⥤ D
inst✝¹ : G.IsCoverDense K
inst✝ : G.IsLocallyFull K
ℱ✝ : Dᵒᵖ ⥤ A
ℱ'✝ ℱ ℱ' : Sheaf K A
i : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val
⊢ ({ val := (presheafIso i).inv } ≫ { val := (presheafIso i).hom }).val = (𝟙 ℱ').val
state_after: no goals
tactic: apply (presheafIso i).inv_hom_id