1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Finset.centerMass_filter_ne_zero
File: Mathlib/Analysis/Convex/Combination.lean

tactic: simpa only [hit, mem_filter, true_and_iff, Ne, Classical.not_not] using hit'
state_before: R : Type u_1
R' : Type u_2
E : Type u_3
F : Type u_4
ι : Type u_5
ι' : Type u_6
α : Type u_7
inst✝⁸ : LinearOrderedField R
inst✝⁷ : LinearOrderedField R'
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module R E
inst✝² : Module R F
inst✝¹ : Module R α
inst✝ : OrderedSMul R α
s : Set E
i✝ j : ι
c : R
t : Finset ι
w : ι → R
z : ι → E
i : ι
hit : i ∈ t
hit' : i ∉ filter (fun i => w i ≠ 0) t
⊢ w i = 0
state_after: no goals
Theorem: AlgebraicGeometry.QuasiSeparated.affine_openCover_iff
File: Mathlib/AlgebraicGeometry/Morphisms/QuasiSeparated.lean

tactic: rw [quasiSeparated_eq_affineProperty,
  QuasiSeparated.affineProperty_isLocal.affine_openCover_iff f 𝒰]
state_before: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
𝒰 : Y.OpenCover
inst✝ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)
f : X ⟶ Y
⊢ QuasiSeparated f ↔ ∀ (i : 𝒰.J), QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace
state_after: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
𝒰 : Y.OpenCover
inst✝ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)
f : X ⟶ Y
⊢ (∀ (i : 𝒰.J), affineProperty pullback.snd) ↔
    ∀ (i : 𝒰.J), QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace

tactic: rfl
state_before: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
𝒰 : Y.OpenCover
inst✝ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)
f : X ⟶ Y
⊢ (∀ (i : 𝒰.J), affineProperty pullback.snd) ↔
    ∀ (i : 𝒰.J), QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace
state_after: no goals
Theorem: Finset.noncommProd_lemma
File: Mathlib/Data/Finset/NoncommProd.lean

tactic: simp_rw [Multiset.mem_map]
state_before: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
f✝ : α → β → β
op : α → α → α
inst✝¹ : Monoid β
inst✝ : Monoid γ
s : Finset α
f : α → β
comm : (↑s).Pairwise fun a b => Commute (f a) (f b)
⊢ {x | x ∈ Multiset.map f s.val}.Pairwise Commute
state_after: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
f✝ : α → β → β
op : α → α → α
inst✝¹ : Monoid β
inst✝ : Monoid γ
s : Finset α
f : α → β
comm : (↑s).Pairwise fun a b => Commute (f a) (f b)
⊢ {x | ∃ a ∈ s.val, f a = x}.Pairwise Commute

tactic: rintro _ ⟨a, ha, rfl⟩ _ ⟨b, hb, rfl⟩ _
state_before: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
f✝ : α → β → β
op : α → α → α
inst✝¹ : Monoid β
inst✝ : Monoid γ
s : Finset α
f : α → β
comm : (↑s).Pairwise fun a b => Commute (f a) (f b)
⊢ {x | ∃ a ∈ s.val, f a = x}.Pairwise Commute
state_after: case intro.intro.intro.intro
F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
f✝ : α → β → β
op : α → α → α
inst✝¹ : Monoid β
inst✝ : Monoid γ
s : Finset α
f : α → β
comm : (↑s).Pairwise fun a b => Commute (f a) (f b)
a : α
ha : a ∈ s.val
b : α
hb : b ∈ s.val
a✝ : f a ≠ f b
⊢ Commute (f a) (f b)

tactic: exact comm.of_refl ha hb
state_before: case intro.intro.intro.intro
F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
f✝ : α → β → β
op : α → α → α
inst✝¹ : Monoid β
inst✝ : Monoid γ
s : Finset α
f : α → β
comm : (↑s).Pairwise fun a b => Commute (f a) (f b)
a : α
ha : a ∈ s.val
b : α
hb : b ∈ s.val
a✝ : f a ≠ f b
⊢ Commute (f a) (f b)
state_after: no goals
Theorem: Submonoid.mk_eq_one
File: Mathlib/Algebra/Group/Submonoid/Operations.lean

