1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CategoryTheory.Injective.injective_iff_preservesEpimorphisms_preadditive_yoneda_obj'
File: Mathlib/CategoryTheory/Preadditive/Yoneda/Injective.lean

tactic: rw [injective_iff_preservesEpimorphisms_yoneda_obj]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Preadditive C
J : C
⊢ Injective J ↔ (preadditiveYonedaObj J).PreservesEpimorphisms
state_after: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Preadditive C
J : C
⊢ (yoneda.obj J).PreservesEpimorphisms ↔ (preadditiveYonedaObj J).PreservesEpimorphisms

tactic: refine ⟨fun h : (preadditiveYonedaObj J ⋙ (forget <| ModuleCat (End J))).PreservesEpimorphisms =>
  ?_, ?_⟩
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Preadditive C
J : C
⊢ (yoneda.obj J).PreservesEpimorphisms ↔ (preadditiveYonedaObj J).PreservesEpimorphisms
state_after: case refine_1
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Preadditive C
J : C
h : (preadditiveYonedaObj J ⋙ forget (ModuleCat (End J))).PreservesEpimorphisms
⊢ (preadditiveYonedaObj J).PreservesEpimorphisms

case refine_2
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Preadditive C
J : C
⊢ (preadditiveYonedaObj J).PreservesEpimorphisms → (yoneda.obj J).PreservesEpimorphisms

tactic: exact
  Functor.preservesEpimorphisms_of_preserves_of_reflects (preadditiveYonedaObj J) (forget _)
state_before: case refine_1
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Preadditive C
J : C
h : (preadditiveYonedaObj J ⋙ forget (ModuleCat (End J))).PreservesEpimorphisms
⊢ (preadditiveYonedaObj J).PreservesEpimorphisms
state_after: no goals

tactic: intro
state_before: case refine_2
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Preadditive C
J : C
⊢ (preadditiveYonedaObj J).PreservesEpimorphisms → (yoneda.obj J).PreservesEpimorphisms
state_after: case refine_2
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Preadditive C
J : C
a✝ : (preadditiveYonedaObj J).PreservesEpimorphisms
⊢ (yoneda.obj J).PreservesEpimorphisms

tactic: exact (inferInstance : (preadditiveYonedaObj J ⋙ forget _).PreservesEpimorphisms)
state_before: case refine_2
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Preadditive C
J : C
a✝ : (preadditiveYonedaObj J).PreservesEpimorphisms
⊢ (yoneda.obj J).PreservesEpimorphisms
state_after: no goals
Theorem: MvPolynomial.optionEquivLeft_X_none
File: Mathlib/Algebra/MvPolynomial/Equiv.lean

tactic: simp [optionEquivLeft_apply, aeval_X]
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
⊢ (optionEquivLeft R S₁) (X none) = Polynomial.X
state_after: no goals
Theorem: Cardinal.mk_lt_aleph0_iff
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: simp [← not_le, aleph0_le_mk_iff]
state_before: α β : Type u
⊢ #α < ℵ₀ ↔ Finite α
state_after: no goals
Theorem: Polynomial.eraseLead_add_C_mul_X_pow
File: Mathlib/Algebra/Polynomial/EraseLead.lean

tactic: rw [C_mul_X_pow_eq_monomial, eraseLead_add_monomial_natDegree_leadingCoeff]
state_before: R : Type u_1
inst✝ : Semiring R
f✝ f : R[X]
⊢ f.eraseLead + C f.leadingCoeff * X ^ f.natDegree = f
state_after: no goals
Theorem: Path.Homotopy.transAssocReparamAux_one
File: Mathlib/AlgebraicTopology/FundamentalGroupoid/Basic.lean

tactic: norm_num [transAssocReparamAux]
state_before: X : Type u
Y : Type v
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x₀ x₁ : X
⊢ transAssocReparamAux 1 = 1
state_after: no goals
Theorem: cross_anticomm
File: Mathlib/LinearAlgebra/CrossProduct.lean

tactic: simp [cross_apply, mul_comm]
state_before: R : Type u_1
inst✝ : CommRing R
v w : Fin 3 → R
⊢ -(crossProduct v) w = (crossProduct w) v
state_after: no goals
Theorem: NumberField.ComplexEmbedding.IsConj.coe_stabilzer_mk
File: Mathlib/NumberTheory/NumberField/Embeddings.lean

