Theorem: CategoryTheory.IsFiltered.small_fullSubcategory_filteredClosure
File: Mathlib/CategoryTheory/Filtered/Small.lean

tactic: refine small_of_injective_of_exists (FilteredClosureSmall.abstractFilteredClosureRealization f)
  FullSubcategory.ext ?_
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
⊢ Small.{max v w, u} (FullSubcategory (FilteredClosure f))
state_after: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
⊢ ∀ (b : FullSubcategory (FilteredClosure f)),
    ∃ a, CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f a = b.obj

tactic: rintro ⟨j, h⟩
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
⊢ ∀ (b : FullSubcategory (FilteredClosure f)),
    ∃ a, CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f a = b.obj
state_after: case mk
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
h : FilteredClosure f j
⊢ ∃ a,
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f a =
      { obj := j, property := h }.obj

tactic: induction h with
| base x => exact ⟨⟨0, ⟨x⟩⟩, rfl⟩
| max hj₁ hj₂ ih ih' =>
  rcases ih with ⟨⟨n, x⟩, rfl⟩
  rcases ih' with ⟨⟨m, y⟩, rfl⟩
  refine ⟨⟨(Max.max n m).succ, FilteredClosureSmall.InductiveStep.max ?_ ?_ x y⟩, rfl⟩
  all_goals apply Nat.lt_succ_of_le
  exacts [Nat.le_max_left _ _, Nat.le_max_right _ _]
| coeq hj₁ hj₂ g g' ih ih' =>
  rcases ih with ⟨⟨n, x⟩, rfl⟩
  rcases ih' with ⟨⟨m, y⟩, rfl⟩
  refine ⟨⟨(Max.max n m).succ, FilteredClosureSmall.InductiveStep.coeq ?_ ?_ x y g g'⟩, rfl⟩
  all_goals apply Nat.lt_succ_of_le
  exacts [Nat.le_max_left _ _, Nat.le_max_right _ _]
state_before: case mk
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
h : FilteredClosure f j
⊢ ∃ a,
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f a =
      { obj := j, property := h }.obj
state_after: no goals

tactic: exact ⟨⟨0, ⟨x⟩⟩, rfl⟩
state_before: case mk.base
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
x : α
⊢ ∃ a,
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f a =
      { obj := f x, property := ⋯ }.obj
state_after: no goals

tactic: rcases ih with ⟨⟨n, x⟩, rfl⟩
state_before: case mk.max
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j j✝ j'✝ : C
hj₁ : FilteredClosure f j✝
hj₂ : FilteredClosure f j'✝
ih :
  ∃ a,
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f a =
      { obj := j✝, property := hj₁ }.obj
ih' :
  ∃ a,
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f a =
      { obj := j'✝, property := hj₂ }.obj
⊢ ∃ a,
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f a =
      { obj := max j✝ j'✝, property := ⋯ }.obj
state_after: case mk.max.intro.mk
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j j'✝ : C
hj₂ : FilteredClosure f j'✝
ih' :
  ∃ a,
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f a =
      { obj := j'✝, property := hj₂ }.obj
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
⊢ ∃ a,
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f a =
      { obj := max (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩) j'✝,
          property := ⋯ }.obj

tactic: rcases ih' with ⟨⟨m, y⟩, rfl⟩
state_before: case mk.max.intro.mk
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j j'✝ : C
hj₂ : FilteredClosure f j'✝
ih' :
  ∃ a,
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f a =
      { obj := j'✝, property := hj₂ }.obj
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
⊢ ∃ a,
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f a =
      { obj := max (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩) j'✝,
          property := ⋯ }.obj
state_after: case mk.max.intro.mk.intro.mk
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
m : ℕ
y : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f m).fst
hj₂ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩)
⊢ ∃ a,
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f a =
      {
          obj :=
            max (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
              (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩),
          property := ⋯ }.obj

tactic: refine ⟨⟨(Max.max n m).succ, FilteredClosureSmall.InductiveStep.max ?_ ?_ x y⟩, rfl⟩
state_before: case mk.max.intro.mk.intro.mk
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
m : ℕ
y : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f m).fst
hj₂ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩)
⊢ ∃ a,
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f a =
      {
          obj :=
            max (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
              (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩),
          property := ⋯ }.obj
state_after: case mk.max.intro.mk.intro.mk.refine_1
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
m : ℕ
y : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f m).fst
hj₂ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩)
⊢ n < Max.max n m + 1

case mk.max.intro.mk.intro.mk.refine_2
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
m : ℕ
y : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f m).fst
hj₂ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩)
⊢ m < Max.max n m + 1

tactic: all_goals apply Nat.lt_succ_of_le
state_before: case mk.max.intro.mk.intro.mk.refine_1
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
m : ℕ
y : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f m).fst
hj₂ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩)
⊢ n < Max.max n m + 1

case mk.max.intro.mk.intro.mk.refine_2
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
m : ℕ
y : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f m).fst
hj₂ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩)
⊢ m < Max.max n m + 1
state_after: case mk.max.intro.mk.intro.mk.refine_1.a
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
m : ℕ
y : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f m).fst
hj₂ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩)
⊢ n ≤ Max.max n m

case mk.max.intro.mk.intro.mk.refine_2.a
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
m : ℕ
y : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f m).fst
hj₂ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩)
⊢ m ≤ Max.max n m

tactic: exacts [Nat.le_max_left _ _, Nat.le_max_right _ _]
state_before: case mk.max.intro.mk.intro.mk.refine_1.a
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
m : ℕ
y : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f m).fst
hj₂ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩)
⊢ n ≤ Max.max n m