tactic: simp [← SetLike.coe_eq_coe]
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : MulOneClass P
S : Submonoid M
A : Type u_4
inst✝ : SetLike A M
hA : SubmonoidClass A M
S' : A
a : M
ha : a ∈ S
⊢ ⟨a, ha⟩ = 1 ↔ a = 1
state_after: no goals
Theorem: Submodule.mul_annihilator
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: rw [mul_comm, annihilator_mul]
state_before: R : Type u
M : Type v
M' : Type u_1
F : Type u_2
G : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
I✝ J : Ideal R
N P : Submodule R M
I : Ideal R
⊢ I * annihilator I = ⊥
state_after: no goals
Theorem: OrderEmbedding.image_Ioc
File: Mathlib/Order/Interval/Set/OrdConnected.lean

tactic: rw [← e.preimage_Ioc, image_preimage_eq_inter_range,
  inter_eq_left.2 <| Ioc_subset_Icc_self.trans <| he.out ⟨_, rfl⟩ ⟨_, rfl⟩]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : Preorder β
e : α ↪o β
he : (range ⇑e).OrdConnected
x y : α
⊢ ⇑e '' Ioc x y = Ioc (e x) (e y)
state_after: no goals
Theorem: lineMap_strict_mono_endpoints
File: Mathlib/LinearAlgebra/AffineSpace/Ordered.lean

tactic: rcases h₀.eq_or_lt with (rfl | h₀)
state_before: k : Type u_1
E : Type u_2
PE : Type u_3
inst✝³ : OrderedRing k
inst✝² : OrderedAddCommGroup E
inst✝¹ : Module k E
inst✝ : OrderedSMul k E
a a' b b' : E
r r' : k
ha : a < a'
hb : b < b'
h₀ : 0 ≤ r
h₁ : r ≤ 1
⊢ (lineMap a b) r < (lineMap a' b') r
state_after: case inl
k : Type u_1
E : Type u_2
PE : Type u_3
inst✝³ : OrderedRing k
inst✝² : OrderedAddCommGroup E
inst✝¹ : Module k E
inst✝ : OrderedSMul k E
a a' b b' : E
r' : k
ha : a < a'
hb : b < b'
h₀ : 0 ≤ 0
h₁ : 0 ≤ 1
⊢ (lineMap a b) 0 < (lineMap a' b') 0

case inr
k : Type u_1
E : Type u_2
PE : Type u_3
inst✝³ : OrderedRing k
inst✝² : OrderedAddCommGroup E
inst✝¹ : Module k E
inst✝ : OrderedSMul k E
a a' b b' : E
r r' : k
ha : a < a'
hb : b < b'
h₀✝ : 0 ≤ r
h₁ : r ≤ 1
h₀ : 0 < r
⊢ (lineMap a b) r < (lineMap a' b') r

tactic: exact (lineMap_mono_left ha.le h₁).trans_lt (lineMap_strict_mono_right hb h₀)
state_before: case inr
k : Type u_1
E : Type u_2
PE : Type u_3
inst✝³ : OrderedRing k
inst✝² : OrderedAddCommGroup E
inst✝¹ : Module k E
inst✝ : OrderedSMul k E
a a' b b' : E
r r' : k
ha : a < a'
hb : b < b'
h₀✝ : 0 ≤ r
h₁ : r ≤ 1
h₀ : 0 < r
⊢ (lineMap a b) r < (lineMap a' b') r
state_after: no goals

tactic: simpa
state_before: case inl
k : Type u_1
E : Type u_2
PE : Type u_3
inst✝³ : OrderedRing k
inst✝² : OrderedAddCommGroup E
inst✝¹ : Module k E
inst✝ : OrderedSMul k E
a a' b b' : E
r' : k
ha : a < a'
hb : b < b'
h₀ : 0 ≤ 0
h₁ : 0 ≤ 1
⊢ (lineMap a b) 0 < (lineMap a' b') 0
state_after: no goals
Theorem: Equiv.Perm.sumCongrHom_injective
File: Mathlib/GroupTheory/Perm/Basic.lean

