awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Module: Mathlib.AlgebraicTopology.SimplicialSet.Nerve
Goal:
C : Type u
inst : Category.{v, u} C
D : Type u
inst_1 : Category.{v, u} D
x y : C
f : x ⟶ y
F : Functor.{v, v, u, u} C D
⊢ (homEquiv :
        (a :
            Edge
              ((ConcreteCategory.hom ((nerveMap F).app (op ⦋0⦌)) : (a : ComposableArrows C 0) → ComposableArrows D 0)
                ((nerveEquiv.symm : (a : C) → ComposableArrows C 0) x))
              ((ConcreteCategory.hom ((nerveMap F).app (op ⦋0⦌)) : (a : ComposableArrows C 0) → ComposableArrows D 0)
                ((nerveEquiv.symm : (a : C) → ComposableArrows C 0) y))) →
          (nerveEquiv : (a : ComposableArrows D 0) → D)
              ((ConcreteCategory.hom ((nerveMap F).app (op ⦋0⦌)) : (a : ComposableArrows C 0) → ComposableArrows D 0)
                ((nerveEquiv.symm : (a : C) → ComposableArrows C 0) x)) ⟶
            (nerveEquiv : (a : ComposableArrows D 0) → D)
              ((ConcreteCategory.hom ((nerveMap F).app (op ⦋0⦌)) : (a : ComposableArrows C 0) → ComposableArrows D 0)
                ((nerveEquiv.symm : (a : C) → ComposableArrows C 0) y)))
      ((edgeMk f).map (nerveMap F)) =
    F.map f

Tactic:
simp [homEquiv, nerveMap_app]

Premises used: CategoryTheory.nerve.homEquiv, CategoryTheory.nerveMap_app
-- Module: Mathlib.AlgebraicTopology.SimplicialSet.NerveAdjunction
Goal:
X Y : Truncated 2
f₀ :
  X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋0⦌ _proof_1)) →
    Y.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋0⦌ _proof_1))
f₁ :
  X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋1⦌ _proof_2)) →
    Y.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋1⦌ _proof_2))
hδ₁ :
  ∀ (x : X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋1⦌ _proof_2))),
    f₀
        ((ConcreteCategory.hom (FC := TypeCat.Fun) (X.map (δ₂ 1 _proof_1 _proof_3).op) :
            (a : (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋0 + 1⦌, property := _proof_3 }))) →
              (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋0⦌, property := _proof_1 })))
          x) =
      (ConcreteCategory.hom (FC := TypeCat.Fun) (Y.map (δ₂ 1 _proof_1 _proof_3).op) :
          (a : (fun (X : Type u) ↦ X) (Y.obj (op { obj := ⦋0 + 1⦌, property := _proof_3 }))) →
            (fun (X : Type u) ↦ X) (Y.obj (op { obj := ⦋0⦌, property := _proof_1 })))
        (f₁ x)
hδ₀ :
  ∀ (x : X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋1⦌ _proof_2))),
    f₀
        ((ConcreteCategory.hom (FC := TypeCat.Fun) (X.map (δ₂ 0 _proof_1 _proof_3).op) :
            (a : (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋0 + 1⦌, property := _proof_3 }))) →
              (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋0⦌, property := _proof_1 })))
          x) =
      (ConcreteCategory.hom (FC := TypeCat.Fun) (Y.map (δ₂ 0 _proof_1 _proof_3).op) :
          (a : (fun (X : Type u) ↦ X) (Y.obj (op { obj := ⦋0 + 1⦌, property := _proof_3 }))) →
            (fun (X : Type u) ↦ X) (Y.obj (op { obj := ⦋0⦌, property := _proof_1 })))
        (f₁ x)
