Theorem: CategoryTheory.essentiallySmall_iff
File: Mathlib/CategoryTheory/EssentiallySmall.lean

tactic: fconstructor
state_before: C✝ : Type u
inst✝¹ : Category C✝
C : Type u
inst✝ : Category C
⊢ EssentiallySmall C ↔ Small (Skeleton C) ∧ LocallySmall C

tactic: intro h
state_before: case mp
C✝ : Type u
inst✝¹ : Category C✝
C : Type u
inst✝ : Category C
⊢ EssentiallySmall C → Small (Skeleton C) ∧ LocallySmall C

tactic: fconstructor
state_before: case mp
C✝ : Type u
inst✝¹ : Category C✝
C : Type u
inst✝ : Category C
h : EssentiallySmall C
⊢ Small (Skeleton C) ∧ LocallySmall C

tactic: rcases h with ⟨S, 𝒮, ⟨e⟩⟩
state_before: case mp.left
C✝ : Type u
inst✝¹ : Category C✝
C : Type u
inst✝ : Category C
h : EssentiallySmall C
⊢ Small (Skeleton C)

tactic: skip
state_before: case mp.left.mk.intro.intro.intro
C✝ : Type u
inst✝¹ : Category C✝
C : Type u
inst✝ : Category C
S : Type w
𝒮 : SmallCategory S
e : C ≌ S
⊢ Small (Skeleton C)

tactic: refine' ⟨⟨Skeleton S, ⟨_⟩⟩⟩
state_before: case mp.left.mk.intro.intro.intro
C✝ : Type u
inst✝¹ : Category C✝
C : Type u
inst✝ : Category C
S : Type w
𝒮 : SmallCategory S
e : C ≌ S
⊢ Small (Skeleton C)

tactic: exact e.skeletonEquiv
state_before: case mp.left.mk.intro.intro.intro
C✝ : Type u
inst✝¹ : Category C✝
C : Type u
inst✝ : Category C
S : Type w
𝒮 : SmallCategory S
e : C ≌ S
⊢ Skeleton C ≃ Skeleton S

tactic: skip
state_before: case mp.right
C✝ : Type u
inst✝¹ : Category C✝
C : Type u
inst✝ : Category C
h : EssentiallySmall C
⊢ LocallySmall C

tactic: infer_instance
state_before: case mp.right
C✝ : Type u
inst✝¹ : Category C✝
C : Type u
inst✝ : Category C
h : EssentiallySmall C
⊢ LocallySmall C

tactic: rintro ⟨⟨S, ⟨e⟩⟩, L⟩
state_before: case mpr
C✝ : Type u
inst✝¹ : Category C✝
C : Type u
inst✝ : Category C
⊢ Small (Skeleton C) ∧ LocallySmall C → EssentiallySmall C

tactic: skip
state_before: case mpr.intro.mk.intro.intro
C✝ : Type u
inst✝¹ : Category C✝
C : Type u
inst✝ : Category C
L : LocallySmall C
S : Type w
e : Skeleton C ≃ S
⊢ EssentiallySmall C

tactic: let e' := (ShrinkHoms.equivalence C).skeletonEquiv.symm
state_before: case mpr.intro.mk.intro.intro
C✝ : Type u
inst✝¹ : Category C✝
C : Type u
inst✝ : Category C
L : LocallySmall C
S : Type w
e : Skeleton C ≃ S
⊢ EssentiallySmall C

tactic: letI : Category S := InducedCategory.category (e'.trans e).symm
state_before: case mpr.intro.mk.intro.intro
C✝ : Type u
inst✝¹ : Category C✝
C : Type u
inst✝ : Category C
L : LocallySmall C
S : Type w
e : Skeleton C ≃ S
e' : Skeleton (ShrinkHoms C) ≃ Skeleton C := (Equivalence.skeletonEquiv (ShrinkHoms.equivalence C)).symm
⊢ EssentiallySmall C

tactic: refine' ⟨⟨S, this, ⟨_⟩⟩⟩
state_before: case mpr.intro.mk.intro.intro
C✝ : Type u
inst✝¹ : Category C✝
C : Type u
inst✝ : Category C
L : LocallySmall C
S : Type w
e : Skeleton C ≃ S
e' : Skeleton (ShrinkHoms C) ≃ Skeleton C := (Equivalence.skeletonEquiv (ShrinkHoms.equivalence C)).symm
this : Category S := InducedCategory.category ↑(e'.trans e).symm
⊢ EssentiallySmall C

tactic: refine' (ShrinkHoms.equivalence C).trans <|
  (skeletonEquivalence (ShrinkHoms C)).symm.trans
    ((inducedFunctor (e'.trans e).symm).asEquivalence.symm)
state_before: case mpr.intro.mk.intro.intro
C✝ : Type u
inst✝¹ : Category C✝
C : Type u
inst✝ : Category C
L : LocallySmall C
S : Type w
e : Skeleton C ≃ S
e' : Skeleton (ShrinkHoms C) ≃ Skeleton C := (Equivalence.skeletonEquiv (ShrinkHoms.equivalence C)).symm
this : Category S := InducedCategory.category ↑(e'.trans e).symm
⊢ C ≌ S