tactic: rintro ⟨⟩ ⟨⟩ h
state_before: α✝ : Type u
β✝ : Type v
α : Type u_1
β : Type u_2
⊢ Function.Injective ⇑(sumCongrHom α β)
state_after: case mk.mk
α✝ : Type u
β✝ : Type v
α : Type u_1
β : Type u_2
fst✝¹ : Perm α
snd✝¹ : Perm β
fst✝ : Perm α
snd✝ : Perm β
h : (sumCongrHom α β) (fst✝¹, snd✝¹) = (sumCongrHom α β) (fst✝, snd✝)
⊢ (fst✝¹, snd✝¹) = (fst✝, snd✝)

tactic: rw [Prod.mk.inj_iff]
state_before: case mk.mk
α✝ : Type u
β✝ : Type v
α : Type u_1
β : Type u_2
fst✝¹ : Perm α
snd✝¹ : Perm β
fst✝ : Perm α
snd✝ : Perm β
h : (sumCongrHom α β) (fst✝¹, snd✝¹) = (sumCongrHom α β) (fst✝, snd✝)
⊢ (fst✝¹, snd✝¹) = (fst✝, snd✝)
state_after: case mk.mk
α✝ : Type u
β✝ : Type v
α : Type u_1
β : Type u_2
fst✝¹ : Perm α
snd✝¹ : Perm β
fst✝ : Perm α
snd✝ : Perm β
h : (sumCongrHom α β) (fst✝¹, snd✝¹) = (sumCongrHom α β) (fst✝, snd✝)
⊢ fst✝¹ = fst✝ ∧ snd✝¹ = snd✝

tactic: constructor <;> ext i
state_before: case mk.mk
α✝ : Type u
β✝ : Type v
α : Type u_1
β : Type u_2
fst✝¹ : Perm α
snd✝¹ : Perm β
fst✝ : Perm α
snd✝ : Perm β
h : (sumCongrHom α β) (fst✝¹, snd✝¹) = (sumCongrHom α β) (fst✝, snd✝)
⊢ fst✝¹ = fst✝ ∧ snd✝¹ = snd✝
state_after: case mk.mk.left.H
α✝ : Type u
β✝ : Type v
α : Type u_1
β : Type u_2
fst✝¹ : Perm α
snd✝¹ : Perm β
fst✝ : Perm α
snd✝ : Perm β
h : (sumCongrHom α β) (fst✝¹, snd✝¹) = (sumCongrHom α β) (fst✝, snd✝)
i : α
⊢ fst✝¹ i = fst✝ i

case mk.mk.right.H
α✝ : Type u
β✝ : Type v
α : Type u_1
β : Type u_2
fst✝¹ : Perm α
snd✝¹ : Perm β
fst✝ : Perm α
snd✝ : Perm β
h : (sumCongrHom α β) (fst✝¹, snd✝¹) = (sumCongrHom α β) (fst✝, snd✝)
i : β
⊢ snd✝¹ i = snd✝ i

tactic: simpa using Equiv.congr_fun h (Sum.inl i)
state_before: case mk.mk.left.H
α✝ : Type u
β✝ : Type v
α : Type u_1
β : Type u_2
fst✝¹ : Perm α
snd✝¹ : Perm β
fst✝ : Perm α
snd✝ : Perm β
h : (sumCongrHom α β) (fst✝¹, snd✝¹) = (sumCongrHom α β) (fst✝, snd✝)
i : α
⊢ fst✝¹ i = fst✝ i
state_after: no goals

tactic: simpa using Equiv.congr_fun h (Sum.inr i)
state_before: case mk.mk.right.H
α✝ : Type u
β✝ : Type v
α : Type u_1
β : Type u_2
fst✝¹ : Perm α
snd✝¹ : Perm β
fst✝ : Perm α
snd✝ : Perm β
h : (sumCongrHom α β) (fst✝¹, snd✝¹) = (sumCongrHom α β) (fst✝, snd✝)
i : β
⊢ snd✝¹ i = snd✝ i
state_after: no goals
Theorem: NNReal.tsum_pos
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: rw [← tsum_zero]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
g : α → ℝ≥0
hg : Summable g
i : α
hi : 0 < g i
⊢ 0 < ∑' (b : α), g b
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
g : α → ℝ≥0
hg : Summable g
i : α
hi : 0 < g i
⊢ ∑' (x : ?m.295819), 0 < ∑' (b : α), g b