hY : Y.StrictSegal
x : X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋2⦌ _proof_4))
⊢ Path.arrow (m := 2)
      ((hY.spineEquiv 2 f₂._proof_2 : (a : Y.obj (op { obj := ⦋2⦌, property := f₂._proof_2 })) → Y.Path 2)
        (f₂ f₀ f₁ hδ₁ hδ₀ hY x))
      0 =
    f₁
      ((ConcreteCategory.hom (FC := TypeCat.Fun) (X.map (δ₂ 2 _proof_2 _proof_5).op) :
          (a : (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋1 + 1⦌, property := _proof_5 }))) →
            (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋1⦌, property := _proof_2 })))
        x)

Tactic:
simp [f₂]

Premises used: SSet.Truncated.liftOfStrictSegal.f₂
-- Module: Mathlib.AlgebraicTopology.SimplicialSet.NerveAdjunction
Goal:
X Y : Truncated 2
f₀ :
  X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋0⦌ _proof_1)) →
    Y.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋0⦌ _proof_1))
f₁ :
  X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋1⦌ _proof_2)) →
    Y.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋1⦌ _proof_2))
hδ₁ :
  ∀ (x : X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋1⦌ _proof_2))),
    f₀
        ((ConcreteCategory.hom (FC := TypeCat.Fun) (X.map (δ₂ 1 _proof_1 _proof_3).op) :
            (a : (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋0 + 1⦌, property := _proof_3 }))) →
              (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋0⦌, property := _proof_1 })))
          x) =
      (ConcreteCategory.hom (FC := TypeCat.Fun) (Y.map (δ₂ 1 _proof_1 _proof_3).op) :
          (a : (fun (X : Type u) ↦ X) (Y.obj (op { obj := ⦋0 + 1⦌, property := _proof_3 }))) →
            (fun (X : Type u) ↦ X) (Y.obj (op { obj := ⦋0⦌, property := _proof_1 })))
        (f₁ x)
hδ₀ :
  ∀ (x : X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋1⦌ _proof_2))),
    f₀
        ((ConcreteCategory.hom (FC := TypeCat.Fun) (X.map (δ₂ 0 _proof_1 _proof_3).op) :
            (a : (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋0 + 1⦌, property := _proof_3 }))) →
              (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋0⦌, property := _proof_1 })))
          x) =
      (ConcreteCategory.hom (FC := TypeCat.Fun) (Y.map (δ₂ 0 _proof_1 _proof_3).op) :
          (a : (fun (X : Type u) ↦ X) (Y.obj (op { obj := ⦋0 + 1⦌, property := _proof_3 }))) →
            (fun (X : Type u) ↦ X) (Y.obj (op { obj := ⦋0⦌, property := _proof_1 })))
        (f₁ x)
hY : Y.StrictSegal
x : X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋2⦌ _proof_4))
⊢ Path.arrow (m := 2)
      ((hY.spineEquiv 2 f₂._proof_2 : (a : Y.obj (op { obj := ⦋2⦌, property := f₂._proof_2 })) → Y.Path 2)
        (f₂ f₀ f₁ hδ₁ hδ₀ hY x))
      1 =
    f₁
      ((ConcreteCategory.hom (FC := TypeCat.Fun) (X.map (δ₂ 0 _proof_2 _proof_5).op) :
          (a : (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋1 + 1⦌, property := _proof_5 }))) →
            (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋1⦌, property := _proof_2 })))
        x)

Tactic:
simp [f₂]

Premises used: SSet.Truncated.liftOfStrictSegal.f₂
-- Module: Mathlib.AlgebraicTopology.SimplicialSet.NerveAdjunction
Goal:
X Y : Truncated 2
f₀ :
  X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋0⦌ _proof_1)) →
    Y.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋0⦌ _proof_1))
f₁ :
  X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋1⦌ _proof_2)) →
    Y.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋1⦌ _proof_2))