tactic: ext
state_before: k : Type u_1
inst✝⁷ : Field k
K : Type u_2
inst✝⁶ : Field K
F : Type u_3
inst✝⁵ : Field F
inst✝⁴ : NumberField K
inst✝³ : Algebra k K
inst✝² : Algebra k F
inst✝¹ : Algebra K F
inst✝ : IsScalarTower k K F
σ : K ≃ₐ[k] K
w : InfinitePlace K
φ : K →+* ℂ
h : ComplexEmbedding.IsConj φ σ
⊢ ↑(Stab (mk φ)) = {1, σ}
state_after: case h
k : Type u_1
inst✝⁷ : Field k
K : Type u_2
inst✝⁶ : Field K
F : Type u_3
inst✝⁵ : Field F
inst✝⁴ : NumberField K
inst✝³ : Algebra k K
inst✝² : Algebra k F
inst✝¹ : Algebra K F
inst✝ : IsScalarTower k K F
σ : K ≃ₐ[k] K
w : InfinitePlace K
φ : K →+* ℂ
h : ComplexEmbedding.IsConj φ σ
x✝ : K ≃ₐ[k] K
⊢ x✝ ∈ ↑(Stab (mk φ)) ↔ x✝ ∈ {1, σ}

tactic: rw [SetLike.mem_coe, mem_stabilizer_mk_iff, Set.mem_insert_iff, Set.mem_singleton_iff,
  ← h.ext_iff, eq_comm (a := σ)]
state_before: case h
k : Type u_1
inst✝⁷ : Field k
K : Type u_2
inst✝⁶ : Field K
F : Type u_3
inst✝⁵ : Field F
inst✝⁴ : NumberField K
inst✝³ : Algebra k K
inst✝² : Algebra k F
inst✝¹ : Algebra K F
inst✝ : IsScalarTower k K F
σ : K ≃ₐ[k] K
w : InfinitePlace K
φ : K →+* ℂ
h : ComplexEmbedding.IsConj φ σ
x✝ : K ≃ₐ[k] K
⊢ x✝ ∈ ↑(Stab (mk φ)) ↔ x✝ ∈ {1, σ}
state_after: no goals
Theorem: MvPolynomial.totalDegree_sub_C_le
File: Mathlib/Algebra/MvPolynomial/CommRing.lean

tactic: rw [totalDegree_C, Nat.max_zero]
state_before: R : Type u
S : Type v
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommRing R
p✝ q p : MvPolynomial σ R
r : R
⊢ max p.totalDegree (C r).totalDegree = p.totalDegree
state_after: no goals
Theorem: YoungDiagram.coe_bot
File: Mathlib/Combinatorics/Young/YoungDiagram.lean

tactic: refine Set.eq_of_subset_of_subset ?_ ?_
state_before: ⊢ ↑⊥.cells = ∅
state_after: case refine_1

⊢ ↑⊥.cells ⊆ ∅

case refine_2

⊢ ∅ ⊆ ↑⊥.cells

tactic: intros x h
state_before: case refine_1

⊢ ↑⊥.cells ⊆ ∅
state_after: case refine_1
x : ℕ × ℕ
h : x ∈ ↑⊥.cells
⊢ x ∈ ∅

tactic: simp? [mem_mk, Finset.coe_empty, Set.mem_empty_iff_false] at h says
  simp only [cells_bot, Finset.coe_empty, Set.mem_empty_iff_false] at h
state_before: case refine_1
x : ℕ × ℕ
h : x ∈ ↑⊥.cells
⊢ x ∈ ∅
state_after: no goals

tactic: simp only [cells_bot, Finset.coe_empty, Set.mem_empty_iff_false] at h
state_before: case refine_1
x : ℕ × ℕ
h : x ∈ ↑⊥.cells
⊢ x ∈ ∅
state_after: no goals

tactic: simp only [cells_bot, Finset.coe_empty, Set.empty_subset]
state_before: case refine_2

⊢ ∅ ⊆ ↑⊥.cells
state_after: no goals
Theorem: LSeries.term_delta
File: Mathlib/NumberTheory/LSeries/Basic.lean

tactic: rcases eq_or_ne n 0 with rfl | hn
state_before: s : ℂ
n : ℕ
⊢ term δ s n = if n = 1 then 1 else 0
state_after: case inl
s : ℂ
⊢ term δ s 0 = if 0 = 1 then 1 else 0