α : Type u_1
β : Type u_2
γ : Type u_3
g : α → ℝ≥0
hg : Summable g
i : α
hi : 0 < g i
⊢ Type ?u.295816

tactic: exact tsum_lt_tsum (fun a => zero_le _) hi hg
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
g : α → ℝ≥0
hg : Summable g
i : α
hi : 0 < g i
⊢ ∑' (x : ?m.295819), 0 < ∑' (b : α), g b

α : Type u_1
β : Type u_2
γ : Type u_3
g : α → ℝ≥0
hg : Summable g
i : α
hi : 0 < g i
⊢ Type ?u.295816
state_after: no goals
Theorem: Set.inter_indicator_one
File: Mathlib/Algebra/GroupWithZero/Indicator.lean

tactic: simp only [← inter_indicator_mul, Pi.mul_apply, Pi.one_apply, one_mul]
state_before: ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝ : MulZeroOneClass M₀
s t : Set ι
i x✝ : ι
⊢ (s ∩ t).indicator 1 x✝ = (s.indicator 1 * t.indicator 1) x✝
state_after: ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝ : MulZeroOneClass M₀
s t : Set ι
i x✝ : ι
⊢ (s ∩ t).indicator 1 x✝ = (s ∩ t).indicator (fun j => 1) x✝

tactic: congr
state_before: ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝ : MulZeroOneClass M₀
s t : Set ι
i x✝ : ι
⊢ (s ∩ t).indicator 1 x✝ = (s ∩ t).indicator (fun j => 1) x✝
state_after: no goals
Theorem: Cardinal.mk_set
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: simp [← one_add_one_eq_two, Set, mk_arrow]
state_before: α✝ β α : Type u
⊢ #(Set α) = 2 ^ #α
state_after: no goals
Theorem: ContDiffBump.pos_of_mem_ball
File: Mathlib/Analysis/Calculus/BumpFunction/Basic.lean

tactic: rwa [← support_eq, mem_support] at hx
state_before: E : Type u_1
X : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup X
inst✝¹ : NormedSpace ℝ X
inst✝ : HasContDiffBump E
c : E
f : ContDiffBump c
x : E
n : ℕ∞
hx : x ∈ ball c f.rOut
⊢ ↑f x ≠ 0
state_after: no goals
Theorem: hasFDerivAt_iff_hasGradientAt
File: Mathlib/Analysis/Calculus/Gradient/Basic.lean

tactic: rw [hasGradientAt_iff_hasFDerivAt, (toDual 𝕜 F).apply_symm_apply frechet]
state_before: 𝕜 : Type u_1
F : Type u_2
inst✝³ : RCLike 𝕜
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace F
f : F → 𝕜
f' x : F
s : Set F
L : Filter F
frechet : F →L[𝕜] 𝕜
⊢ HasFDerivAt f frechet x ↔ HasGradientAt f ((toDual 𝕜 F).symm frechet) x
state_after: no goals
Theorem: Function.Antiperiodic.int_mul_eq_of_eq_zero
File: Mathlib/Algebra/Periodic.lean

tactic: rw [Int.cast_natCast, h.nat_mul_eq_of_eq_zero hi n]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x : α
inst✝¹ : Ring α
inst✝ : SubtractionMonoid β
h : Antiperiodic f c
hi : f 0 = 0
n : ℕ
⊢ f (↑↑n * c) = 0
state_after: no goals