hδ₁ :
  ∀ (x : X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋1⦌ _proof_2))),
    f₀
        ((ConcreteCategory.hom (FC := TypeCat.Fun) (X.map (δ₂ 1 _proof_1 _proof_3).op) :
            (a : (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋0 + 1⦌, property := _proof_3 }))) →
              (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋0⦌, property := _proof_1 })))
          x) =
      (ConcreteCategory.hom (FC := TypeCat.Fun) (Y.map (δ₂ 1 _proof_1 _proof_3).op) :
          (a : (fun (X : Type u) ↦ X) (Y.obj (op { obj := ⦋0 + 1⦌, property := _proof_3 }))) →
            (fun (X : Type u) ↦ X) (Y.obj (op { obj := ⦋0⦌, property := _proof_1 })))
        (f₁ x)
hδ₀ :
  ∀ (x : X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋1⦌ _proof_2))),
    f₀
        ((ConcreteCategory.hom (FC := TypeCat.Fun) (X.map (δ₂ 0 _proof_1 _proof_3).op) :
            (a : (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋0 + 1⦌, property := _proof_3 }))) →
              (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋0⦌, property := _proof_1 })))
          x) =
      (ConcreteCategory.hom (FC := TypeCat.Fun) (Y.map (δ₂ 0 _proof_1 _proof_3).op) :
          (a : (fun (X : Type u) ↦ X) (Y.obj (op { obj := ⦋0 + 1⦌, property := _proof_3 }))) →
            (fun (X : Type u) ↦ X) (Y.obj (op { obj := ⦋0⦌, property := _proof_1 })))
        (f₁ x)
hY : Y.StrictSegal
x : X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋2⦌ _proof_4))
⊢ f₁
      ((ConcreteCategory.hom (FC := TypeCat.Fun) (X.map (δ₂ 0 _proof_2 _proof_5).op) :
          (a : (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋1 + 1⦌, property := _proof_5 }))) →
            (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋1⦌, property := _proof_2 })))
        x) =
    (ConcreteCategory.hom (FC := TypeCat.Fun) (Y.map (δ₂ 0 _proof_2 _proof_5).op) :
        (a : (fun (X : Type u) ↦ X) (Y.obj (op { obj := ⦋1 + 1⦌, property := _proof_5 }))) →
          (fun (X : Type u) ↦ X) (Y.obj (op { obj := ⦋1⦌, property := _proof_2 })))
      (f₂ f₀ f₁ hδ₁ hδ₀ hY x)

Tactic:
simp [← spineEquiv_f₂_arrow_one f₀ f₁ hδ₁ hδ₀ hY, StrictSegal.spineEquiv,
    SimplexCategory.mkOfSucc_one_eq_δ]

Premises used: SSet.Truncated.StrictSegal.spineEquiv, SimplexCategory.mkOfSucc_one_eq_δ, SSet.Truncated.liftOfStrictSegal.spineEquiv_f₂_arrow_one
-- Module: Mathlib.AlgebraicTopology.SimplicialSet.NerveAdjunction
Goal:
X Y : Truncated 2
f₀ :
  X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋0⦌ _proof_1)) →
    Y.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋0⦌ _proof_1))
f₁ :
  X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋1⦌ _proof_2)) →
    Y.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋1⦌ _proof_2))
hδ₁ :
  ∀ (x : X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋1⦌ _proof_2))),
    f₀
        ((ConcreteCategory.hom (FC := TypeCat.Fun) (X.map (δ₂ 1 _proof_1 _proof_3).op) :
            (a : (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋0 + 1⦌, property := _proof_3 }))) →
              (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋0⦌, property := _proof_1 })))
          x) =
      (ConcreteCategory.hom (FC := TypeCat.Fun) (Y.map (δ₂ 1 _proof_1 _proof_3).op) :
          (a : (fun (X : Type u) ↦ X) (Y.obj (op { obj := ⦋0 + 1⦌, property := _proof_3 }))) →
            (fun (X : Type u) ↦ X) (Y.obj (op { obj := ⦋0⦌, property := _proof_1 })))
        (f₁ x)