case inr
s : ℂ
n : ℕ
hn : n ≠ 0
⊢ term δ s n = if n = 1 then 1 else 0

tactic: simp only [term_zero, zero_ne_one, ↓reduceIte]
state_before: case inl
s : ℂ
⊢ term δ s 0 = if 0 = 1 then 1 else 0
state_after: no goals

tactic: simp only [ne_eq, hn, not_false_eq_true, term_of_ne_zero, delta]
state_before: case inr
s : ℂ
n : ℕ
hn : n ≠ 0
⊢ term δ s n = if n = 1 then 1 else 0
state_after: case inr
s : ℂ
n : ℕ
hn : n ≠ 0
⊢ (if n = 1 then 1 else 0) / ↑n ^ s = if n = 1 then 1 else 0

tactic: rcases eq_or_ne n 1 with rfl | hn'
state_before: case inr
s : ℂ
n : ℕ
hn : n ≠ 0
⊢ (if n = 1 then 1 else 0) / ↑n ^ s = if n = 1 then 1 else 0
state_after: case inr.inl
s : ℂ
hn : 1 ≠ 0
⊢ (if 1 = 1 then 1 else 0) / ↑1 ^ s = if 1 = 1 then 1 else 0

case inr.inr
s : ℂ
n : ℕ
hn : n ≠ 0
hn' : n ≠ 1
⊢ (if n = 1 then 1 else 0) / ↑n ^ s = if n = 1 then 1 else 0

tactic: simp only [↓reduceIte, cast_one, one_cpow, ne_eq, one_ne_zero, not_false_eq_true, div_self]
state_before: case inr.inl
s : ℂ
hn : 1 ≠ 0
⊢ (if 1 = 1 then 1 else 0) / ↑1 ^ s = if 1 = 1 then 1 else 0
state_after: no goals