tactic: rw [Int.cast_negSucc, neg_mul, ← mul_neg, h.neg.nat_mul_eq_of_eq_zero hi]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x : α
inst✝¹ : Ring α
inst✝ : SubtractionMonoid β
h : Antiperiodic f c
hi : f 0 = 0
n : ℕ
⊢ f (↑(Int.negSucc n) * c) = 0
state_after: no goals
Theorem: span_fourierLp_closure_eq_top
File: Mathlib/Analysis/Fourier/AddCircle.lean

tactic: convert
  (ContinuousMap.toLp_denseRange ℂ (@haarAddCircle T hT) hp ℂ).topologicalClosure_map_submodule
    span_fourier_closure_eq_top
state_before: T : ℝ
hT : Fact (0 < T)
p : ℝ≥0∞
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
⊢ (span ℂ (range (fourierLp p))).topologicalClosure = ⊤
state_after: case h.e'_2.h.e'_9.h.h
T : ℝ
hT : Fact (0 < T)
p : ℝ≥0∞
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
e_3✝ : Complex.instSemiring = DivisionSemiring.toSemiring
he✝ : Lp.instModule = Lp.instModule
⊢ span ℂ (range (fourierLp p)) = Submodule.map (↑(toLp p haarAddCircle ℂ)) (span ℂ (range fourier))

tactic: erw [map_span, range_comp]
state_before: case h.e'_2.h.e'_9.h.h
T : ℝ
hT : Fact (0 < T)
p : ℝ≥0∞
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
e_3✝ : Complex.instSemiring = DivisionSemiring.toSemiring
he✝ : Lp.instModule = Lp.instModule
⊢ span ℂ (range (fourierLp p)) = Submodule.map (↑(toLp p haarAddCircle ℂ)) (span ℂ (range fourier))
state_after: case h.e'_2.h.e'_9.h.h
T : ℝ
hT : Fact (0 < T)
p : ℝ≥0∞
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
e_3✝ : Complex.instSemiring = DivisionSemiring.toSemiring
he✝ : Lp.instModule = Lp.instModule
⊢ span ℂ (⇑(toLp p haarAddCircle ℂ) '' range fourier) = span ℂ (⇑↑(toLp p haarAddCircle ℂ) '' range fourier)

tactic: simp only [ContinuousLinearMap.coe_coe]
state_before: case h.e'_2.h.e'_9.h.h
T : ℝ
hT : Fact (0 < T)
p : ℝ≥0∞
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
e_3✝ : Complex.instSemiring = DivisionSemiring.toSemiring
he✝ : Lp.instModule = Lp.instModule
⊢ span ℂ (⇑(toLp p haarAddCircle ℂ) '' range fourier) = span ℂ (⇑↑(toLp p haarAddCircle ℂ) '' range fourier)
state_after: no goals
Theorem: zpow_le_max_iff_min_le
File: Mathlib/Algebra/Order/Field/Power.lean

tactic: simp_rw [le_max_iff, min_le_iff, zpow_le_iff_le hx, neg_le_neg_iff]
state_before: α : Type u_1
inst✝ : LinearOrderedSemifield α
a✝ b✝ c✝ d e : α
m n : ℤ
x : α
hx : 1 < x
a b c : ℤ
⊢ x ^ (-c) ≤ max (x ^ (-a)) (x ^ (-b)) ↔ min a b ≤ c
state_after: no goals
Theorem: Polynomial.IsRoot.dvd
File: Mathlib/Algebra/Polynomial/Eval.lean

tactic: rwa [IsRoot, eval, eval₂_eq_zero_of_dvd_of_eval₂_eq_zero _ _ hpq]
state_before: R✝ : Type u
S : Type v
T : Type w
ι : Type y
a b : R✝
m n : ℕ
inst✝¹ : Semiring R✝
p✝ q✝ r : R✝[X]
x✝ : R✝
R : Type u_1
inst✝ : CommSemiring R
p q : R[X]
x : R
h : p.IsRoot x
hpq : p ∣ q
⊢ q.IsRoot x
state_after: no goals
Theorem: Real.arcsin_eq_arccos
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Inverse.lean

tactic: rw [eq_comm, ← cos_arcsin]
state_before: x✝ y x : ℝ
h : 0 ≤ x
⊢ arcsin x = arccos √(1 - x ^ 2)
state_after: x✝ y x : ℝ
h : 0 ≤ x
⊢ arccos (cos (arcsin x)) = arcsin x

