awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Lean 4 proof step from Mathlib.AlgebraicTopology.SimplicialSet.StdSimplex (goal)
Goal:
n m : ℕ
⊢ Function.Bijective (β :=
    { x : Finset (Fin (n + 1)) //
      Membership.mem (γ := Set (Finset (Fin (n + 1)))) {S : Finset (Fin (n + 1)) | #S = m + 1} x })
    fun (x : { x : Δ[n] _⦋m⦌ // Membership.mem (γ := Set (Δ[n] _⦋m⦌)) (Δ[n].nonDegenerate m) x }) ↦
    match (motive :=
      { x : Δ[n] _⦋m⦌ // Membership.mem (γ := Set (Δ[n] _⦋m⦌)) (Δ[n].nonDegenerate m) x } →
        { x : Finset (Fin (n + 1)) //
          Membership.mem (γ := Set (Finset (Fin (n + 1)))) {S : Finset (Fin (n + 1)) | #S = m + 1} x })
      x with
    | ⟨x, hx⟩ =>
      Subtype.mk (p := fun (x : Finset (Fin (n + 1))) ↦
        Membership.mem (γ := Set (Finset (Fin (n + 1)))) {S : Finset (Fin (n + 1)) | #S = m + 1} x)
        (Finset.image (α := Fin ((unop (op ⦋m⦌)).len + 1))
          (⇑(Hom.toOrderHom
                (((objEquiv : Δ[n] _⦋m⦌ ≃ (unop (op ⦋m⦌) ⟶ ⦋n⦌)) : (a : Δ[n] _⦋m⦌) → unop (op ⦋m⦌) ⟶ ⦋n⦌) x)) :
            (a : Fin ((unop (op ⦋m⦌)).len + 1)) → Fin (⦋n⦌.len + 1))
          univ)
        ⋯
have left : Function.Injective (β :=
  { x : Finset (Fin (n + 1)) //
    Membership.mem (γ := Set (Finset (Fin (n + 1)))) {S : Finset (Fin (n + 1)) | #S = m + 1} x })
  fun
    (x :
      { x : @Functor.obj SimplexCategory smallCategory SSet Functor.category stdSimplex ⦋n⦌ _⦋m⦌ //
        Membership.mem (γ := Set (@Functor.obj SimplexCategory smallCategory SSet Functor.category stdSimplex ⦋n⦌ _⦋m⦌))
          (nonDegenerate (@Functor.obj SimplexCategory smallCategory SSet Functor.category stdSimplex ⦋n⦌) m) x }) ↦
  match (motive :=
    { x : @Functor.obj SimplexCategory smallCategory SSet Functor.category stdSimplex ⦋n⦌ _⦋m⦌ //
        Membership.mem (γ := Set (@Functor.obj SimplexCategory smallCategory SSet Functor.category stdSimplex ⦋n⦌ _⦋m⦌))
          (nonDegenerate (@Functor.obj SimplexCategory smallCategory SSet Functor.category stdSimplex ⦋n⦌) m) x } →
      { x : Finset (Fin (n + 1)) //
        Membership.mem (γ := Set (Finset (Fin (n + 1)))) {S : Finset (Fin (n + 1)) | #S = m + 1} x })
    x with
  | ⟨x, hx⟩ =>
    Subtype.mk (p := fun (x : Finset (Fin (n + 1))) ↦
      Membership.mem (γ := Set (Finset (Fin (n + 1)))) {S : Finset (Fin (n + 1)) | #S = m + 1} x)
      (Finset.image (α := Fin ((unop (op ⦋m⦌)).len + 1))
        (⇑(Hom.toOrderHom
              (((objEquiv : Δ[n] _⦋m⦌ ≃ (unop (op ⦋m⦌) ⟶ ⦋n⦌)) : (a : Δ[n] _⦋m⦌) → unop (op ⦋m⦌) ⟶ ⦋n⦌) x)) :
          (a : Fin ((unop (op ⦋m⦌)).len + 1)) → Fin (⦋n⦌.len + 1))
        univ)
      sorry
Tactic: constructor
-- Lean 4 proof step from Mathlib.AlgebraicTopology.SimplicialSet.StdSimplex (goal)
Goal:
n m : ℕ
f₁ : unop (op ⦋m⦌) ⟶ ⦋n⦌
h₁_1 :
  Membership.mem.{u, u} (α := Δ[n] _⦋m⦌) (γ := Set (Δ[n] _⦋m⦌)) (Δ[n].nonDegenerate m)
    ((Equiv.symm objEquiv : (a : unop (op ⦋m⦌) ⟶ ⦋n⦌) → Δ[n] _⦋m⦌) f₁ : Δ[n] _⦋m⦌)
f₂ : unop (op ⦋m⦌) ⟶ ⦋n⦌
h₂_1 :
  Membership.mem.{u, u} (α := Δ[n] _⦋m⦌) (γ := Set (Δ[n] _⦋m⦌)) (Δ[n].nonDegenerate m)
    ((Equiv.symm objEquiv : (a : unop (op ⦋m⦌) ⟶ ⦋n⦌) → Δ[n] _⦋m⦌) f₂ : Δ[n] _⦋m⦌)
h₁ : Function.Injective (α := Fin (m + 1)) (β := Fin (n + 1)) (⇑(Hom.toOrderHom f₁) : (a : Fin (m + 1)) → Fin (n + 1))
h₂ : Function.Injective (α := Fin (m + 1)) (β := Fin (n + 1)) (⇑(Hom.toOrderHom f₂) : (a : Fin (m + 1)) → Fin (n + 1))
h₃ :
  Eq (α := Finset (Fin (n + 1)))
    (Finset.image (α := Fin (m + 1)) (⇑(Hom.toOrderHom f₁) : (a : Fin (m + 1)) → Fin (n + 1)) univ)
    (Finset.image (α := Fin (m + 1)) (⇑(Hom.toOrderHom f₂) : (a : Fin (m + 1)) → Fin (n + 1)) univ)
⊢ f₁ = f₂
have left : Hom.toOrderHom f₁ = Hom.toOrderHom f₂
Tactic: apply SimplexCategory.Hom.ext
-- Lean 4 proof step from Mathlib.AlgebraicTopology.SimplicialSet.StdSimplex (goal)
Goal:
n m : ℕ
f₁ : unop (op ⦋m⦌) ⟶ ⦋n⦌
h₁_1 :
  Membership.mem.{u, u} (α := Δ[n] _⦋m⦌) (γ := Set (Δ[n] _⦋m⦌)) (Δ[n].nonDegenerate m)
    ((Equiv.symm objEquiv : (a : unop (op ⦋m⦌) ⟶ ⦋n⦌) → Δ[n] _⦋m⦌) f₁ : Δ[n] _⦋m⦌)
f₂ : unop (op ⦋m⦌) ⟶ ⦋n⦌
h₂_1 :
  Membership.mem.{u, u} (α := Δ[n] _⦋m⦌) (γ := Set (Δ[n] _⦋m⦌)) (Δ[n].nonDegenerate m)
    ((Equiv.symm objEquiv : (a : unop (op ⦋m⦌) ⟶ ⦋n⦌) → Δ[n] _⦋m⦌) f₂ : Δ[n] _⦋m⦌)
h₁ : Function.Injective (α := Fin (m + 1)) (β := Fin (n + 1)) (⇑(Hom.toOrderHom f₁) : (a : Fin (m + 1)) → Fin (n + 1))
h₂ : Function.Injective (α := Fin (m + 1)) (β := Fin (n + 1)) (⇑(Hom.toOrderHom f₂) : (a : Fin (m + 1)) → Fin (n + 1))
h₃ :
  Eq (α := Finset (Fin (n + 1)))
    (Finset.image (α := Fin (m + 1)) (⇑(Hom.toOrderHom f₁) : (a : Fin (m + 1)) → Fin (n + 1)) univ)
    (Finset.image (α := Fin (m + 1)) (⇑(Hom.toOrderHom f₂) : (a : Fin (m + 1)) → Fin (n + 1)) univ)
⊢ Hom.toOrderHom f₁ = Hom.toOrderHom f₂
have left : Eq (α := Set (Fin (n + 1))) (Set.range (ι := Fin (m + 1)) (⇑(Hom.toOrderHom f₁) : (a : Fin (m + 1)) → Fin (n + 1)))
  (Set.range (ι := Fin (m + 1)) (⇑(Hom.toOrderHom f₂) : (a : Fin (m + 1)) → Fin (n + 1)))
Tactic: rw [← OrderHom.range_eq_iff h₁ h₂]
-- Lean 4 proof step from Mathlib.AlgebraicTopology.SimplicialSet.StdSimplex (goal)
Goal:
n m : ℕ
f₁ : unop (op ⦋m⦌) ⟶ ⦋n⦌
h₁_1 :
  Membership.mem.{u, u} (α := Δ[n] _⦋m⦌) (γ := Set (Δ[n] _⦋m⦌)) (Δ[n].nonDegenerate m)
    ((Equiv.symm objEquiv : (a : unop (op ⦋m⦌) ⟶ ⦋n⦌) → Δ[n] _⦋m⦌) f₁ : Δ[n] _⦋m⦌)
f₂ : unop (op ⦋m⦌) ⟶ ⦋n⦌
h₂_1 :
  Membership.mem.{u, u} (α := Δ[n] _⦋m⦌) (γ := Set (Δ[n] _⦋m⦌)) (Δ[n].nonDegenerate m)
    ((Equiv.symm objEquiv : (a : unop (op ⦋m⦌) ⟶ ⦋n⦌) → Δ[n] _⦋m⦌) f₂ : Δ[n] _⦋m⦌)
h₁ : Function.Injective (α := Fin (m + 1)) (β := Fin (n + 1)) (⇑(Hom.toOrderHom f₁) : (a : Fin (m + 1)) → Fin (n + 1))
h₂ : Function.Injective (α := Fin (m + 1)) (β := Fin (n + 1)) (⇑(Hom.toOrderHom f₂) : (a : Fin (m + 1)) → Fin (n + 1))
h₃ :
  Eq (α := Finset (Fin (n + 1)))
    (Finset.image (α := Fin (m + 1)) (⇑(Hom.toOrderHom f₁) : (a : Fin (m + 1)) → Fin (n + 1)) univ)
    (Finset.image (α := Fin (m + 1)) (⇑(Hom.toOrderHom f₂) : (a : Fin (m + 1)) → Fin (n + 1)) univ)
⊢ Eq (α := Set (Fin (n + 1))) (Set.range (ι := Fin (m + 1)) (⇑(Hom.toOrderHom f₁) : (a : Fin (m + 1)) → Fin (n + 1)))
    (Set.range (ι := Fin (m + 1)) (⇑(Hom.toOrderHom f₂) : (a : Fin (m + 1)) → Fin (n + 1)))
have left : ∀ (x : Fin (n + 1)),
  Membership.mem (γ := Set (Fin (n + 1)))
      (Set.range (ι := Fin (m + 1)) (⇑(Hom.toOrderHom f₁) : (a : Fin (m + 1)) → Fin (n + 1))) x ↔
    Membership.mem (γ := Set (Fin (n + 1)))
      (Set.range (ι := Fin (m + 1)) (⇑(Hom.toOrderHom f₂) : (a : Fin (m + 1)) → Fin (n + 1))) x
Tactic: ext x
-- Lean 4 proof step from Mathlib.AlgebraicTopology.SimplicialSet.StdSimplex (goal)
Goal:
n m : ℕ
S : Finset (Fin (n + 1))
hS : #S = m + 1
e : Fin (m + 1) ≃o ↥S := monoEquivOfFin ↥S ⋯
⊢ ∃ (a : { x : Δ[n] _⦋m⦌ // Membership.mem (γ := Set (Δ[n] _⦋m⦌)) (Δ[n].nonDegenerate m) x }),
    Eq (α :=
      { x : Finset (Fin (n + 1)) //
        Membership.mem (γ := Set (Finset (Fin (n + 1)))) {S : Finset (Fin (n + 1)) | #S = m + 1} x })
      ((fun (x : { x : Δ[n] _⦋m⦌ // Membership.mem (γ := Set (Δ[n] _⦋m⦌)) (Δ[n].nonDegenerate m) x }) ↦
          (match (motive :=
              { x : Δ[n] _⦋m⦌ // Membership.mem (γ := Set (Δ[n] _⦋m⦌)) (Δ[n].nonDegenerate m) x } →
                { x : Finset (Fin (n + 1)) //
                  Membership.mem (γ := Set (Finset (Fin (n + 1)))) {S : Finset (Fin (n + 1)) | #S = m + 1} x })
              x with
            | ⟨x, hx⟩ =>
              Subtype.mk (p := fun (x : Finset (Fin (n + 1))) ↦
                Membership.mem (γ := Set (Finset (Fin (n + 1)))) {S : Finset (Fin (n + 1)) | #S = m + 1} x)
                (Finset.image (α := Fin ((unop (op ⦋m⦌)).len + 1))
                  (⇑(Hom.toOrderHom
                        (((objEquiv : Δ[n] _⦋m⦌ ≃ (unop (op ⦋m⦌) ⟶ ⦋n⦌)) : (a : Δ[n] _⦋m⦌) → unop (op ⦋m⦌) ⟶ ⦋n⦌) x)) :
                    (a : Fin ((unop (op ⦋m⦌)).len + 1)) → Fin (⦋n⦌.len + 1))
                  univ)
                ⋯ :
            { x : Finset (Fin (n + 1)) //
              Membership.mem (γ := Set (Finset (Fin (n + 1)))) {S : Finset (Fin (n + 1)) | #S = m + 1} x }))
        a)
      (Subtype.mk (p := fun (x : Finset (Fin (n + 1))) ↦
        Membership.mem (γ := Set (Finset (Fin (n + 1)))) {S : Finset (Fin (n + 1)) | #S = m + 1} x) S hS)
have right : Membership.mem (γ := Set (Δ[n] _⦋m⦌)) (Δ[n].nonDegenerate m)
  (objMk (OrderHom.comp (OrderHom.Subtype.val fun (x : Fin (n + 1)) ↦ x ∈ S) e.toOrderEmbedding.toOrderHom))
Tactic: refine ⟨⟨objMk ((OrderHom.Subtype.val _).comp e.toOrderEmbedding.toOrderHom), ?_⟩, ?_⟩
-- Lean 4 proof step from Mathlib.AlgebraicTopology.SimplicialSet.StdSimplex (goal)
Goal:
n m : ℕ
S : Finset (Fin (n + 1))
hS : #S = m + 1
e : Fin (m + 1) ≃o ↥S := monoEquivOfFin ↥S ⋯
⊢ Membership.mem (γ := Set (Δ[n] _⦋m⦌)) (Δ[n].nonDegenerate m)
    (objMk (OrderHom.comp (OrderHom.Subtype.val fun (x : Fin (n + 1)) ↦ x ∈ S) e.toOrderEmbedding.toOrderHom))
have right : Function.Injective (α := Fin ((unop (op ⦋m⦌)).len + 1)) (β := Fin (⦋n⦌.len + 1))
  (⇑(Hom.toOrderHom
        (((objEquiv : Δ[n] _⦋m⦌ ≃ (unop (op ⦋m⦌) ⟶ ⦋n⦌)) : (a : Δ[n] _⦋m⦌) → unop (op ⦋m⦌) ⟶ ⦋n⦌)
          (objMk (OrderHom.comp (OrderHom.Subtype.val fun (x : Fin (n + 1)) ↦ x ∈ S) e.toOrderEmbedding.toOrderHom)))) :
    (a : Fin ((unop (op ⦋m⦌)).len + 1)) → Fin (⦋n⦌.len + 1))
Tactic: rw [mem_nonDegenerate_iff_mono, SimplexCategory.mono_iff_injective]
-- Lean 4 proof step from Mathlib.AlgebraicTopology.SimplicialSet.StdSimplex (goal)
Goal:
n d : ℕ
x : (↑(Δ[n].nonDegenerate d) : Type u)
j : Fin (n + 1)
⊢ Membership.mem (γ := Finset (Fin (n + 1)))
      (↑(((nonDegenerateEquiv' :
                (↑(Δ[n].nonDegenerate d) : Type u) ≃ (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type)) :
              (a : (↑(Δ[n].nonDegenerate d) : Type u)) → (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type))
            x) :
        Finset (Fin (n + 1)))
      j ↔
    ∃ (i : Fin (d + 1)), ((↑x : Δ[n] _⦋d⦌) : (a : Fin (d + 1)) → Fin (n + 1)) i = j
have simp : Membership.mem (γ := Finset (Fin (n + 1)))
    (↑(((nonDegenerateEquiv' : (↑(Δ[n].nonDegenerate d) : Type u) ≃ (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type)) :
            (a : (↑(Δ[n].nonDegenerate d) : Type u)) → { x : Finset (Fin (n + 1)) // #x = d + 1 })
          x) :
      Finset (Fin (n + 1)))
    j ↔
  ∃ (i : Fin (d + 1)), ((↑x : Δ[n] _⦋d⦌) : (a : Fin (d + 1)) → Fin (n + 1)) i = j
Tactic: simp only [Set.mem_setOf_eq, Set.coe_setOf]
-- Lean 4 proof step from Mathlib.AlgebraicTopology.SimplicialSet.StdSimplex (goal)
Goal:
n d : ℕ
x : (↑(Δ[n].nonDegenerate d) : Type u)
j : Fin (n + 1)
⊢ Membership.mem (γ := Finset (Fin (n + 1)))
      (↑(((nonDegenerateEquiv' :
                (↑(Δ[n].nonDegenerate d) : Type u) ≃ (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type)) :
              (a : (↑(Δ[n].nonDegenerate d) : Type u)) → { x : Finset (Fin (n + 1)) // #x = d + 1 })
            x) :
        Finset (Fin (n + 1)))
      j ↔
    ∃ (i : Fin (d + 1)), ((↑x : Δ[n] _⦋d⦌) : (a : Fin (d + 1)) → Fin (n + 1)) i = j
have dsimp : Membership.mem (γ := Finset (Fin (n + 1)))
    (Finset.image (α := Fin (d + 1))
      (⇑(Hom.toOrderHom
            (((objEquiv : Δ[n] _⦋d⦌ ≃ (unop (op ⦋d⦌) ⟶ ⦋n⦌)) : (a : Δ[n] _⦋d⦌) → ⦋d⦌ ⟶ ⦋n⦌) (↑x : Δ[n] _⦋d⦌))) :
        (a : Fin (d + 1)) → Fin (n + 1))
      univ)
    j ↔
  ∃ (i : Fin (d + 1)), ((↑x : Δ[n] _⦋d⦌) : (a : Fin (d + 1)) → Fin (n + 1)) i = j
Tactic: dsimp [nonDegenerateEquiv']
-- Lean 4 proof step from Mathlib.AlgebraicTopology.SimplicialSet.StdSimplex (goal)
Goal:
n d : ℕ
x : (↑(Δ[n].nonDegenerate d) : Type u)
⊢ Function.Bijective (β :=
    ↥(↑(((nonDegenerateEquiv' :
                (↑(Δ[n].nonDegenerate d) : Type u) ≃ (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type)) :
              (a : (↑(Δ[n].nonDegenerate d) : Type u)) → (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type))
            x) :
        Finset (Fin (n + 1))))
    fun (i : Fin (d + 1)) ↦
    Subtype.mk (p := fun (x_1 : Fin (n + 1)) ↦
      Membership.mem (γ := Finset (Fin (n + 1)))
        (↑(((nonDegenerateEquiv' :
                  (↑(Δ[n].nonDegenerate d) : Type u) ≃ (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type)) :
                (a : (↑(Δ[n].nonDegenerate d) : Type u)) → (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type))
              x) :
          Finset (Fin (n + 1)))
        x_1)
      (((↑x : Δ[n] _⦋d⦌) : (a : Fin (d + 1)) → Fin (n + 1)) i) ⋯
have left : Function.Injective (β :=
  ↥(↑(((nonDegenerateEquiv' : (↑(Δ[n].nonDegenerate d) : Type u) ≃ (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type)) :
            (a : (↑(Δ[n].nonDegenerate d) : Type u)) → (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type))
          x) :
      Finset (Fin (n + 1))))
  fun (i : Fin (d + 1)) ↦
  Subtype.mk (p := fun (x_1 : Fin (n + 1)) ↦
    Membership.mem (γ := Finset (Fin (n + 1)))
      (↑(((nonDegenerateEquiv' :
                (↑(Δ[n].nonDegenerate d) : Type u) ≃ (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type)) :
              (a : (↑(Δ[n].nonDegenerate d) : Type u)) → (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type))
            x) :
        Finset (Fin (n + 1)))
      x_1)
    (((↑x : Δ[n] _⦋d⦌) : (a : Fin (d + 1)) → Fin (n + 1)) i) sorry
Tactic: constructor
-- Lean 4 proof step from Mathlib.AlgebraicTopology.SimplicialSet.StdSimplex (goal)
Goal:
n d : ℕ
x : (↑(Δ[n].nonDegenerate d) : Type u)
left :
  Function.Injective (β :=
    ↥(↑(((nonDegenerateEquiv' :
                (↑(Δ[n].nonDegenerate d) : Type u) ≃ (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type)) :
              (a : (↑(Δ[n].nonDegenerate d) : Type u)) → (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type))
            x) :
        Finset (Fin (n + 1))))
    fun (i : Fin (d + 1)) ↦
    Subtype.mk (p := fun (x_1 : Fin (n + 1)) ↦
      Membership.mem (γ := Finset (Fin (n + 1)))
        (↑(((nonDegenerateEquiv' :
                  (↑(Δ[n].nonDegenerate d) : Type u) ≃ (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type)) :
                (a : (↑(Δ[n].nonDegenerate d) : Type u)) → (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type))
              x) :
          Finset (Fin (n + 1)))
        x_1)
      (((↑x : Δ[n] _⦋d⦌) : (a : Fin (d + 1)) → Fin (n + 1)) i) ⋯
⊢ Function.Bijective (β :=
    ↥(↑(((nonDegenerateEquiv' :
                (↑(Δ[n].nonDegenerate d) : Type u) ≃ (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type)) :
              (a : (↑(Δ[n].nonDegenerate d) : Type u)) → (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type))
            x) :
        Finset (Fin (n + 1))))
    fun (i : Fin (d + 1)) ↦
    Subtype.mk (p := fun (x_1 : Fin (n + 1)) ↦
      Membership.mem (γ := Finset (Fin (n + 1)))
        (↑(((nonDegenerateEquiv' :
                  (↑(Δ[n].nonDegenerate d) : Type u) ≃ (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type)) :
                (a : (↑(Δ[n].nonDegenerate d) : Type u)) → (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type))
              x) :
          Finset (Fin (n + 1)))
        x_1)
      (((↑x : Δ[n] _⦋d⦌) : (a : Fin (d + 1)) → Fin (n + 1)) i) ⋯
have right : Function.Surjective (β :=
  ↥(↑(((nonDegenerateEquiv' : (↑(Δ[n].nonDegenerate d) : Type u) ≃ (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type)) :
            (a : (↑(Δ[n].nonDegenerate d) : Type u)) → (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type))
          x) :
      Finset (Fin (n + 1))))
  fun (i : Fin (d + 1)) ↦
  Subtype.mk (p := fun (x_1 : Fin (n + 1)) ↦
    Membership.mem (γ := Finset (Fin (n + 1)))
      (↑(((nonDegenerateEquiv' :
                (↑(Δ[n].nonDegenerate d) : Type u) ≃ (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type)) :
              (a : (↑(Δ[n].nonDegenerate d) : Type u)) → (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type))
            x) :
        Finset (Fin (n + 1)))
      x_1)
    (((↑x : Δ[n] _⦋d⦌) : (a : Fin (d + 1)) → Fin (n + 1)) i) sorry
Tactic: constructor
-- Lean 4 proof step from Mathlib.AlgebraicTopology.SimplicialSet.StdSimplex (hypothesis)
Goal:
n d : ℕ
x : (↑(Δ[n].nonDegenerate d) : Type u)
⊢ Function.Injective (β :=
    ↥(↑(((nonDegenerateEquiv' :
                (↑(Δ[n].nonDegenerate d) : Type u) ≃ (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type)) :
              (a : (↑(Δ[n].nonDegenerate d) : Type u)) → (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type))
            x) :
        Finset (Fin (n + 1))))
    fun (i : Fin (d + 1)) ↦
    Subtype.mk (p := fun (x_1 : Fin (n + 1)) ↦
      Membership.mem (γ := Finset (Fin (n + 1)))
        (↑(((nonDegenerateEquiv' :
                  (↑(Δ[n].nonDegenerate d) : Type u) ≃ (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type)) :
                (a : (↑(Δ[n].nonDegenerate d) : Type u)) → (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type))
              x) :
          Finset (Fin (n + 1)))
        x_1)
      (((↑x : Δ[n] _⦋d⦌) : (a : Fin (d + 1)) → Fin (n + 1)) i) ⋯
have this : Mono (C := SimplexCategory) (X := unop (op ⦋d⦌)) (Y := ⦋n⦌)
  (((objEquiv : Δ[n] _⦋d⦌ ≃ (unop (op ⦋d⦌) ⟶ ⦋n⦌)) : (a : Δ[n] _⦋d⦌) → unop (op ⦋d⦌) ⟶ ⦋n⦌) (↑x : Δ[n] _⦋d⦌))
Tactic: have := (mem_nonDegenerate_iff_mono x.val).1 x.property
-- Lean 4 proof step from Mathlib.AlgebraicTopology.SimplicialSet.StdSimplex (hypothesis)
Goal:
n d : ℕ
x : (↑(Δ[n].nonDegenerate d) : Type u)
this :
  Mono (C := SimplexCategory) (X := unop (op ⦋d⦌)) (Y := ⦋n⦌)
    (((objEquiv : Δ[n] _⦋d⦌ ≃ (unop (op ⦋d⦌) ⟶ ⦋n⦌)) : (a : Δ[n] _⦋d⦌) → unop (op ⦋d⦌) ⟶ ⦋n⦌) (↑x : Δ[n] _⦋d⦌))
⊢ Function.Injective (β :=
    ↥(↑(((nonDegenerateEquiv' :
                (↑(Δ[n].nonDegenerate d) : Type u) ≃ (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type)) :
              (a : (↑(Δ[n].nonDegenerate d) : Type u)) → (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type))
            x) :
        Finset (Fin (n + 1))))
    fun (i : Fin (d + 1)) ↦
    Subtype.mk (p := fun (x_1 : Fin (n + 1)) ↦
      Membership.mem (γ := Finset (Fin (n + 1)))
        (↑(((nonDegenerateEquiv' :
                  (↑(Δ[n].nonDegenerate d) : Type u) ≃ (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type)) :
                (a : (↑(Δ[n].nonDegenerate d) : Type u)) → (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type))
              x) :
          Finset (Fin (n + 1)))
        x_1)
      (((↑x : Δ[n] _⦋d⦌) : (a : Fin (d + 1)) → Fin (n + 1)) i) ⋯
have this₁ : Function.Injective (α := Fin ((unop (op ⦋d⦌)).len + 1)) (β := Fin (⦋n⦌.len + 1))
  (⇑(Hom.toOrderHom
        (((objEquiv : Δ[n] _⦋d⦌ ≃ (unop (op ⦋d⦌) ⟶ ⦋n⦌)) : (a : Δ[n] _⦋d⦌) → unop (op ⦋d⦌) ⟶ ⦋n⦌) (↑x : Δ[n] _⦋d⦌))) :
    (a : Fin ((unop (op ⦋d⦌)).len + 1)) → Fin (⦋n⦌.len + 1))
Tactic: rw [SimplexCategory.mono_iff_injective] at this
Cleared hypotheses: this
-- Lean 4 proof step from Mathlib.AlgebraicTopology.SimplicialSet.StdSimplex (hypothesis)
Goal:
n d : ℕ
x : (↑(Δ[n].nonDegenerate d) : Type u)
j : Fin (n + 1)
hj :
  Membership.mem (γ := Finset (Fin (n + 1)))
    (↑(((nonDegenerateEquiv' : (↑(Δ[n].nonDegenerate d) : Type u) ≃ (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type)) :
            (a : (↑(Δ[n].nonDegenerate d) : Type u)) → (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type))
          x) :
      Finset (Fin (n + 1)))
    j
⊢ ∃ (a : Fin (d + 1)),
    (fun (i : Fin (d + 1)) ↦
          (Subtype.mk (p := fun (x_1 : Fin (n + 1)) ↦
              Membership.mem (γ := Finset (Fin (n + 1)))
                (↑(((nonDegenerateEquiv' :
                          (↑(Δ[n].nonDegenerate d) : Type u) ≃ (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type)) :
                        (a : (↑(Δ[n].nonDegenerate d) : Type u)) → (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type))
                      x) :
                  Finset (Fin (n + 1)))
                x_1)
              (((↑x : Δ[n] _⦋d⦌) : (a : Fin (d + 1)) → Fin (n + 1)) i) ⋯ :
            ↥(↑(((nonDegenerateEquiv' :
                        (↑(Δ[n].nonDegenerate d) : Type u) ≃ (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type)) :
                      (a : (↑(Δ[n].nonDegenerate d) : Type u)) → (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type))
                    x) :
                Finset (Fin (n + 1)))))
        a =
      Subtype.mk (p := fun (x_1 : Fin (n + 1)) ↦
        Membership.mem (γ := Finset (Fin (n + 1)))
          (↑(((nonDegenerateEquiv' :
                    (↑(Δ[n].nonDegenerate d) : Type u) ≃ (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type)) :
                  (a : (↑(Δ[n].nonDegenerate d) : Type u)) → (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type))
                x) :
            Finset (Fin (n + 1)))
          x_1)
        j hj
have hj₁ : ∃ (i : Fin (d + 1)), ((↑x : Δ[n] _⦋d⦌) : (a : Fin (d + 1)) → Fin (n + 1)) i = j
Tactic: rw [nonDegenerateEquiv'_iff] at hj
-- Lean 4 proof step from Mathlib.AlgebraicTopology.SimplicialSet.StdSimplex (goal)
Goal:
n d : ℕ
x : (↑(Δ[n].nonDegenerate d) : Type u)
this :
  Function.Injective (α := Fin ((unop (op ⦋d⦌)).len + 1)) (β := Fin (⦋n⦌.len + 1))
    (⇑(Hom.toOrderHom
          (((objEquiv : Δ[n] _⦋d⦌ ≃ (unop (op ⦋d⦌) ⟶ ⦋n⦌)) : (a : Δ[n] _⦋d⦌) → unop (op ⦋d⦌) ⟶ ⦋n⦌) (↑x : Δ[n] _⦋d⦌))) :
      (a : Fin ((unop (op ⦋d⦌)).len + 1)) → Fin (⦋n⦌.len + 1))
a b : Fin (d + 1)
⊢ LE.le (α :=
      ↥(↑(((nonDegenerateEquiv' :
                  (↑(Δ[n].nonDegenerate d) : Type u) ≃ (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type)) :
                (a : (↑(Δ[n].nonDegenerate d) : Type u)) → { x : Finset (Fin (n + 1)) // #x = d + 1 })
              x) :
          Finset (Fin (n + 1))))
      (Subtype.mk (p := fun (x_1 : Fin (n + 1)) ↦
          Membership.mem (γ := Finset (Fin (n + 1)))
            (↑(((nonDegenerateEquiv' :
                      (↑(Δ[n].nonDegenerate d) : Type u) ≃ (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type)) :
                    (a : (↑(Δ[n].nonDegenerate d) : Type u)) → { x : Finset (Fin (n + 1)) // #x = d + 1 })
                  x) :
              Finset (Fin (n + 1)))
            x_1)
          (((↑x : Δ[n] _⦋d⦌) : (a : Fin (d + 1)) → Fin (n + 1)) a) ⋯ :
        ↥(↑(((nonDegenerateEquiv' :
                    (↑(Δ[n].nonDegenerate d) : Type u) ≃ (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type)) :
                  (a : (↑(Δ[n].nonDegenerate d) : Type u)) → { x : Finset (Fin (n + 1)) // #x = d + 1 })
                x) :
            Finset (Fin (n + 1))))
      (Subtype.mk (p := fun (x_1 : Fin (n + 1)) ↦
          Membership.mem (γ := Finset (Fin (n + 1)))
            (↑(((nonDegenerateEquiv' :
                      (↑(Δ[n].nonDegenerate d) : Type u) ≃ (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type)) :
                    (a : (↑(Δ[n].nonDegenerate d) : Type u)) → { x : Finset (Fin (n + 1)) // #x = d + 1 })
                  x) :
              Finset (Fin (n + 1)))
            x_1)
          (((↑x : Δ[n] _⦋d⦌) : (a : Fin (d + 1)) → Fin (n + 1)) b) ⋯ :
        ↥(↑(((nonDegenerateEquiv' :
                    (↑(Δ[n].nonDegenerate d) : Type u) ≃ (↑{S : Finset (Fin (n + 1)) | #S = d + 1} : Type)) :
                  (a : (↑(Δ[n].nonDegenerate d) : Type u)) → { x : Finset (Fin (n + 1)) // #x = d + 1 })
                x) :
            Finset (Fin (n + 1)))) ↔
    a ≤ b
have simp : LE.le (α := Fin (n + 1)) (((↑x : Δ[n] _⦋d⦌) : (a : Fin (d + 1)) → Fin (n + 1)) a : Fin (n + 1))
    (((↑x : Δ[n] _⦋d⦌) : (a : Fin (d + 1)) → Fin (n + 1)) b : Fin (n + 1)) ↔
  a ≤ b
Tactic: simp only [Subtype.mk_le_mk]
-- Lean 4 proof step from Mathlib.AlgebraicTopology.SimplicialSet.StdSimplex (goal)
Goal:
n d : ℕ
x : (↑(Δ[n].nonDegenerate d) : Type u)
this :
  Function.Injective (α := Fin ((unop (op ⦋d⦌)).len + 1)) (β := Fin (⦋n⦌.len + 1))
    (⇑(Hom.toOrderHom
          (((objEquiv : Δ[n] _⦋d⦌ ≃ (unop (op ⦋d⦌) ⟶ ⦋n⦌)) : (a : Δ[n] _⦋d⦌) → unop (op ⦋d⦌) ⟶ ⦋n⦌) (↑x : Δ[n] _⦋d⦌))) :
      (a : Fin ((unop (op ⦋d⦌)).len + 1)) → Fin (⦋n⦌.len + 1))
a b : Fin (d + 1)
⊢ LE.le (α := Fin (n + 1)) (((↑x : Δ[n] _⦋d⦌) : (a : Fin (d + 1)) → Fin (n + 1)) a : Fin (n + 1))
      (((↑x : Δ[n] _⦋d⦌) : (a : Fin (d + 1)) → Fin (n + 1)) b : Fin (n + 1)) ↔
    a ≤ b
have mp : LE.le (α := Fin (n + 1)) (((↑x : Δ[n] _⦋d⦌) : (a : Fin (d + 1)) → Fin (n + 1)) a : Fin (n + 1))
    (((↑x : Δ[n] _⦋d⦌) : (a : Fin (d + 1)) → Fin (n + 1)) b : Fin (n + 1)) →
  a ≤ b
Tactic: constructor