hδ₀ :
  ∀ (x : X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋1⦌ _proof_2))),
    f₀
        ((ConcreteCategory.hom (FC := TypeCat.Fun) (X.map (δ₂ 0 _proof_1 _proof_3).op) :
            (a : (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋0 + 1⦌, property := _proof_3 }))) →
              (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋0⦌, property := _proof_1 })))
          x) =
      (ConcreteCategory.hom (FC := TypeCat.Fun) (Y.map (δ₂ 0 _proof_1 _proof_3).op) :
          (a : (fun (X : Type u) ↦ X) (Y.obj (op { obj := ⦋0 + 1⦌, property := _proof_3 }))) →
            (fun (X : Type u) ↦ X) (Y.obj (op { obj := ⦋0⦌, property := _proof_1 })))
        (f₁ x)
hY : Y.StrictSegal
x : X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋2⦌ _proof_4))
⊢ f₁
      ((ConcreteCategory.hom (FC := TypeCat.Fun) (X.map (δ₂ 2 _proof_2 _proof_5).op) :
          (a : (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋1 + 1⦌, property := _proof_5 }))) →
            (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋1⦌, property := _proof_2 })))
        x) =
    (ConcreteCategory.hom (FC := TypeCat.Fun) (Y.map (δ₂ 2 _proof_2 _proof_5).op) :
        (a : (fun (X : Type u) ↦ X) (Y.obj (op { obj := ⦋1 + 1⦌, property := _proof_5 }))) →
          (fun (X : Type u) ↦ X) (Y.obj (op { obj := ⦋1⦌, property := _proof_2 })))
      (f₂ f₀ f₁ hδ₁ hδ₀ hY x)

Tactic:
simp [← spineEquiv_f₂_arrow_zero f₀ f₁ hδ₁ hδ₀ hY, StrictSegal.spineEquiv,
    SimplexCategory.mkOfSucc_zero_eq_δ]

Premises used: SSet.Truncated.StrictSegal.spineEquiv, SimplexCategory.mkOfSucc_zero_eq_δ, SSet.Truncated.liftOfStrictSegal.spineEquiv_f₂_arrow_zero
-- Module: Mathlib.AlgebraicTopology.SimplicialSet.NerveAdjunction
Goal:
X : Truncated 2
C : Type u
inst : SmallCategory C
φ : X ⟶ Functor.obj (truncation 2) (nerve C)
x : X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋0⦌ _proof_1))
⊢ (descOfTruncation φ).obj (mk x) =
    (nerveEquiv : (a : ComposableArrows C 0) → C)
      ((ConcreteCategory.hom (FC := TypeCat.Fun)
              (φ.app
                (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋0⦌ _proof_1))) :
            (a : (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋0⦌, property := _proof_1 }))) →
              (fun (X : Type u) ↦ X) (((truncation 2).obj (nerve C)).obj (op { obj := ⦋0⦌, property := _proof_1 })))
          x :
        (fun (X : Type u) ↦ X)
          (Functor.obj (C := (SimplexCategory.Truncated 2)ᵒᵖ) (Functor.obj (truncation 2) (nerve C))
            (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋0⦌ _proof_1))))

Tactic:
rfl