tactic: exact
  arccos_cos (arcsin_nonneg.2 h)
    ((arcsin_le_pi_div_two _).trans (div_le_self pi_pos.le one_le_two))
state_before: x✝ y x : ℝ
h : 0 ≤ x
⊢ arccos (cos (arcsin x)) = arcsin x
state_after: no goals
Theorem: Denumerable.encode_ofNat
File: Mathlib/Logic/Denumerable.lean

tactic: obtain ⟨a, h, e⟩ := decode_inv (α := α) n
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Denumerable α
inst✝ : Denumerable β
n : ℕ
⊢ encode (ofNat α n) = n
state_after: case intro.intro
α : Type u_1
β : Type u_2
inst✝¹ : Denumerable α
inst✝ : Denumerable β
n : ℕ
a : α
h : a ∈ decode n
e : encode a = n
⊢ encode (ofNat α n) = n

tactic: rwa [ofNat_of_decode h]
state_before: case intro.intro
α : Type u_1
β : Type u_2
inst✝¹ : Denumerable α
inst✝ : Denumerable β
n : ℕ
a : α
h : a ∈ decode n
e : encode a = n
⊢ encode (ofNat α n) = n
state_after: no goals
Theorem: LinearMap.baseChange_add
File: Mathlib/RingTheory/TensorProduct/Basic.lean

tactic: ext
state_before: R : Type u_1
A : Type u_2
B : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
inst✝¹⁰ : CommSemiring R
inst✝⁹ : Semiring A
inst✝⁸ : Algebra R A
inst✝⁷ : Semiring B
inst✝⁶ : Algebra R B
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
r : R
f g : M →ₗ[R] N
⊢ baseChange A (f + g) = baseChange A f + baseChange A g
state_after: case a.h.h
R : Type u_1
A : Type u_2
B : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
inst✝¹⁰ : CommSemiring R
inst✝⁹ : Semiring A
inst✝⁸ : Algebra R A
inst✝⁷ : Semiring B
inst✝⁶ : Algebra R B
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
r : R
f g : M →ₗ[R] N
x✝ : M
⊢ ((AlgebraTensorModule.curry (baseChange A (f + g))) 1) x✝ =
    ((AlgebraTensorModule.curry (baseChange A f + baseChange A g)) 1) x✝

tactic: simp [baseChange_eq_ltensor, -baseChange_tmul]
state_before: case a.h.h
R : Type u_1
A : Type u_2
B : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
inst✝¹⁰ : CommSemiring R
inst✝⁹ : Semiring A
inst✝⁸ : Algebra R A
inst✝⁷ : Semiring B
inst✝⁶ : Algebra R B
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
r : R
f g : M →ₗ[R] N
x✝ : M
⊢ ((AlgebraTensorModule.curry (baseChange A (f + g))) 1) x✝ =
    ((AlgebraTensorModule.curry (baseChange A f + baseChange A g)) 1) x✝
state_after: no goals
Theorem: CategoryTheory.Functor.shiftMap_comp
File: Mathlib/CategoryTheory/Shift/ShiftSequence.lean