case mk.max.intro.mk.intro.mk.refine_2.a
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
m : ℕ
y : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f m).fst
hj₂ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩)
⊢ m ≤ Max.max n m
state_after: no goals

tactic: apply Nat.lt_succ_of_le
state_before: case mk.max.intro.mk.intro.mk.refine_2
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
m : ℕ
y : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f m).fst
hj₂ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩)
⊢ m < Max.max n m + 1
state_after: case mk.max.intro.mk.intro.mk.refine_2.a
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
m : ℕ
y : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f m).fst
hj₂ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩)
⊢ m ≤ Max.max n m

tactic: rcases ih with ⟨⟨n, x⟩, rfl⟩
state_before: case mk.coeq
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j j✝ j'✝ : C
hj₁ : FilteredClosure f j✝
hj₂ : FilteredClosure f j'✝
g g' : j✝ ⟶ j'✝
ih :
  ∃ a,
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f a =
      { obj := j✝, property := hj₁ }.obj
ih' :
  ∃ a,
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f a =
      { obj := j'✝, property := hj₂ }.obj
⊢ ∃ a,
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f a =
      { obj := coeq g g', property := ⋯ }.obj
state_after: case mk.coeq.intro.mk
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j j'✝ : C
hj₂ : FilteredClosure f j'✝
ih' :
  ∃ a,
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f a =
      { obj := j'✝, property := hj₂ }.obj
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
g g' : CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩ ⟶ j'✝
⊢ ∃ a,
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f a =
      { obj := coeq g g', property := ⋯ }.obj

tactic: rcases ih' with ⟨⟨m, y⟩, rfl⟩
state_before: case mk.coeq.intro.mk
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j j'✝ : C
hj₂ : FilteredClosure f j'✝
ih' :
  ∃ a,
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f a =
      { obj := j'✝, property := hj₂ }.obj
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
g g' : CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩ ⟶ j'✝
⊢ ∃ a,
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f a =
      { obj := coeq g g', property := ⋯ }.obj
state_after: case mk.coeq.intro.mk.intro.mk
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
m : ℕ
y : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f m).fst
hj₂ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩)
g g' :
  CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩ ⟶
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩
⊢ ∃ a,
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f a =
      { obj := coeq g g', property := ⋯ }.obj

tactic: refine ⟨⟨(Max.max n m).succ, FilteredClosureSmall.InductiveStep.coeq ?_ ?_ x y g g'⟩, rfl⟩
state_before: case mk.coeq.intro.mk.intro.mk
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
m : ℕ
y : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f m).fst
hj₂ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩)
g g' :
  CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩ ⟶
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩
⊢ ∃ a,
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f a =
      { obj := coeq g g', property := ⋯ }.obj
state_after: case mk.coeq.intro.mk.intro.mk.refine_1
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
m : ℕ
y : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f m).fst
hj₂ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩)
g g' :
  CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩ ⟶
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩
⊢ n < Max.max n m + 1

case mk.coeq.intro.mk.intro.mk.refine_2
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
m : ℕ
y : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f m).fst
hj₂ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩)
g g' :
  CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩ ⟶
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩
⊢ m < Max.max n m + 1

tactic: all_goals apply Nat.lt_succ_of_le
state_before: case mk.coeq.intro.mk.intro.mk.refine_1
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
m : ℕ
y : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f m).fst
hj₂ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩)
g g' :
  CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩ ⟶
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩
⊢ n < Max.max n m + 1

case mk.coeq.intro.mk.intro.mk.refine_2
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
m : ℕ
y : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f m).fst
hj₂ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩)
g g' :
  CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩ ⟶
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩
⊢ m < Max.max n m + 1
state_after: case mk.coeq.intro.mk.intro.mk.refine_1.a
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
m : ℕ
y : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f m).fst
hj₂ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩)
g g' :
  CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩ ⟶
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩
⊢ n ≤ Max.max n m

case mk.coeq.intro.mk.intro.mk.refine_2.a
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
m : ℕ
y : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f m).fst
hj₂ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩)
g g' :
  CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩ ⟶
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩
⊢ m ≤ Max.max n m

tactic: exacts [Nat.le_max_left _ _, Nat.le_max_right _ _]
state_before: case mk.coeq.intro.mk.intro.mk.refine_1.a
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
m : ℕ
y : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f m).fst
hj₂ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩)
g g' :
  CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩ ⟶
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩
⊢ n ≤ Max.max n m

case mk.coeq.intro.mk.intro.mk.refine_2.a
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
m : ℕ
y : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f m).fst
hj₂ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩)
g g' :
  CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩ ⟶
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩
⊢ m ≤ Max.max n m
state_after: no goals

tactic: apply Nat.lt_succ_of_le
state_before: case mk.coeq.intro.mk.intro.mk.refine_2
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
m : ℕ
y : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f m).fst
hj₂ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩)
g g' :
  CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩ ⟶
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩
⊢ m < Max.max n m + 1
state_after: case mk.coeq.intro.mk.intro.mk.refine_2.a
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : IsFilteredOrEmpty C
α : Type w
f : α → C
j : C
n : ℕ
x : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f n).fst
hj₁ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩)
m : ℕ
y : (CategoryTheory.IsFiltered.FilteredClosureSmall.bundledAbstractFilteredClosure f m).fst
hj₂ : FilteredClosure f (CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩)
g g' :
  CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨n, x⟩ ⟶
    CategoryTheory.IsFiltered.FilteredClosureSmall.abstractFilteredClosureRealization f ⟨m, y⟩
⊢ m ≤ Max.max n m