Premises used: rfl
-- Module: Mathlib.AlgebraicTopology.SimplicialSet.NerveAdjunction
Goal:
X : Truncated 2
C : Type u
inst : SmallCategory C
φ : X ⟶ Functor.obj (truncation 2) (nerve C)
x₀ x₁ : X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋0⦌ _proof_1))
e : Edge x₀ x₁
⊢ (descOfTruncation φ).map (homMk e) =
    (nerve.homEquiv :
        (a :
            SSet.Edge
              ((ConcreteCategory.hom (φ.app (op { obj := ⦋0⦌, property := Edge._proof_1 })) :
                  (a : (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋0⦌, property := Edge._proof_1 }))) →
                    (fun (X : Type u) ↦ X)
                      (((truncation 2).obj (nerve C)).obj (op { obj := ⦋0⦌, property := Edge._proof_1 })))
                x₀)
              ((ConcreteCategory.hom (φ.app (op { obj := ⦋0⦌, property := Edge._proof_1 })) :
                  (a : (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋0⦌, property := Edge._proof_1 }))) →
                    (fun (X : Type u) ↦ X)
                      (((truncation 2).obj (nerve C)).obj (op { obj := ⦋0⦌, property := Edge._proof_1 })))
                x₁)) →
          (nerveEquiv : (a : ComposableArrows C 0) → C)
              ((ConcreteCategory.hom (φ.app (op { obj := ⦋0⦌, property := Edge._proof_1 })) :
                  (a : (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋0⦌, property := Edge._proof_1 }))) →
                    (fun (X : Type u) ↦ X)
                      (((truncation 2).obj (nerve C)).obj (op { obj := ⦋0⦌, property := Edge._proof_1 })))
                x₀) ⟶
            (nerveEquiv : (a : ComposableArrows C 0) → C)
              ((ConcreteCategory.hom (φ.app (op { obj := ⦋0⦌, property := Edge._proof_1 })) :
                  (a : (fun (X : Type u) ↦ X) (X.obj (op { obj := ⦋0⦌, property := Edge._proof_1 }))) →
                    (fun (X : Type u) ↦ X)
                      (((truncation 2).obj (nerve C)).obj (op { obj := ⦋0⦌, property := Edge._proof_1 })))
                x₁))
      (e.map φ)

Tactic:
Category.id_comp _

Premises used: CategoryTheory.Category.id_comp
-- Module: Mathlib.AlgebraicTopology.SimplicialSet.NerveAdjunction
Goal:
X : Truncated 2
C : Type u
inst : SmallCategory C
X' : Truncated 2
ψ : X ⟶ X'
φ : X' ⟶ Functor.obj (truncation 2) (nerve C)
x :
  X.obj
    (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋0⦌ OneTruncation₂._proof_1))
⊢ (descOfTruncation (ψ ≫ φ)).obj (mk x) = (mapHomotopyCategory ψ ⋙ descOfTruncation φ).obj (mk x)

Tactic:
simp
-- Module: Mathlib.AlgebraicTopology.SimplicialSet.NerveAdjunction
Goal:
X : Truncated 2
C D : Type u
inst : SmallCategory C
inst_1 : SmallCategory D
F : X.HomotopyCategory ⥤ C
y :
  Functor.obj (C := (SimplexCategory.Truncated 2)ᵒᵖ) (Functor.obj (truncation 2) (nerve C))
    (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋2⦌ _proof_4))