tactic: simp [shiftMap]
state_before: C : Type u_1
A : Type u_2
inst✝⁶ : Category.{u_5, u_1} C
inst✝⁵ : Category.{u_6, u_2} A
F : C ⥤ A
M : Type u_3
inst✝⁴ : AddMonoid M
inst✝³ : HasShift C M
G : Type u_4
inst✝² : AddGroup G
inst✝¹ : HasShift C G
inst✝ : F.ShiftSequence M
X Y Z : C
n : M
f : X ⟶ (shiftFunctor C n).obj Y
g : Y ⟶ Z
a a' : M
ha' : n + a = a'
⊢ F.shiftMap (f ≫ (shiftFunctor C n).map g) a a' ha' = F.shiftMap f a a' ha' ≫ (F.shift a').map g
state_after: no goals
Theorem: Finset.hasProd_compl_iff
File: Mathlib/Topology/Algebra/InfiniteSum/Group.lean

tactic: rw [mul_comm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝² : CommGroup α
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalGroup α
f g : β → α
a a₁ a₂ : α
s : Finset β
⊢ HasProd f ((∏ b ∈ s, f b) * a) ↔ HasProd f (a * ∏ i ∈ s, f i)
state_after: no goals
Theorem: Pi.toLex_update_le_self_iff
File: Mathlib/Order/PiLex.lean

tactic: simp_rw [le_iff_lt_or_eq, toLex_update_lt_self_iff, toLex_inj, update_eq_self_iff]
state_before: ι : Type u_1
β : ι → Type u_2
r : ι → ι → Prop
s : {i : ι} → β i → β i → Prop
inst✝² : LinearOrder ι
inst✝¹ : IsWellOrder ι fun x x_1 => x < x_1
inst✝ : (i : ι) → PartialOrder (β i)
x y : (i : ι) → β i
i : ι
a : β i
⊢ toLex (update x i a) ≤ toLex x ↔ a ≤ x i
state_after: no goals
Theorem: QuotientGroup.rightRel_r_eq_rightCosetEquivalence
File: Mathlib/GroupTheory/Coset.lean

tactic: ext
state_before: α : Type u_1
inst✝ : Group α
s : Subgroup α
⊢ Setoid.r = RightCosetEquivalence ↑s
state_after: case h.h.a
α : Type u_1
inst✝ : Group α
s : Subgroup α
x✝¹ x✝ : α
⊢ Setoid.r x✝¹ x✝ ↔ RightCosetEquivalence (↑s) x✝¹ x✝

tactic: rw [rightRel_eq]
state_before: case h.h.a
α : Type u_1
inst✝ : Group α
s : Subgroup α
x✝¹ x✝ : α
⊢ Setoid.r x✝¹ x✝ ↔ RightCosetEquivalence (↑s) x✝¹ x✝
state_after: case h.h.a
α : Type u_1
inst✝ : Group α
s : Subgroup α
x✝¹ x✝ : α
⊢ (fun x y => y * x⁻¹ ∈ s) x✝¹ x✝ ↔ RightCosetEquivalence (↑s) x✝¹ x✝

tactic: exact (rightCoset_eq_iff s).symm
state_before: case h.h.a
α : Type u_1
inst✝ : Group α
s : Subgroup α
x✝¹ x✝ : α
⊢ (fun x y => y * x⁻¹ ∈ s) x✝¹ x✝ ↔ RightCosetEquivalence (↑s) x✝¹ x✝
state_after: no goals
Theorem: TensorAlgebra.ι_comp_lift
File: Mathlib/LinearAlgebra/TensorAlgebra/Basic.lean

tactic: convert (lift R).symm_apply_apply f
state_before: R : Type u_1
inst✝⁴ : CommSemiring R
M : Type u_2
inst✝³ : AddCommMonoid M
inst✝² : Module R M
A : Type u_3
inst✝¹ : Semiring A
inst✝ : Algebra R A
f : M →ₗ[R] A
⊢ ((lift R) f).toLinearMap ∘ₗ ι R = f
state_after: no goals
Theorem: ball_add_closedBall
File: Mathlib/Analysis/NormedSpace/Pointwise.lean

tactic: rw [ball_add, thickening_closedBall hε hδ b, Metric.vadd_ball, vadd_eq_add]
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : NormedSpace ℝ E
x y z : E
δ ε : ℝ
hε : 0 < ε
hδ : 0 ≤ δ
a b : E
⊢ Metric.ball a ε + Metric.closedBall b δ = Metric.ball (a + b) (ε + δ)
state_after: no goals
Theorem: Complex.norm_log_natCast_le_rpow_div
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: rcases n.eq_zero_or_pos with rfl | h
state_before: n : ℕ
ε : ℝ
hε : 0 < ε
⊢ ‖log ↑n‖ ≤ ↑n ^ ε / ε
state_after: case inl
ε : ℝ
hε : 0 < ε
⊢ ‖log ↑0‖ ≤ ↑0 ^ ε / ε

case inr
n : ℕ
ε : ℝ
hε : 0 < ε
h : n > 0
⊢ ‖log ↑n‖ ≤ ↑n ^ ε / ε

tactic: rw [norm_eq_abs, ← natCast_log, abs_ofReal,
  _root_.abs_of_nonneg <| Real.log_nonneg <| by exact_mod_cast Nat.one_le_of_lt h.lt]
state_before: case inr
n : ℕ
ε : ℝ
hε : 0 < ε
h : n > 0
⊢ ‖log ↑n‖ ≤ ↑n ^ ε / ε
state_after: case inr
n : ℕ
ε : ℝ
hε : 0 < ε
h : n > 0
⊢ Real.log ↑n ≤ ↑n ^ ε / ε

tactic: exact Real.log_natCast_le_rpow_div n hε
state_before: case inr
n : ℕ
ε : ℝ
hε : 0 < ε
h : n > 0
⊢ Real.log ↑n ≤ ↑n ^ ε / ε
state_after: no goals

tactic: rw [Nat.cast_zero, Nat.cast_zero, log_zero, norm_zero, Real.zero_rpow hε.ne', zero_div]
state_before: case inl
ε : ℝ
hε : 0 < ε
⊢ ‖log ↑0‖ ≤ ↑0 ^ ε / ε
state_after: no goals

tactic: exact_mod_cast Nat.one_le_of_lt h.lt
state_before: n : ℕ
ε : ℝ
hε : 0 < ε
h : n > 0
⊢ 1 ≤ ↑n
state_after: no goals
Theorem: Nat.ofDigits_one_cons
File: Mathlib/Data/Nat/Digits.lean

tactic: simp [ofDigits]
state_before: n : ℕ
α : Type u_1
inst✝ : Semiring α
h : ℕ
L : List ℕ
⊢ ofDigits 1 (h :: L) = ↑h + ofDigits 1 L
state_after: no goals
Theorem: CategoryTheory.Subobject.pullback_comp
File: Mathlib/CategoryTheory/Subobject/Basic.lean

tactic: induction' x using Quotient.inductionOn' with t
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : HasPullbacks C
f : X ⟶ Y
g : Y ⟶ Z
x : Subobject Z
⊢ (pullback (f ≫ g)).obj x = (pullback f).obj ((pullback g).obj x)
state_after: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : HasPullbacks C
f : X ⟶ Y
g : Y ⟶ Z
t : MonoOver Z
⊢ (pullback (f ≫ g)).obj (Quotient.mk'' t) = (pullback f).obj ((pullback g).obj (Quotient.mk'' t))

tactic: exact Quotient.sound ⟨(MonoOver.pullbackComp _ _).app t⟩
state_before: case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : HasPullbacks C
f : X ⟶ Y
g : Y ⟶ Z
t : MonoOver Z
⊢ (pullback (f ≫ g)).obj (Quotient.mk'' t) = (pullback f).obj ((pullback g).obj (Quotient.mk'' t))
state_after: no goals
Theorem: MeasurableSet.measurableSet_liminf
File: Mathlib/MeasureTheory/MeasurableSpace/Basic.lean

tactic: simpa only [← bliminf_true] using measurableSet_bliminf fun n _ => hs n
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u : Set α
inst✝ : MeasurableSpace α
s : ℕ → Set α
hs : ∀ (n : ℕ), MeasurableSet (s n)
⊢ MeasurableSet (liminf s atTop)
state_after: no goals
Theorem: Polynomial.divX_one
File: Mathlib/Algebra/Polynomial/Inductions.lean

tactic: ext
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Semiring R
p q : R[X]
⊢ divX 1 = 0
state_after: case a
R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Semiring R
p q : R[X]
n✝ : ℕ
⊢ (divX 1).coeff n✝ = coeff 0 n✝

tactic: simpa only [coeff_divX, coeff_zero] using coeff_one
state_before: case a
R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Semiring R
p q : R[X]
n✝ : ℕ
⊢ (divX 1).coeff n✝ = coeff 0 n✝
state_after: no goals