tactic: simp only [hn', ↓reduceIte, zero_div]
state_before: case inr.inr
s : ℂ
n : ℕ
hn : n ≠ 0
hn' : n ≠ 1
⊢ (if n = 1 then 1 else 0) / ↑n ^ s = if n = 1 then 1 else 0
state_after: no goals
Theorem: IntermediateField.botEquiv_def
File: Mathlib/FieldTheory/Adjoin.lean

tactic: simp
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
x : F
⊢ (botEquiv F E) ((algebraMap F ↥⊥) x) = x
state_after: no goals
Theorem: OrthonormalBasis.sum_repr
File: Mathlib/Analysis/InnerProductSpace/PiL2.lean

tactic: simp_rw [← b.coe_toBasis_repr_apply, ← b.coe_toBasis]
state_before: ι : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝⁹ : _root_.RCLike 𝕜
E : Type u_4
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
F' : Type u_7
inst✝² : NormedAddCommGroup F'
inst✝¹ : InnerProductSpace ℝ F'
inst✝ : Fintype ι
b : OrthonormalBasis ι 𝕜 E
x : E
⊢ ∑ i : ι, b.repr x i • b i = x
state_after: ι : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝⁹ : _root_.RCLike 𝕜
E : Type u_4
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
F' : Type u_7
inst✝² : NormedAddCommGroup F'
inst✝¹ : InnerProductSpace ℝ F'
inst✝ : Fintype ι
b : OrthonormalBasis ι 𝕜 E
x : E
⊢ ∑ x_1 : ι, (b.toBasis.repr x) x_1 • b.toBasis x_1 = x

tactic: exact b.toBasis.sum_repr x
state_before: ι : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝⁹ : _root_.RCLike 𝕜
E : Type u_4
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
F' : Type u_7
inst✝² : NormedAddCommGroup F'
inst✝¹ : InnerProductSpace ℝ F'
inst✝ : Fintype ι
b : OrthonormalBasis ι 𝕜 E
x : E
⊢ ∑ x_1 : ι, (b.toBasis.repr x) x_1 • b.toBasis x_1 = x
state_after: no goals
Theorem: Nat.multichoose_two
File: Mathlib/Data/Nat/Choose/Basic.lean

tactic: induction' k with k IH
state_before: k : ℕ
⊢ multichoose 2 k = k + 1
state_after: case zero

⊢ multichoose 2 0 = 0 + 1

case succ
k : ℕ
IH : multichoose 2 k = k + 1
⊢ multichoose 2 (k + 1) = k + 1 + 1

tactic: rw [multichoose, IH]
state_before: case succ
k : ℕ
IH : multichoose 2 k = k + 1
⊢ multichoose 2 (k + 1) = k + 1 + 1
state_after: case succ
k : ℕ
IH : multichoose 2 k = k + 1
⊢ multichoose 1 (k + 1) + (k + 1) = k + 1 + 1

tactic: simp [Nat.add_comm]
state_before: case succ
k : ℕ
IH : multichoose 2 k = k + 1
⊢ multichoose 1 (k + 1) + (k + 1) = k + 1 + 1
state_after: no goals

tactic: simp
state_before: case zero

⊢ multichoose 2 0 = 0 + 1
state_after: no goals
Theorem: spectrum.of_subsingleton
File: Mathlib/Algebra/Algebra/Spectrum.lean

tactic: rw [spectrum, resolventSet_of_subsingleton, Set.compl_univ]
state_before: R : Type u
A : Type v
inst✝³ : CommSemiring R
inst✝² : Ring A
inst✝¹ : Algebra R A
inst✝ : Subsingleton A
a : A
⊢ σ a = ∅
state_after: no goals
Theorem: PowerSeries.X_pow_dvd_iff
File: Mathlib/RingTheory/PowerSeries/Basic.lean

tactic: convert@MvPowerSeries.X_pow_dvd_iff Unit R _ () n φ
state_before: R : Type u_1
inst✝ : Semiring R
n : ℕ
φ : R⟦X⟧
⊢ X ^ n ∣ φ ↔ ∀ m < n, (coeff R m) φ = 0
state_after: case h.e'_2.a
R : Type u_1
inst✝ : Semiring R
n : ℕ
φ : R⟦X⟧
⊢ (∀ m < n, (coeff R m) φ = 0) ↔ ∀ (m : Unit →₀ ℕ), m () < n → (MvPowerSeries.coeff R m) φ = 0

tactic: constructor <;> intro h m hm
state_before: case h.e'_2.a
R : Type u_1
inst✝ : Semiring R
n : ℕ
φ : R⟦X⟧
⊢ (∀ m < n, (coeff R m) φ = 0) ↔ ∀ (m : Unit →₀ ℕ), m () < n → (MvPowerSeries.coeff R m) φ = 0
state_after: case h.e'_2.a.mp
R : Type u_1
inst✝ : Semiring R
n : ℕ
φ : R⟦X⟧
h : ∀ m < n, (coeff R m) φ = 0
m : Unit →₀ ℕ
hm : m () < n
⊢ (MvPowerSeries.coeff R m) φ = 0

case h.e'_2.a.mpr
R : Type u_1
inst✝ : Semiring R
n : ℕ
φ : R⟦X⟧
h : ∀ (m : Unit →₀ ℕ), m () < n → (MvPowerSeries.coeff R m) φ = 0
m : ℕ
hm : m < n
⊢ (coeff R m) φ = 0

tactic: rw [Finsupp.unique_single m]
state_before: case h.e'_2.a.mp
R : Type u_1
inst✝ : Semiring R
n : ℕ
φ : R⟦X⟧
h : ∀ m < n, (coeff R m) φ = 0
m : Unit →₀ ℕ
hm : m () < n
⊢ (MvPowerSeries.coeff R m) φ = 0
state_after: case h.e'_2.a.mp
R : Type u_1
inst✝ : Semiring R
n : ℕ
φ : R⟦X⟧
h : ∀ m < n, (coeff R m) φ = 0
m : Unit →₀ ℕ
hm : m () < n
⊢ (MvPowerSeries.coeff R (single default (m default))) φ = 0

tactic: convert h _ hm
state_before: case h.e'_2.a.mp
R : Type u_1
inst✝ : Semiring R
n : ℕ
φ : R⟦X⟧
h : ∀ m < n, (coeff R m) φ = 0
m : Unit →₀ ℕ
hm : m () < n
⊢ (MvPowerSeries.coeff R (single default (m default))) φ = 0
state_after: no goals

tactic: apply h
state_before: case h.e'_2.a.mpr
R : Type u_1
inst✝ : Semiring R
n : ℕ
φ : R⟦X⟧
h : ∀ (m : Unit →₀ ℕ), m () < n → (MvPowerSeries.coeff R m) φ = 0
m : ℕ
hm : m < n
⊢ (coeff R m) φ = 0
state_after: case h.e'_2.a.mpr.a
R : Type u_1
inst✝ : Semiring R
n : ℕ
φ : R⟦X⟧
h : ∀ (m : Unit →₀ ℕ), m () < n → (MvPowerSeries.coeff R m) φ = 0
m : ℕ
hm : m < n
⊢ (single () m) () < n

tactic: simpa only [Finsupp.single_eq_same] using hm
state_before: case h.e'_2.a.mpr.a
R : Type u_1
inst✝ : Semiring R
n : ℕ
φ : R⟦X⟧
h : ∀ (m : Unit →₀ ℕ), m () < n → (MvPowerSeries.coeff R m) φ = 0
m : ℕ
hm : m < n
⊢ (single () m) () < n
state_after: no goals
Theorem: Order.IsSuccLimit.succ_ne
File: Mathlib/Order/SuccPred/Limit.lean

tactic: rintro rfl
state_before: α : Type u_1
inst✝² : Preorder α
a : α
inst✝¹ : SuccOrder α
inst✝ : NoMaxOrder α
h : IsSuccLimit a
b : α
⊢ succ b ≠ a
state_after: α : Type u_1
inst✝² : Preorder α
inst✝¹ : SuccOrder α
inst✝ : NoMaxOrder α
b : α
h : IsSuccLimit (succ b)
⊢ False

tactic: exact not_isMax _ h.isMax
state_before: α : Type u_1
inst✝² : Preorder α
inst✝¹ : SuccOrder α
inst✝ : NoMaxOrder α
b : α
h : IsSuccLimit (succ b)
⊢ False
state_after: no goals
Theorem: Nat.Primrec'.to_prim
File: Mathlib/Computability/Primrec.lean

tactic: induction pf with
| zero => exact .const 0
| succ => exact _root_.Primrec.succ.comp .vector_head
| get i => exact Primrec.vector_get.comp .id (.const i)
| comp _ _ _ hf hg => exact hf.comp (.vector_ofFn fun i => hg i)
| @prec n f g _ _ hf hg =>
  exact
    .nat_rec' .vector_head (hf.comp Primrec.vector_tail)
      (hg.comp <|
        Primrec.vector_cons.comp (Primrec.fst.comp .snd) <|
        Primrec.vector_cons.comp (Primrec.snd.comp .snd) <|
          (@Primrec.vector_tail _ _ (n + 1)).comp .fst).to₂
state_before: n : ℕ
f : Vector ℕ n → ℕ
pf : Primrec' f
⊢ Primrec f
state_after: no goals

tactic: exact .const 0
state_before: case zero
n : ℕ
f : Vector ℕ n → ℕ
⊢ Primrec fun x => 0
state_after: no goals

tactic: exact _root_.Primrec.succ.comp .vector_head
state_before: case succ
n : ℕ
f : Vector ℕ n → ℕ
⊢ Primrec fun v => v.head.succ
state_after: no goals

tactic: exact Primrec.vector_get.comp .id (.const i)
state_before: case get
n : ℕ
f : Vector ℕ n → ℕ
n✝ : ℕ
i : Fin n✝
⊢ Primrec fun v => v.get i
state_after: no goals

tactic: exact hf.comp (.vector_ofFn fun i => hg i)
state_before: case comp
n : ℕ
f : Vector ℕ n → ℕ
m✝ n✝ : ℕ
f✝ : Vector ℕ n✝ → ℕ
g✝ : Fin n✝ → Vector ℕ m✝ → ℕ
a✝¹ : Primrec' f✝
a✝ : ∀ (i : Fin n✝), Primrec' (g✝ i)
hf : Primrec f✝
hg : ∀ (i : Fin n✝), Primrec (g✝ i)
⊢ Primrec fun a => f✝ (ofFn fun i => g✝ i a)
state_after: no goals

tactic: exact
  .nat_rec' .vector_head (hf.comp Primrec.vector_tail)
    (hg.comp <|
      Primrec.vector_cons.comp (Primrec.fst.comp .snd) <|
      Primrec.vector_cons.comp (Primrec.snd.comp .snd) <|
        (@Primrec.vector_tail _ _ (n + 1)).comp .fst).to₂
state_before: case prec
n✝ : ℕ
f✝ : Vector ℕ n✝ → ℕ
n : ℕ
f : Vector ℕ n → ℕ
g : Vector ℕ (n + 2) → ℕ
a✝¹ : Primrec' f
a✝ : Primrec' g
hf : Primrec f
hg : Primrec g
⊢ Primrec fun v => Nat.rec (f v.tail) (fun y IH => g (y ::ᵥ IH ::ᵥ v.tail)) v.head
state_after: no goals
Theorem: Real.exp_approx_start
File: Mathlib/Data/Complex/Exponential.lean

tactic: simpa using h
state_before: x a b : ℝ
h : |rexp x - expNear 0 x a| ≤ |x| ^ 0 / ↑(Nat.factorial 0) * b
⊢ |rexp x - a| ≤ b
state_after: no goals
Theorem: Grp.FilteredColimits.colimitInvAux_eq_of_rel
File: Mathlib/Algebra/Category/Grp/FilteredColimits.lean

tactic: apply G.mk_eq
state_before: J : Type v
inst✝¹ : SmallCategory J
inst✝ : IsFiltered J
F : J ⥤ Grp
x y : (j : J) × ↑(F.obj j)
h : Types.FilteredColimit.Rel (F ⋙ forget Grp) x y
⊢ colimitInvAux F x = colimitInvAux F y
state_after: case h
J : Type v
inst✝¹ : SmallCategory J
inst✝ : IsFiltered J
F : J ⥤ Grp
x y : (j : J) × ↑(F.obj j)
h : Types.FilteredColimit.Rel (F ⋙ forget Grp) x y
⊢ ∃ k f g, (F.map f) ⟨x.fst, x.snd⁻¹⟩.snd = (F.map g) ⟨y.fst, y.snd⁻¹⟩.snd

tactic: obtain ⟨k, f, g, hfg⟩ := h
state_before: case h
J : Type v
inst✝¹ : SmallCategory J
inst✝ : IsFiltered J
F : J ⥤ Grp
x y : (j : J) × ↑(F.obj j)
h : Types.FilteredColimit.Rel (F ⋙ forget Grp) x y
⊢ ∃ k f g, (F.map f) ⟨x.fst, x.snd⁻¹⟩.snd = (F.map g) ⟨y.fst, y.snd⁻¹⟩.snd
state_after: case h.intro.intro.intro
J : Type v
inst✝¹ : SmallCategory J
inst✝ : IsFiltered J
F : J ⥤ Grp
x y : (j : J) × ↑(F.obj j)
k : J
f : x.fst ⟶ k
g : y.fst ⟶ k
hfg : (F ⋙ forget Grp).map f x.snd = (F ⋙ forget Grp).map g y.snd
⊢ ∃ k f g, (F.map f) ⟨x.fst, x.snd⁻¹⟩.snd = (F.map g) ⟨y.fst, y.snd⁻¹⟩.snd

tactic: use k, f, g
state_before: case h.intro.intro.intro
J : Type v
inst✝¹ : SmallCategory J
inst✝ : IsFiltered J
F : J ⥤ Grp
x y : (j : J) × ↑(F.obj j)
k : J
f : x.fst ⟶ k
g : y.fst ⟶ k
hfg : (F ⋙ forget Grp).map f x.snd = (F ⋙ forget Grp).map g y.snd
⊢ ∃ k f g, (F.map f) ⟨x.fst, x.snd⁻¹⟩.snd = (F.map g) ⟨y.fst, y.snd⁻¹⟩.snd
state_after: case h
J : Type v
inst✝¹ : SmallCategory J
inst✝ : IsFiltered J
F : J ⥤ Grp
x y : (j : J) × ↑(F.obj j)
k : J
f : x.fst ⟶ k
g : y.fst ⟶ k
hfg : (F ⋙ forget Grp).map f x.snd = (F ⋙ forget Grp).map g y.snd
⊢ (F.map f) ⟨x.fst, x.snd⁻¹⟩.snd = (F.map g) ⟨y.fst, y.snd⁻¹⟩.snd

tactic: rw [MonoidHom.map_inv, MonoidHom.map_inv, inv_inj]
state_before: case h
J : Type v
inst✝¹ : SmallCategory J
inst✝ : IsFiltered J
F : J ⥤ Grp
x y : (j : J) × ↑(F.obj j)
k : J
f : x.fst ⟶ k
g : y.fst ⟶ k
hfg : (F ⋙ forget Grp).map f x.snd = (F ⋙ forget Grp).map g y.snd
⊢ (F.map f) ⟨x.fst, x.snd⁻¹⟩.snd = (F.map g) ⟨y.fst, y.snd⁻¹⟩.snd
state_after: case h
J : Type v
inst✝¹ : SmallCategory J
inst✝ : IsFiltered J
F : J ⥤ Grp
x y : (j : J) × ↑(F.obj j)
k : J
f : x.fst ⟶ k
g : y.fst ⟶ k
hfg : (F ⋙ forget Grp).map f x.snd = (F ⋙ forget Grp).map g y.snd
⊢ (F.map f) x.snd = (F.map g) y.snd

tactic: exact hfg
state_before: case h
J : Type v
inst✝¹ : SmallCategory J
inst✝ : IsFiltered J
F : J ⥤ Grp
x y : (j : J) × ↑(F.obj j)
k : J
f : x.fst ⟶ k
g : y.fst ⟶ k
hfg : (F ⋙ forget Grp).map f x.snd = (F ⋙ forget Grp).map g y.snd
⊢ (F.map f) x.snd = (F.map g) y.snd
state_after: no goals
Theorem: Matrix.transpose_add
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝ : Add α
M N : Matrix m n α
⊢ (M + N)ᵀ = Mᵀ + Nᵀ
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝ : Add α
M N : Matrix m n α
i✝ : n
j✝ : m
⊢ (M + N)ᵀ i✝ j✝ = (Mᵀ + Nᵀ) i✝ j✝

tactic: simp
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝ : Add α
M N : Matrix m n α
i✝ : n
j✝ : m
⊢ (M + N)ᵀ i✝ j✝ = (Mᵀ + Nᵀ) i✝ j✝
state_after: no goals
Theorem: Filter.inf_prod
File: Mathlib/Order/Filter/Prod.lean

tactic: rw [prod_inf_prod, inf_idem]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s : Set α
t : Set β
f : Filter α
g : Filter β
f₁ f₂ : Filter α
⊢ (f₁ ⊓ f₂) ×ˢ g = f₁ ×ˢ g ⊓ f₂ ×ˢ g
state_after: no goals
Theorem: Order.succ_lt_succ_iff
File: Mathlib/Order/SuccPred/Basic.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
inst✝² : Preorder α
inst✝¹ : SuccOrder α
a b : α
inst✝ : NoMaxOrder α
⊢ succ a < succ b ↔ a < b
state_after: no goals
Theorem: CategoryTheory.Abelian.coimageImageComparison_eq_coimageImageComparison'
File: Mathlib/CategoryTheory/Abelian/Images.lean

tactic: ext
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
inst✝¹ : HasKernels C
inst✝ : HasCokernels C
P Q : C
f : P ⟶ Q
⊢ coimageImageComparison f = coimageImageComparison' f
state_after: case h.h
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
inst✝¹ : HasKernels C
inst✝ : HasCokernels C
P Q : C
f : P ⟶ Q
⊢ (coequalizer.π (kernel.ι f) 0 ≫ coimageImageComparison f) ≫ equalizer.ι (cokernel.π f) 0 =
    (coequalizer.π (kernel.ι f) 0 ≫ coimageImageComparison' f) ≫ equalizer.ι (cokernel.π f) 0

tactic: simp [coimageImageComparison, coimageImageComparison']
state_before: case h.h
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
inst✝¹ : HasKernels C
inst✝ : HasCokernels C
P Q : C
f : P ⟶ Q
⊢ (coequalizer.π (kernel.ι f) 0 ≫ coimageImageComparison f) ≫ equalizer.ι (cokernel.π f) 0 =
    (coequalizer.π (kernel.ι f) 0 ≫ coimageImageComparison' f) ≫ equalizer.ι (cokernel.π f) 0
state_after: no goals
Theorem: Set.image_union_image_compl_eq_range
File: Mathlib/Data/Set/Image.lean

tactic: rw [← image_union, ← image_univ, ← union_compl_self]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : ι → α
s t : Set α
f : α → β
⊢ f '' s ∪ f '' sᶜ = range f
state_after: no goals
Theorem: Ordnode.Valid'.rotateL_lemma₂
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: omega
state_before: α : Type u_1
inst✝ : Preorder α
a b c : ℕ
H3 : 2 * (b + c) ≤ 9 * a + 3
h : b < 2 * c
⊢ b < 3 * a + 1
state_after: no goals