h' :
  ∀ {a b : X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋0⦌ ⋯))}
    (e : Edge a b), ComposableArrows.mk₁ (F.map (homMk (Edge.mk' e.edge))) = ComposableArrows.mk₁ (F.map (homMk e))
x₀ x₁ x₂ : X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋0⦌ Edge._proof_1))
e₀₁ : Edge x₀ x₁
e₁₂ : Edge x₁ x₂
e₀₂ : Edge x₀ x₂
h : e₀₁.CompStruct e₁₂ e₀₂
h₂ :
  ComposableArrows.mk₁ (F.map (homMk e₀₁)) =
    (ConcreteCategory.hom (FC := TypeCat.Fun)
          (CategoryTheory.Functor.map (Functor.obj (truncation 2) (nerve C)) (δ₂ 2 _proof_2 _proof_5).op) :
        (a : ((truncation 2).obj (nerve C)).obj (op { obj := ⦋2⦌, property := _proof_5 })) →
          ((truncation 2).obj (nerve C)).obj (op { obj := ⦋1⦌, property := _proof_2 }))
      y
h₀ :
  ComposableArrows.mk₁ (X₀ :=
      F.obj
        (mk
          ((ConcreteCategory.hom (FC := TypeCat.Fun) (X.map (δ₂ 1 Edge._proof_1 Edge._proof_3).op) :
              (a : X.obj (op { obj := ⦋1⦌, property := Edge._proof_3 })) →
                X.obj (op { obj := ⦋0⦌, property := Edge._proof_1 }))
            ((ConcreteCategory.hom (FC := TypeCat.Fun) (X.map (δ₂ 0 _proof_2 _proof_5).op) :
                  (a : X.obj (op { obj := ⦋2⦌, property := _proof_5 })) →
                    X.obj (op { obj := ⦋1⦌, property := _proof_2 }))
                h.simplex :
              X.obj
                (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋1⦌ _proof_2))))))
      (F.map
        (homMk
          (Edge.mk'
            ((ConcreteCategory.hom (FC := TypeCat.Fun) (X.map (δ₂ 0 _proof_2 _proof_5).op) :
                (a : X.obj (op { obj := ⦋2⦌, property := _proof_5 })) → X.obj (op { obj := ⦋1⦌, property := _proof_2 }))
              h.simplex)))) =
    (ConcreteCategory.hom (FC := TypeCat.Fun)
          (CategoryTheory.Functor.map (Functor.obj (truncation 2) (nerve C)) (δ₂ 0 _proof_2 _proof_5).op) :
        (a : ((truncation 2).obj (nerve C)).obj (op { obj := ⦋2⦌, property := _proof_5 })) →
          ((truncation 2).obj (nerve C)).obj (op { obj := ⦋1⦌, property := _proof_2 }))
      y
⊢ ComposableArrows.mk₁ (F.map (homMk e₁₂)) =
    (ConcreteCategory.hom (FC := TypeCat.Fun)
          (CategoryTheory.Functor.map (Functor.obj (truncation 2) (nerve C)) (δ₂ 0 _proof_2 _proof_5).op) :
        (a : ((truncation 2).obj (nerve C)).obj (op { obj := ⦋2⦌, property := _proof_5 })) →
          ((truncation 2).obj (nerve C)).obj (op { obj := ⦋1⦌, property := _proof_2 }))
      y

Tactic:
rw [h.d₀, h'] at h₀

Premises used: SSet.Truncated.Edge.CompStruct.d₀
-- Module: Mathlib.AlgebraicTopology.SimplicialSet.NerveAdjunction
Goal:
X : Truncated 2
C D : Type u
inst : SmallCategory C
inst_1 : SmallCategory D
F : X.HomotopyCategory ⥤ C
y :
  Functor.obj (C := (SimplexCategory.Truncated 2)ᵒᵖ) (Functor.obj (truncation 2) (nerve C))
    (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋2⦌ _proof_4))
