1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: QuadraticForm.associated_eq_self_apply
File: Mathlib/LinearAlgebra/QuadraticForm/Basic.lean

tactic: rw [associated_apply, map_add_self, ← three_add_one_eq_four, ← two_add_one_eq_three,
  add_mul, add_mul, one_mul, add_sub_cancel_right, add_sub_cancel_right, invOf_mul_self_assoc]
state_before: S : Type u_1
T : Type u_2
R : Type u_3
M : Type u_4
N : Type u_5
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : CommSemiring S
inst✝¹ : Algebra S R
inst✝ : Invertible 2
B₁ : BilinForm R M
Q : QuadraticForm R M
x : M
⊢ (((associatedHom S) Q) x) x = Q x
state_after: no goals
Theorem: Ring.multichoose_one_right
File: Mathlib/RingTheory/Binomial.lean

tactic: rw [multichoose_one_right', npow_one]
state_before: R : Type u_1
inst✝⁴ : AddCommMonoid R
inst✝³ : Pow R ℕ
inst✝² : BinomialRing R
inst✝¹ : MulOneClass R
inst✝ : NatPowAssoc R
r : R
⊢ multichoose r 1 = r
state_after: no goals
Theorem: Real.comap_exp_atTop
File: Mathlib/Analysis/SpecialFunctions/Exp.lean

tactic: rw [← map_exp_atTop, comap_map exp_injective, map_exp_atTop]
state_before: α : Type u_1
x y z : ℝ
l : Filter α
⊢ comap rexp atTop = atTop
state_after: no goals
Theorem: MeasureTheory.integrable_average
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: simp [h]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
inst✝ : IsFiniteMeasure μ
f : α → β
h : μ = 0
⊢ Integrable f ((μ univ)⁻¹ • μ) ↔ Integrable f μ
state_after: no goals
Theorem: Finsupp.mapRange.addEquiv_trans
File: Mathlib/Data/Finsupp/Basic.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝⁴ : AddCommMonoid M
inst✝³ : AddCommMonoid N
inst✝² : AddCommMonoid P
F : Type u_13
inst✝¹ : FunLike F M N
inst✝ : AddMonoidHomClass F M N
f : M ≃+ N
f₂ : N ≃+ P
⊢ (⇑f₂ ∘ ⇑f) 0 = 0
state_after: no goals
Theorem: CategoryTheory.MorphismProperty.StableUnderBaseChange.respectsIso
File: Mathlib/CategoryTheory/MorphismProperty/Limits.lean

tactic: apply RespectsIso.of_respects_arrow_iso
state_before: C : Type u
inst✝ : Category.{v, u} C
P : MorphismProperty C
hP : P.StableUnderBaseChange
⊢ P.RespectsIso
state_after: case hP
C : Type u
inst✝ : Category.{v, u} C
P : MorphismProperty C
hP : P.StableUnderBaseChange
⊢ ∀ (f g : Arrow C), (f ≅ g) → P f.hom → P g.hom

tactic: intro f g e
state_before: case hP
C : Type u
inst✝ : Category.{v, u} C
P : MorphismProperty C
hP : P.StableUnderBaseChange
⊢ ∀ (f g : Arrow C), (f ≅ g) → P f.hom → P g.hom
state_after: case hP
C : Type u
inst✝ : Category.{v, u} C
P : MorphismProperty C
hP : P.StableUnderBaseChange
f g : Arrow C
e : f ≅ g
⊢ P f.hom → P g.hom

tactic: exact hP (IsPullback.of_horiz_isIso (CommSq.mk e.inv.w))
state_before: case hP
C : Type u
inst✝ : Category.{v, u} C
P : MorphismProperty C
hP : P.StableUnderBaseChange
f g : Arrow C
e : f ≅ g
⊢ P f.hom → P g.hom
state_after: no goals
Theorem: AffineSubspace.sOppSide_comm
File: Mathlib/Analysis/Convex/Side.lean

tactic: rw [SOppSide, SOppSide, wOppSide_comm, and_comm (b := x ∉ s)]
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : StrictOrderedCommRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x y : P
⊢ s.SOppSide x y ↔ s.SOppSide y x
state_after: no goals
Theorem: Ideal.span_singleton_mul_le_span_singleton_mul
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: simp only [span_singleton_mul_le_iff, mem_span_singleton_mul, eq_comm]
state_before: R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I✝ J✝ K L : Ideal R
x y : R
I J : Ideal R
⊢ span {x} * I ≤ span {y} * J ↔ ∀ zI ∈ I, ∃ zJ ∈ J, x * zI = y * zJ
state_after: no goals
Theorem: extChartAt_preimage_mem_nhdsWithin'
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

tactic: rwa [← map_extChartAt_symm_nhdsWithin' I h, mem_map] at ht
state_before: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝⁵ : NormedAddCommGroup E'
inst✝⁴ : NormedSpace 𝕜 E'
inst✝³ : TopologicalSpace H'
inst✝² : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
inst✝¹ : ChartedSpace H M
inst✝ : ChartedSpace H' M'
x x' : M
h : x' ∈ (extChartAt I x).source
ht : t ∈ 𝓝[s] x'
⊢ ↑(extChartAt I x).symm ⁻¹' t ∈ 𝓝[↑(extChartAt I x).symm ⁻¹' s ∩ range ↑I] ↑(extChartAt I x) x'
state_after: no goals
Theorem: Real.eulerMascheroniConstant_eq_neg_deriv
File: Mathlib/NumberTheory/Harmonic/GammaDeriv.lean

tactic: rw [show (1 : ℝ) = ↑(0 : ℕ) + 1 by simp, deriv_Gamma_nat 0]
state_before: ⊢ γ = -deriv Gamma 1
state_after: ⊢ γ = -(↑0! * (-γ + ↑(harmonic 0)))

tactic: simp
state_before: ⊢ γ = -(↑0! * (-γ + ↑(harmonic 0)))
state_after: no goals

tactic: simp
state_before: ⊢ 1 = ↑0 + 1
state_after: no goals
Theorem: SimpleGraph.Walk.mem_support_iff_exists_append
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: constructor
state_before: V✝ : Type u
V' : Type v
V'' : Type w
G✝ : SimpleGraph V✝
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w✝ x y : V✝
inst✝ : DecidableEq V✝
V : Type u
G : SimpleGraph V
u v w : V
p : G.Walk u v
⊢ w ∈ p.support ↔ ∃ q r, p = q.append r
state_after: case mp
V✝ : Type u
V' : Type v
V'' : Type w
G✝ : SimpleGraph V✝
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w✝ x y : V✝
inst✝ : DecidableEq V✝
V : Type u
G : SimpleGraph V
u v w : V
p : G.Walk u v
⊢ w ∈ p.support → ∃ q r, p = q.append r

case mpr
V✝ : Type u
V' : Type v
V'' : Type w
G✝ : SimpleGraph V✝
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w✝ x y : V✝
inst✝ : DecidableEq V✝
V : Type u
G : SimpleGraph V
u v w : V
p : G.Walk u v
⊢ (∃ q r, p = q.append r) → w ∈ p.support

tactic: exact fun h => ⟨_, _, (p.take_spec h).symm⟩
state_before: case mp
V✝ : Type u
V' : Type v
V'' : Type w
G✝ : SimpleGraph V✝
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w✝ x y : V✝
inst✝ : DecidableEq V✝
V : Type u
G : SimpleGraph V
u v w : V
p : G.Walk u v
⊢ w ∈ p.support → ∃ q r, p = q.append r
state_after: no goals

tactic: rintro ⟨q, r, rfl⟩
state_before: case mpr
V✝ : Type u
V' : Type v
V'' : Type w
G✝ : SimpleGraph V✝
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w✝ x y : V✝
inst✝ : DecidableEq V✝
V : Type u
G : SimpleGraph V
u v w : V
p : G.Walk u v
⊢ (∃ q r, p = q.append r) → w ∈ p.support
state_after: case mpr.intro.intro
V✝ : Type u
V' : Type v
V'' : Type w
G✝ : SimpleGraph V✝
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w✝ x y : V✝
inst✝ : DecidableEq V✝
V : Type u
G : SimpleGraph V
u v w : V
q : G.Walk u w
r : G.Walk w v
⊢ w ∈ (q.append r).support

tactic: simp only [mem_support_append_iff, end_mem_support, start_mem_support, or_self_iff]
state_before: case mpr.intro.intro
V✝ : Type u
V' : Type v
V'' : Type w
G✝ : SimpleGraph V✝
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w✝ x y : V✝
inst✝ : DecidableEq V✝
V : Type u
G : SimpleGraph V
u v w : V
q : G.Walk u w
r : G.Walk w v
⊢ w ∈ (q.append r).support
state_after: no goals
Theorem: MeasureTheory.AEEqFun.mk_coeFn
File: Mathlib/MeasureTheory/Function/AEEqFun.lean

tactic: conv_rhs => rw [← Quotient.out_eq' f]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝³ : MeasurableSpace α
μ ν : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α →ₘ[μ] β
⊢ mk ↑f ⋯ = f
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝³ : MeasurableSpace α
μ ν : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α →ₘ[μ] β
⊢ mk ↑f ⋯ = Quotient.mk'' (Quotient.out' f)

tactic: set g : { f : α → β // AEStronglyMeasurable f μ } := Quotient.out' f
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝³ : MeasurableSpace α
μ ν : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α →ₘ[μ] β
⊢ mk ↑f ⋯ = Quotient.mk'' (Quotient.out' f)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝³ : MeasurableSpace α
μ ν : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α →ₘ[μ] β
g : { f // AEStronglyMeasurable f μ } := Quotient.out' f
⊢ mk ↑f ⋯ = Quotient.mk'' g

tactic: have : g = ⟨g.1, g.2⟩ := Subtype.eq rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝³ : MeasurableSpace α
μ ν : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α →ₘ[μ] β
g : { f // AEStronglyMeasurable f μ } := Quotient.out' f
⊢ mk ↑f ⋯ = Quotient.mk'' g
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝³ : MeasurableSpace α
μ ν : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α →ₘ[μ] β
g : { f // AEStronglyMeasurable f μ } := Quotient.out' f
this : g = ⟨↑g, ⋯⟩
⊢ mk ↑f ⋯ = Quotient.mk'' g

tactic: rw [this, ← mk, mk_eq_mk]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝³ : MeasurableSpace α
μ ν : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α →ₘ[μ] β
g : { f // AEStronglyMeasurable f μ } := Quotient.out' f
this : g = ⟨↑g, ⋯⟩
⊢ mk ↑f ⋯ = Quotient.mk'' g
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝³ : MeasurableSpace α
μ ν : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α →ₘ[μ] β
g : { f // AEStronglyMeasurable f μ } := Quotient.out' f
this : g = ⟨↑g, ⋯⟩
⊢ ↑f =ᶠ[ae μ] ↑g

tactic: exact (AEStronglyMeasurable.ae_eq_mk _).symm
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝³ : MeasurableSpace α
μ ν : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α →ₘ[μ] β
g : { f // AEStronglyMeasurable f μ } := Quotient.out' f
this : g = ⟨↑g, ⋯⟩
⊢ ↑f =ᶠ[ae μ] ↑g
state_after: no goals
Theorem: Associates.eq_pow_find_of_dvd_irreducible_pow
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: classical rw [count_factors_eq_find_of_dvd_pow hp, ← eq_pow_count_factors_of_dvd_pow hp h]
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : UniqueFactorizationMonoid α
a p : Associates α
hp : Irreducible p
inst✝ : (n : ℕ) → Decidable (a ∣ p ^ n)
n : ℕ
h : a ∣ p ^ n
⊢ a = p ^ Nat.find ⋯
state_after: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : UniqueFactorizationMonoid α
a p : Associates α
hp : Irreducible p
inst✝ : (n : ℕ) → Decidable (a ∣ p ^ n)
n : ℕ
h : a ∣ p ^ n
⊢ a ∣ p ^ ?m.495072

α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : UniqueFactorizationMonoid α
a p : Associates α
hp : Irreducible p
inst✝ : (n : ℕ) → Decidable (a ∣ p ^ n)
n : ℕ
h : a ∣ p ^ n
⊢ ℕ

tactic: exact h
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : UniqueFactorizationMonoid α
a p : Associates α
hp : Irreducible p
inst✝ : (n : ℕ) → Decidable (a ∣ p ^ n)
n : ℕ
h : a ∣ p ^ n
⊢ a ∣ p ^ ?m.495072

α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : UniqueFactorizationMonoid α
a p : Associates α
hp : Irreducible p
inst✝ : (n : ℕ) → Decidable (a ∣ p ^ n)
n : ℕ
h : a ∣ p ^ n
⊢ ℕ
state_after: no goals

tactic: rw [count_factors_eq_find_of_dvd_pow hp, ← eq_pow_count_factors_of_dvd_pow hp h]
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : UniqueFactorizationMonoid α
a p : Associates α
hp : Irreducible p
inst✝ : (n : ℕ) → Decidable (a ∣ p ^ n)
n : ℕ
h : a ∣ p ^ n
⊢ a = p ^ Nat.find ⋯
state_after: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : UniqueFactorizationMonoid α
a p : Associates α
hp : Irreducible p
inst✝ : (n : ℕ) → Decidable (a ∣ p ^ n)
n : ℕ
h : a ∣ p ^ n
⊢ a ∣ p ^ ?m.495072

α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : UniqueFactorizationMonoid α
a p : Associates α
hp : Irreducible p
inst✝ : (n : ℕ) → Decidable (a ∣ p ^ n)
n : ℕ
h : a ∣ p ^ n
⊢ ℕ
Theorem: CategoryTheory.CostructuredArrow.map_comp
File: Mathlib/CategoryTheory/Comma/StructuredArrow.lean

tactic: rw [eq_mk h]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
T T' T'' : D
Y Y' Y'' : C
S S' : C ⥤ D
f : T ⟶ T'
f' : T' ⟶ T''
h : CostructuredArrow S T
⊢ (map (f ≫ f')).obj h = (map f').obj ((map f).obj h)
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
T T' T'' : D
Y Y' Y'' : C
S S' : C ⥤ D
f : T ⟶ T'
f' : T' ⟶ T''
h : CostructuredArrow S T
⊢ (map (f ≫ f')).obj (mk h.hom) = (map f').obj ((map f).obj (mk h.hom))

tactic: simp
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
T T' T'' : D
Y Y' Y'' : C
S S' : C ⥤ D
f : T ⟶ T'
f' : T' ⟶ T''
h : CostructuredArrow S T
⊢ (map (f ≫ f')).obj (mk h.hom) = (map f').obj ((map f).obj (mk h.hom))
state_after: no goals
Theorem: uniformContinuousOn_univ
File: Mathlib/Topology/UniformSpace/Basic.lean

tactic: rw [UniformContinuousOn, UniformContinuous, univ_prod_univ, principal_univ, inf_top_eq]
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝¹ : UniformSpace α
inst✝ : UniformSpace β
f : α → β
⊢ UniformContinuousOn f univ ↔ UniformContinuous f
state_after: no goals
Theorem: List.Nat.mem_antidiagonal
File: Mathlib/Data/List/NatAntidiagonal.lean

tactic: rw [antidiagonal, mem_map]
state_before: n : ℕ
x : ℕ × ℕ
⊢ x ∈ antidiagonal n ↔ x.1 + x.2 = n
state_after: n : ℕ
x : ℕ × ℕ
⊢ (∃ a ∈ range (n + 1), (a, n - a) = x) ↔ x.1 + x.2 = n

tactic: constructor
state_before: n : ℕ
x : ℕ × ℕ
⊢ (∃ a ∈ range (n + 1), (a, n - a) = x) ↔ x.1 + x.2 = n
state_after: case mp
n : ℕ
x : ℕ × ℕ
⊢ (∃ a ∈ range (n + 1), (a, n - a) = x) → x.1 + x.2 = n

case mpr
n : ℕ
x : ℕ × ℕ
⊢ x.1 + x.2 = n → ∃ a ∈ range (n + 1), (a, n - a) = x

tactic: rintro ⟨i, hi, rfl⟩
state_before: case mp
n : ℕ
x : ℕ × ℕ
⊢ (∃ a ∈ range (n + 1), (a, n - a) = x) → x.1 + x.2 = n
state_after: case mp.intro.intro
n i : ℕ
hi : i ∈ range (n + 1)
⊢ (i, n - i).1 + (i, n - i).2 = n

tactic: rw [mem_range, Nat.lt_succ_iff] at hi
state_before: case mp.intro.intro
n i : ℕ
hi : i ∈ range (n + 1)
⊢ (i, n - i).1 + (i, n - i).2 = n
state_after: case mp.intro.intro
n i : ℕ
hi : i ≤ n
⊢ (i, n - i).1 + (i, n - i).2 = n

tactic: exact Nat.add_sub_cancel' hi
state_before: case mp.intro.intro
n i : ℕ
hi : i ≤ n
⊢ (i, n - i).1 + (i, n - i).2 = n
state_after: no goals

tactic: rintro rfl
state_before: case mpr
n : ℕ
x : ℕ × ℕ
⊢ x.1 + x.2 = n → ∃ a ∈ range (n + 1), (a, n - a) = x
state_after: case mpr
x : ℕ × ℕ
⊢ ∃ a ∈ range (x.1 + x.2 + 1), (a, x.1 + x.2 - a) = x

tactic: refine ⟨x.fst, ?_, ?_⟩
state_before: case mpr
x : ℕ × ℕ
⊢ ∃ a ∈ range (x.1 + x.2 + 1), (a, x.1 + x.2 - a) = x
state_after: case mpr.refine_1
x : ℕ × ℕ
⊢ x.1 ∈ range (x.1 + x.2 + 1)

case mpr.refine_2
x : ℕ × ℕ
⊢ (x.1, x.1 + x.2 - x.1) = x

tactic: rw [mem_range]
state_before: case mpr.refine_1
x : ℕ × ℕ
⊢ x.1 ∈ range (x.1 + x.2 + 1)
state_after: case mpr.refine_1
x : ℕ × ℕ
⊢ x.1 < x.1 + x.2 + 1

tactic: omega
state_before: case mpr.refine_1
x : ℕ × ℕ
⊢ x.1 < x.1 + x.2 + 1
state_after: no goals

tactic: exact Prod.ext rfl (by simp only [Nat.add_sub_cancel_left])
state_before: case mpr.refine_2
x : ℕ × ℕ
⊢ (x.1, x.1 + x.2 - x.1) = x
state_after: no goals

tactic: simp only [Nat.add_sub_cancel_left]
state_before: x : ℕ × ℕ
⊢ (x.1, x.1 + x.2 - x.1).2 = x.2
state_after: no goals
Theorem: Absorbent.absorbs_finite
File: Mathlib/Topology/Bornology/Absorbs.lean

tactic: rw [← Set.biUnion_of_singleton t]
state_before: M : Type u_1
α : Type u_2
inst✝¹ : Bornology M
inst✝ : SMul M α
s t : Set α
hs : Absorbent M s
ht : t.Finite
⊢ Absorbs M s t
state_after: M : Type u_1
α : Type u_2
inst✝¹ : Bornology M
inst✝ : SMul M α
s t : Set α
hs : Absorbent M s
ht : t.Finite
⊢ Absorbs M s (⋃ x ∈ t, {x})

tactic: exact .biUnion ht fun _ _ => hs.absorbs
state_before: M : Type u_1
α : Type u_2
inst✝¹ : Bornology M
inst✝ : SMul M α
s t : Set α
hs : Absorbent M s
ht : t.Finite
⊢ Absorbs M s (⋃ x ∈ t, {x})
state_after: no goals
Theorem: Lagrange.interpolate_singleton
File: Mathlib/LinearAlgebra/Lagrange.lean

tactic: rw [interpolate_apply, sum_singleton, basis_singleton, mul_one]
state_before: F : Type u_1
inst✝¹ : Field F
ι : Type u_2
inst✝ : DecidableEq ι
s t : Finset ι
i j : ι
v r r' : ι → F
⊢ (interpolate {i} v) r = C (r i)
state_after: no goals
Theorem: Prod.swap_iInf
File: Mathlib/Order/CompleteLattice.lean

tactic: simp_rw [iInf, swap_sInf, ← range_comp, Function.comp]
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝¹ : InfSet α
inst✝ : InfSet β
f : ι → α × β
⊢ (iInf f).swap = ⨅ i, (f i).swap
state_after: no goals
Theorem: Polynomial.degree_C_mul_X
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: simpa only [pow_one] using degree_C_mul_X_pow 1 ha
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p q r : R[X]
ha : a ≠ 0
⊢ (C a * X).degree = 1
state_after: no goals
Theorem: Matrix.conjTranspose_row
File: Mathlib/Data/Matrix/RowCol.lean

tactic: ext
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
α : Type v
β : Type w
ι : Type u_6
inst✝ : Star α
v : m → α
⊢ (row ι v)ᴴ = col ι (star v)
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
α : Type v
β : Type w
ι : Type u_6
inst✝ : Star α
v : m → α
i✝ : m
j✝ : ι
⊢ (row ι v)ᴴ i✝ j✝ = col ι (star v) i✝ j✝

tactic: rfl
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
α : Type v
β : Type w
ι : Type u_6
inst✝ : Star α
v : m → α
i✝ : m
j✝ : ι
⊢ (row ι v)ᴴ i✝ j✝ = col ι (star v) i✝ j✝
state_after: no goals
Theorem: mul_lt_of_one_lt_right
File: Mathlib/Algebra/Order/Ring/Defs.lean

tactic: simpa only [mul_one] using mul_lt_mul_of_neg_left h ha
state_before: α : Type u
β : Type u_1
inst✝¹ : StrictOrderedSemiring α
a b c d : α
inst✝ : ExistsAddOfLE α
ha : a < 0
h : 1 < b
⊢ a * b < a
state_after: no goals
Theorem: Fin.insertNth_rev
File: Mathlib/Data/Fin/Tuple/Basic.lean

tactic: induction j using Fin.succAboveCases
state_before: m n : ℕ
α✝ : Fin (n + 1) → Type u
β : Type v
α : Type u_1
i : Fin (n + 1)
a : α
f : Fin n → α
j : Fin (n + 1)
⊢ i.insertNth a f j.rev = i.rev.insertNth a (f ∘ rev) j
state_after: case i
m n : ℕ
α✝ : Fin (n + 1) → Type u
β : Type v
α : Type u_1
i : Fin (n + 1)
a : α
f : Fin n → α
⊢ Fin (n + 1)

case x
m n : ℕ
α✝ : Fin (n + 1) → Type u
β : Type v
α : Type u_1
i : Fin (n + 1)
a : α
f : Fin n → α
⊢ i.insertNth a f ?i.rev = i.rev.insertNth a (f ∘ rev) ?i

case p
m n : ℕ
α✝ : Fin (n + 1) → Type u
β : Type v
α : Type u_1
i : Fin (n + 1)
a : α
f : Fin n → α
j✝ : Fin n
⊢ i.insertNth a f (?i.succAbove j✝).rev = i.rev.insertNth a (f ∘ rev) (?i.succAbove j✝)

tactic: exact rev i
state_before: case i
m n : ℕ
α✝ : Fin (n + 1) → Type u
β : Type v
α : Type u_1
i : Fin (n + 1)
a : α
f : Fin n → α
⊢ Fin (n + 1)
state_after: no goals

tactic: simp
state_before: case x
m n : ℕ
α✝ : Fin (n + 1) → Type u
β : Type v
α : Type u_1
i : Fin (n + 1)
a : α
f : Fin n → α
⊢ i.insertNth a f i.rev.rev = i.rev.insertNth a (f ∘ rev) i.rev
state_after: no goals

tactic: simp [rev_succAbove]
state_before: case p
m n : ℕ
α✝ : Fin (n + 1) → Type u
β : Type v
α : Type u_1
i : Fin (n + 1)
a : α
f : Fin n → α
j✝ : Fin n
⊢ i.insertNth a f (i.rev.succAbove j✝).rev = i.rev.insertNth a (f ∘ rev) (i.rev.succAbove j✝)
state_after: no goals
Theorem: Polynomial.ofFinsupp_add
File: Mathlib/Algebra/Polynomial/Basic.lean

tactic: rw [add_def]
state_before: R : Type u
a✝ b✝ : R
m n : ℕ
inst✝ : Semiring R
p q : R[X]
a b : R[ℕ]
⊢ { toFinsupp := a + b } = Polynomial.add { toFinsupp := a } { toFinsupp := b }
state_after: no goals
Theorem: Nat.factorization_choose_eq_zero_of_lt
File: Mathlib/Data/Nat/Choose/Factorization.lean

tactic: by_cases hnk : n < k
state_before: p n k : ℕ
h : n < p
⊢ (n.choose k).factorization p = 0
state_after: case pos
p n k : ℕ
h : n < p
hnk : n < k
⊢ (n.choose k).factorization p = 0

case neg
p n k : ℕ
h : n < p
hnk : ¬n < k
⊢ (n.choose k).factorization p = 0

tactic: rw [choose_eq_factorial_div_factorial (le_of_not_lt hnk),
  factorization_div (factorial_mul_factorial_dvd_factorial (le_of_not_lt hnk)), Finsupp.coe_tsub,
  Pi.sub_apply, factorization_factorial_eq_zero_of_lt h, zero_tsub]
state_before: case neg
p n k : ℕ
h : n < p
hnk : ¬n < k
⊢ (n.choose k).factorization p = 0
state_after: no goals

tactic: simp [choose_eq_zero_of_lt hnk]
state_before: case pos
p n k : ℕ
h : n < p
hnk : n < k
⊢ (n.choose k).factorization p = 0
state_after: no goals
Theorem: YoungDiagram.mem_col_iff
File: Mathlib/Combinatorics/Young/YoungDiagram.lean

tactic: simp [col]
state_before: μ : YoungDiagram
j : ℕ
c : ℕ × ℕ
⊢ c ∈ μ.col j ↔ c ∈ μ ∧ c.2 = j
state_after: no goals
Theorem: Matrix.mem_unitaryGroup_iff
File: Mathlib/LinearAlgebra/UnitaryGroup.lean

tactic: refine ⟨And.right, fun hA => ⟨?_, hA⟩⟩
state_before: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
α : Type v
inst✝¹ : CommRing α
inst✝ : StarRing α
A : Matrix n n α
⊢ A ∈ unitaryGroup n α ↔ A * star A = 1
state_after: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
α : Type v
inst✝¹ : CommRing α
inst✝ : StarRing α
A : Matrix n n α
hA : A * star A = 1
⊢ star A * A = 1

tactic: simpa only [mul_eq_one_comm] using hA
state_before: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
α : Type v
inst✝¹ : CommRing α
inst✝ : StarRing α
A : Matrix n n α
hA : A * star A = 1
⊢ star A * A = 1
state_after: no goals
Theorem: TopologicalGroup.t1Space
File: Mathlib/Topology/Algebra/Group/Basic.lean

tactic: simpa using isClosedMap_mul_right x _ h
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : ContinuousMul G
h : IsClosed {1}
x : G
⊢ IsClosed {x}
state_after: no goals
Theorem: CategoryTheory.OverPresheafAux.YonedaCollection.map₁_map₂
File: Mathlib/CategoryTheory/Comma/Presheaf.lean

tactic: ext
state_before: C : Type u
inst✝ : Category.{v, u} C
A : Cᵒᵖ ⥤ Type v
F : (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
X : C
G : (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
η : F ⟶ G
Y : C
f : X ⟶ Y
p : YonedaCollection F Y
⊢ map₂ G f (map₁ η p) = map₁ η (map₂ F f p)
state_after: case h.w.h.h
C : Type u
inst✝ : Category.{v, u} C
A : Cᵒᵖ ⥤ Type v
F : (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
X : C
G : (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
η : F ⟶ G
Y : C
f : X ⟶ Y
p : YonedaCollection F Y
x✝ : Cᵒᵖ
a✝ : (yoneda.obj X).obj x✝
⊢ (map₂ G f (map₁ η p)).fst.app x✝ a✝ = (map₁ η (map₂ F f p)).fst.app x✝ a✝

case h'
C : Type u
inst✝ : Category.{v, u} C
A : Cᵒᵖ ⥤ Type v
F : (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
X : C
G : (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
η : F ⟶ G
Y : C
f : X ⟶ Y
p : YonedaCollection F Y
⊢ G.map (eqToHom ⋯) (map₁ η (map₂ F f p)).snd = (map₂ G f (map₁ η p)).snd

tactic: all_goals simp
state_before: case h.w.h.h
C : Type u
inst✝ : Category.{v, u} C
A : Cᵒᵖ ⥤ Type v
F : (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
X : C
G : (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
η : F ⟶ G
Y : C
f : X ⟶ Y
p : YonedaCollection F Y
x✝ : Cᵒᵖ
a✝ : (yoneda.obj X).obj x✝
⊢ (map₂ G f (map₁ η p)).fst.app x✝ a✝ = (map₁ η (map₂ F f p)).fst.app x✝ a✝

case h'
C : Type u
inst✝ : Category.{v, u} C
A : Cᵒᵖ ⥤ Type v
F : (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
X : C
G : (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
η : F ⟶ G
Y : C
f : X ⟶ Y
p : YonedaCollection F Y
⊢ G.map (eqToHom ⋯) (map₁ η (map₂ F f p)).snd = (map₂ G f (map₁ η p)).snd
state_after: no goals

tactic: simp
state_before: case h'
C : Type u
inst✝ : Category.{v, u} C
A : Cᵒᵖ ⥤ Type v
F : (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
X : C
G : (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
η : F ⟶ G
Y : C
f : X ⟶ Y
p : YonedaCollection F Y
⊢ G.map (eqToHom ⋯) (map₁ η (map₂ F f p)).snd = (map₂ G f (map₁ η p)).snd
state_after: no goals