Theorem: Condensed.epi_iff_surjective_on_stonean
File: Mathlib/Condensed/Epi.lean

Proof steps:
state_before: A : Type u'
inst✝¹² : Category.{v', u'} A
inst✝¹¹ : ConcreteCategory A
inst✝¹⁰ : HasFunctorialSurjectiveInjectiveFactorization A
inst✝⁹ : (coherentTopology CompHaus).WEqualsLocallyBijective A
inst✝⁸ : HasSheafify (coherentTopology CompHaus) A
inst✝⁷ : (coherentTopology CompHaus).HasSheafCompose (CategoryTheory.forget A)
inst✝⁶ : Balanced (Sheaf (coherentTopology CompHaus) A)
inst✝⁵ : PreservesFiniteProducts (CategoryTheory.forget A)
inst✝⁴ : ∀ (X : CompHausᵒᵖ), HasLimitsOfShape (StructuredArrow X Stonean.toCompHaus.op) A
X Y : Condensed A
f : X ⟶ Y
inst✝³ : (extensiveTopology Stonean).WEqualsLocallyBijective A
inst✝² : HasSheafify (extensiveTopology Stonean) A
inst✝¹ : (extensiveTopology Stonean).HasSheafCompose (CategoryTheory.forget A)
inst✝ : Balanced (Sheaf (extensiveTopology Stonean) A)
⊢ Epi f ↔ ∀ (S : Stonean), Function.Surjective ⇑(f.val.app (op S.compHaus))
state_after: A : Type u'
inst✝¹² : Category.{v', u'} A
inst✝¹¹ : ConcreteCategory A
inst✝¹⁰ : HasFunctorialSurjectiveInjectiveFactorization A
inst✝⁹ : (coherentTopology CompHaus).WEqualsLocallyBijective A
inst✝⁸ : HasSheafify (coherentTopology CompHaus) A
inst✝⁷ : (coherentTopology CompHaus).HasSheafCompose (CategoryTheory.forget A)
inst✝⁶ : Balanced (Sheaf (coherentTopology CompHaus) A)
inst✝⁵ : PreservesFiniteProducts (CategoryTheory.forget A)
inst✝⁴ : ∀ (X : CompHausᵒᵖ), HasLimitsOfShape (StructuredArrow X Stonean.toCompHaus.op) A
X Y : Condensed A
f : X ⟶ Y
inst✝³ : (extensiveTopology Stonean).WEqualsLocallyBijective A
inst✝² : HasSheafify (extensiveTopology Stonean) A
inst✝¹ : (extensiveTopology Stonean).HasSheafCompose (CategoryTheory.forget A)
inst✝ : Balanced (Sheaf (extensiveTopology Stonean) A)
⊢ IsLocallySurjective
      (Presheaf.coherentExtensiveEquivalence.functor.map ((StoneanCompHaus.equivalence A).inverse.map f)) ↔
    ∀ (S : Stonean), Function.Surjective ⇑(f.val.app (op S.compHaus))
tactic: rw [← (StoneanCompHaus.equivalence A).inverse.epi_map_iff_epi,
    ← Presheaf.coherentExtensiveEquivalence.functor.epi_map_iff_epi,
    ← isLocallySurjective_iff_epi']
state_before: A : Type u'
inst✝¹² : Category.{v', u'} A
inst✝¹¹ : ConcreteCategory A
inst✝¹⁰ : HasFunctorialSurjectiveInjectiveFactorization A
inst✝⁹ : (coherentTopology CompHaus).WEqualsLocallyBijective A
inst✝⁸ : HasSheafify (coherentTopology CompHaus) A
inst✝⁷ : (coherentTopology CompHaus).HasSheafCompose (CategoryTheory.forget A)
inst✝⁶ : Balanced (Sheaf (coherentTopology CompHaus) A)
inst✝⁵ : PreservesFiniteProducts (CategoryTheory.forget A)
inst✝⁴ : ∀ (X : CompHausᵒᵖ), HasLimitsOfShape (StructuredArrow X Stonean.toCompHaus.op) A
X Y : Condensed A
f : X ⟶ Y
inst✝³ : (extensiveTopology Stonean).WEqualsLocallyBijective A
inst✝² : HasSheafify (extensiveTopology Stonean) A
inst✝¹ : (extensiveTopology Stonean).HasSheafCompose (CategoryTheory.forget A)
inst✝ : Balanced (Sheaf (extensiveTopology Stonean) A)
⊢ IsLocallySurjective
      (Presheaf.coherentExtensiveEquivalence.functor.map ((StoneanCompHaus.equivalence A).inverse.map f)) ↔
    ∀ (S : Stonean), Function.Surjective ⇑(f.val.app (op S.compHaus))
state_after: no goals
tactic: exact extensiveTopology.isLocallySurjective_iff (D := A) _