h' :
  ∀ {a b : X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋0⦌ ⋯))}
    (e : Edge a b), ComposableArrows.mk₁ (F.map (homMk (Edge.mk' e.edge))) = ComposableArrows.mk₁ (F.map (homMk e))
x₀ x₁ x₂ : X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋0⦌ Edge._proof_1))
e₀₁ : Edge x₀ x₁
e₁₂ : Edge x₁ x₂
e₀₂ : Edge x₀ x₂
h : e₀₁.CompStruct e₁₂ e₀₂
h₂ :
  ComposableArrows.mk₁ (F.map (homMk e₀₁)) =
    (ConcreteCategory.hom (FC := TypeCat.Fun)
          (CategoryTheory.Functor.map (Functor.obj (truncation 2) (nerve C)) (δ₂ 2 _proof_2 _proof_5).op) :
        (a : ((truncation 2).obj (nerve C)).obj (op { obj := ⦋2⦌, property := _proof_5 })) →
          ((truncation 2).obj (nerve C)).obj (op { obj := ⦋1⦌, property := _proof_2 }))
      y
h₀ :
  ComposableArrows.mk₁ (F.map (homMk e₁₂)) =
    (ConcreteCategory.hom (FC := TypeCat.Fun)
          (CategoryTheory.Functor.map (Functor.obj (truncation 2) (nerve C)) (δ₂ 0 _proof_2 _proof_5).op) :
        (a : ((truncation 2).obj (nerve C)).obj (op { obj := ⦋2⦌, property := _proof_5 })) →
          ((truncation 2).obj (nerve C)).obj (op { obj := ⦋1⦌, property := _proof_2 }))
      y
⊢ ComposableArrows.mk₂ (F.map (homMk e₀₁)) (F.map (homMk e₁₂)) = y

Tactic:
(spine_bijective (X := (truncation 2).obj (nerve C)) _ _).injective ?_

Premises used: SSet.truncation, Function.Bijective.injective, CategoryTheory.nerve, SSet.Truncated.IsStrictSegal.spine_bijective, OfNat.ofNat, CategoryTheory.Functor.obj
-- Module: Mathlib.AlgebraicTopology.SimplicialSet.NerveAdjunction
Goal:
X : Truncated 2
C D : Type u
inst : SmallCategory C
inst_1 : SmallCategory D
F : X.HomotopyCategory ⥤ C
y :
  Functor.obj (C := (SimplexCategory.Truncated 2)ᵒᵖ) (Functor.obj (truncation 2) (nerve C))
    (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋2⦌ _proof_4))
h' :
  ∀ {a b : X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋0⦌ ⋯))}
    (e : Edge a b), ComposableArrows.mk₁ (F.map (homMk (Edge.mk' e.edge))) = ComposableArrows.mk₁ (F.map (homMk e))
x₀ x₁ x₂ : X.obj (op (ObjectProperty.FullSubcategory.mk (P := fun (a : SimplexCategory) ↦ a.len ≤ 2) ⦋0⦌ Edge._proof_1))
e₀₁ : Edge x₀ x₁
e₁₂ : Edge x₁ x₂
e₀₂ : Edge x₀ x₂
h : e₀₁.CompStruct e₁₂ e₀₂
h₂ :
  ComposableArrows.mk₁ (F.map (homMk e₀₁)) =
    (ConcreteCategory.hom (FC := TypeCat.Fun)
          (CategoryTheory.Functor.map (Functor.obj (truncation 2) (nerve C)) (δ₂ 2 _proof_2 _proof_5).op) :
        (a : ((truncation 2).obj (nerve C)).obj (op { obj := ⦋2⦌, property := _proof_5 })) →
          ((truncation 2).obj (nerve C)).obj (op { obj := ⦋1⦌, property := _proof_2 }))
      y
h₀ :
  ComposableArrows.mk₁ (F.map (homMk e₁₂)) =
    (ConcreteCategory.hom (FC := TypeCat.Fun)
          (CategoryTheory.Functor.map (Functor.obj (truncation 2) (nerve C)) (δ₂ 0 _proof_2 _proof_5).op) :
        (a : ((truncation 2).obj (nerve C)).obj (op { obj := ⦋2⦌, property := _proof_5 })) →
          ((truncation 2).obj (nerve C)).obj (op { obj := ⦋1⦌, property := _proof_2 }))
      y
refine :
  spine (Functor.obj (truncation 2) (nerve C)) 2 _proof_4
      (ComposableArrows.mk₂ (F.map (homMk e₀₁)) (F.map (homMk e₁₂))) =
    spine (Functor.obj (truncation 2) (nerve C)) 2 _proof_4 y
⊢ ComposableArrows.mk₂ (F.map (homMk e₀₁)) (F.map (homMk e₁₂)) = y

Tactic:
refine (spine_bijective (X := (truncation 2).obj (nerve C)) _ _).injective ?_

Premises used: SSet.truncation, Function.Bijective.injective, CategoryTheory.nerve, SSet.Truncated.IsStrictSegal.spine_bijective, OfNat.ofNat, CategoryTheory.Functor.obj