1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: IsSelfAdjoint.conj_orthogonalProjection
File: Mathlib/Analysis/InnerProductSpace/Adjoint.lean

tactic: rw [← ContinuousLinearMap.comp_assoc]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁹ : RCLike 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace F
T : E →L[𝕜] E
hT : IsSelfAdjoint T
U : Submodule 𝕜 E
inst✝ : CompleteSpace ↥U
⊢ IsSelfAdjoint (U.subtypeL.comp ((orthogonalProjection U).comp (T.comp (U.subtypeL.comp (orthogonalProjection U)))))
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁹ : RCLike 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace F
T : E →L[𝕜] E
hT : IsSelfAdjoint T
U : Submodule 𝕜 E
inst✝ : CompleteSpace ↥U
⊢ IsSelfAdjoint ((U.subtypeL.comp (orthogonalProjection U)).comp (T.comp (U.subtypeL.comp (orthogonalProjection U))))

tactic: nth_rw 1 [← (orthogonalProjection_isSelfAdjoint U).adjoint_eq]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁹ : RCLike 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace F
T : E →L[𝕜] E
hT : IsSelfAdjoint T
U : Submodule 𝕜 E
inst✝ : CompleteSpace ↥U
⊢ IsSelfAdjoint ((U.subtypeL.comp (orthogonalProjection U)).comp (T.comp (U.subtypeL.comp (orthogonalProjection U))))
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁹ : RCLike 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace F
T : E →L[𝕜] E
hT : IsSelfAdjoint T
U : Submodule 𝕜 E
inst✝ : CompleteSpace ↥U
⊢ IsSelfAdjoint
    ((adjoint (U.subtypeL.comp (orthogonalProjection U))).comp (T.comp (U.subtypeL.comp (orthogonalProjection U))))

tactic: exact hT.adjoint_conj _
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁹ : RCLike 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace F
T : E →L[𝕜] E
hT : IsSelfAdjoint T
U : Submodule 𝕜 E
inst✝ : CompleteSpace ↥U
⊢ IsSelfAdjoint
    ((adjoint (U.subtypeL.comp (orthogonalProjection U))).comp (T.comp (U.subtypeL.comp (orthogonalProjection U))))
state_after: no goals
Theorem: CategoryTheory.NatIso.cancel_natIso_hom_right
File: Mathlib/CategoryTheory/NatIso.lean

tactic: simp only [cancel_mono, refl]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u₃
inst✝ : Category.{v₃, u₃} E
F G : C ⥤ D
α : F ≅ G
X : D
Y : C
f f' : X ⟶ F.obj Y
⊢ f ≫ α.hom.app Y = f' ≫ α.hom.app Y ↔ f = f'
state_after: no goals
Theorem: BddBelow.bddBelow_image2_of_bddAbove
File: Mathlib/Order/Bounds/Basic.lean

tactic: rintro ⟨a, ha⟩ ⟨b, hb⟩
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Preorder γ
f : α → β → γ
s : Set α
t : Set β
a : α
b : β
h₀ : ∀ (b : β), Monotone (swap f b)
h₁ : ∀ (a : α), Antitone (f a)
⊢ BddBelow s → BddAbove t → BddBelow (image2 f s t)
state_after: case intro.intro
α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Preorder γ
f : α → β → γ
s : Set α
t : Set β
a✝ : α
b✝ : β
h₀ : ∀ (b : β), Monotone (swap f b)
h₁ : ∀ (a : α), Antitone (f a)
a : α
ha : a ∈ lowerBounds s
b : β
hb : b ∈ upperBounds t
⊢ BddBelow (image2 f s t)

tactic: exact ⟨f a b, mem_lowerBounds_image2_of_mem_lowerBounds_of_mem_upperBounds h₀ h₁ ha hb⟩
state_before: case intro.intro
α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Preorder γ
f : α → β → γ
s : Set α
t : Set β
a✝ : α
b✝ : β
h₀ : ∀ (b : β), Monotone (swap f b)
h₁ : ∀ (a : α), Antitone (f a)
a : α
ha : a ∈ lowerBounds s
b : β
hb : b ∈ upperBounds t
⊢ BddBelow (image2 f s t)
state_after: no goals
Theorem: DerivedCategory.triangleOfSES_distinguished
File: Mathlib/Algebra/Homology/DerivedCategory/ShortExact.lean

tactic: rw [mem_distTriang_iff]
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : Abelian C
inst✝ : HasDerivedCategory C
S : ShortComplex (CochainComplex C ℤ)
hS : S.ShortExact
⊢ triangleOfSES hS ∈ distinguishedTriangles
state_after: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : Abelian C
inst✝ : HasDerivedCategory C
S : ShortComplex (CochainComplex C ℤ)
hS : S.ShortExact
⊢ ∃ X Y f, Nonempty (triangleOfSES hS ≅ Q.mapTriangle.obj (CochainComplex.mappingCone.triangle f))

tactic: exact ⟨_, _, S.f, ⟨triangleOfSESIso hS⟩⟩
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : Abelian C
inst✝ : HasDerivedCategory C
S : ShortComplex (CochainComplex C ℤ)
hS : S.ShortExact
⊢ ∃ X Y f, Nonempty (triangleOfSES hS ≅ Q.mapTriangle.obj (CochainComplex.mappingCone.triangle f))
state_after: no goals
Theorem: Matrix.trace_submatrix_succ
File: Mathlib/LinearAlgebra/Matrix/Trace.lean

tactic: delta trace
state_before: ι : Type u_1
m : Type u_2
n✝ : Type u_3
p : Type u_4
α : Type u_5
R : Type u_6
S : Type u_7
inst✝³ : Fintype m
inst✝² : Fintype n✝
inst✝¹ : Fintype p
n : ℕ
inst✝ : NonUnitalNonAssocSemiring R
M : Matrix (Fin n.succ) (Fin n.succ) R
⊢ M 0 0 + (M.submatrix Fin.succ Fin.succ).trace = M.trace
state_after: ι : Type u_1
m : Type u_2
n✝ : Type u_3
p : Type u_4
α : Type u_5
R : Type u_6
S : Type u_7
inst✝³ : Fintype m
inst✝² : Fintype n✝
inst✝¹ : Fintype p
n : ℕ
inst✝ : NonUnitalNonAssocSemiring R
M : Matrix (Fin n.succ) (Fin n.succ) R
⊢ M 0 0 + ∑ i : Fin n, (M.submatrix Fin.succ Fin.succ).diag i = ∑ i : Fin n.succ, M.diag i

tactic: rw [← (finSuccEquiv n).symm.sum_comp]
state_before: ι : Type u_1
m : Type u_2
n✝ : Type u_3
p : Type u_4
α : Type u_5
R : Type u_6
S : Type u_7
inst✝³ : Fintype m
inst✝² : Fintype n✝
inst✝¹ : Fintype p
n : ℕ
inst✝ : NonUnitalNonAssocSemiring R
M : Matrix (Fin n.succ) (Fin n.succ) R
⊢ M 0 0 + ∑ i : Fin n, (M.submatrix Fin.succ Fin.succ).diag i = ∑ i : Fin n.succ, M.diag i
state_after: ι : Type u_1
m : Type u_2
n✝ : Type u_3
p : Type u_4
α : Type u_5
R : Type u_6
S : Type u_7
inst✝³ : Fintype m
inst✝² : Fintype n✝
inst✝¹ : Fintype p
n : ℕ
inst✝ : NonUnitalNonAssocSemiring R
M : Matrix (Fin n.succ) (Fin n.succ) R
⊢ M 0 0 + ∑ i : Fin n, (M.submatrix Fin.succ Fin.succ).diag i = ∑ i : Option (Fin n), M.diag ((finSuccEquiv n).symm i)

tactic: simp
state_before: ι : Type u_1
m : Type u_2
n✝ : Type u_3
p : Type u_4
α : Type u_5
R : Type u_6
S : Type u_7
inst✝³ : Fintype m
inst✝² : Fintype n✝
inst✝¹ : Fintype p
n : ℕ
inst✝ : NonUnitalNonAssocSemiring R
M : Matrix (Fin n.succ) (Fin n.succ) R
⊢ M 0 0 + ∑ i : Fin n, (M.submatrix Fin.succ Fin.succ).diag i = ∑ i : Option (Fin n), M.diag ((finSuccEquiv n).symm i)
state_after: no goals
Theorem: SetTheory.PGame.moveRight_nim
File: Mathlib/SetTheory/Game/Nim.lean

tactic: simp
state_before: o : Ordinal.{u_1}
i : ↑(Set.Iio o)
⊢ (nim o).moveRight (toRightMovesNim i) = nim ↑i
state_after: no goals
Theorem: StrictConcaveOn.map_sum_eq_iff
File: Mathlib/Analysis/Convex/Jensen.lean

tactic: simpa using hf.neg.map_sum_eq_iff h₀ h₁ hmem
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
ι : Type u_5
inst✝⁵ : LinearOrderedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : OrderedAddCommGroup β
inst✝² : Module 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s : Set E
f : E → β
t : Finset ι
w : ι → 𝕜
p : ι → E
v : 𝕜
q : E
hf : StrictConcaveOn 𝕜 s f
h₀ : ∀ i ∈ t, 0 < w i
h₁ : ∑ i ∈ t, w i = 1
hmem : ∀ i ∈ t, p i ∈ s
⊢ f (∑ i ∈ t, w i • p i) = ∑ i ∈ t, w i • f (p i) ↔ ∀ j ∈ t, p j = ∑ i ∈ t, w i • p i
state_after: no goals
Theorem: Ideal.polynomial_not_isField
File: Mathlib/RingTheory/Polynomial/Basic.lean

tactic: nontriviality R
state_before: R : Type u
S : Type u_1
inst✝ : Ring R
⊢ ¬IsField R[X]
state_after: R : Type u
S : Type u_1
inst✝ : Ring R
a✝ : Nontrivial R
⊢ ¬IsField R[X]

tactic: intro hR
state_before: R : Type u
S : Type u_1
inst✝ : Ring R
a✝ : Nontrivial R
⊢ ¬IsField R[X]
state_after: R : Type u
S : Type u_1
inst✝ : Ring R
a✝ : Nontrivial R
hR : IsField R[X]
⊢ False

tactic: obtain ⟨p, hp⟩ := hR.mul_inv_cancel X_ne_zero
state_before: R : Type u
S : Type u_1
inst✝ : Ring R
a✝ : Nontrivial R
hR : IsField R[X]
⊢ False
state_after: case intro
R : Type u
S : Type u_1
inst✝ : Ring R
a✝ : Nontrivial R
hR : IsField R[X]
p : R[X]
hp : X * p = 1
⊢ False

tactic: have hp0 : p ≠ 0 := right_ne_zero_of_mul_eq_one hp
state_before: case intro
R : Type u
S : Type u_1
inst✝ : Ring R
a✝ : Nontrivial R
hR : IsField R[X]
p : R[X]
hp : X * p = 1
⊢ False
state_after: case intro
R : Type u
S : Type u_1
inst✝ : Ring R
a✝ : Nontrivial R
hR : IsField R[X]
p : R[X]
hp : X * p = 1
hp0 : p ≠ 0
⊢ False

tactic: have := degree_lt_degree_mul_X hp0
state_before: case intro
R : Type u
S : Type u_1
inst✝ : Ring R
a✝ : Nontrivial R
hR : IsField R[X]
p : R[X]
hp : X * p = 1
hp0 : p ≠ 0
⊢ False
state_after: case intro
R : Type u
S : Type u_1
inst✝ : Ring R
a✝ : Nontrivial R
hR : IsField R[X]
p : R[X]
hp : X * p = 1
hp0 : p ≠ 0
this : p.degree < (p * X).degree
⊢ False

tactic: rw [← X_mul, congr_arg degree hp, degree_one, Nat.WithBot.lt_zero_iff, degree_eq_bot] at this
state_before: case intro
R : Type u
S : Type u_1
inst✝ : Ring R
a✝ : Nontrivial R
hR : IsField R[X]
p : R[X]
hp : X * p = 1
hp0 : p ≠ 0
this : p.degree < (p * X).degree
⊢ False
state_after: case intro
R : Type u
S : Type u_1
inst✝ : Ring R
a✝ : Nontrivial R
hR : IsField R[X]
p : R[X]
hp : X * p = 1
hp0 : p ≠ 0
this : p = 0
⊢ False

tactic: exact hp0 this
state_before: case intro
R : Type u
S : Type u_1
inst✝ : Ring R
a✝ : Nontrivial R
hR : IsField R[X]
p : R[X]
hp : X * p = 1
hp0 : p ≠ 0
this : p = 0
⊢ False
state_after: no goals
Theorem: MulAction.fixedBy_eq_univ_iff_eq_one
File: Mathlib/GroupTheory/GroupAction/FixedPoints.lean

tactic: rw [← (smul_left_injective' (M := M) (α := α)).eq_iff, Set.eq_univ_iff_forall]
state_before: α : Type u_1
G : Type u_2
inst✝⁵ : Group G
inst✝⁴ : MulAction G α
M : Type u_3
inst✝³ : Monoid M
inst✝² : MulAction M α
inst✝¹ : FaithfulSMul G α
inst✝ : FaithfulSMul M α
m : M
⊢ fixedBy α m = Set.univ ↔ m = 1
state_after: α : Type u_1
G : Type u_2
inst✝⁵ : Group G
inst✝⁴ : MulAction G α
M : Type u_3
inst✝³ : Monoid M
inst✝² : MulAction M α
inst✝¹ : FaithfulSMul G α
inst✝ : FaithfulSMul M α
m : M
⊢ (∀ (x : α), x ∈ fixedBy α m) ↔ (fun x => m • x) = fun x => 1 • x

tactic: simp_rw [Function.funext_iff, one_smul, mem_fixedBy]
state_before: α : Type u_1
G : Type u_2
inst✝⁵ : Group G
inst✝⁴ : MulAction G α
M : Type u_3
inst✝³ : Monoid M
inst✝² : MulAction M α
inst✝¹ : FaithfulSMul G α
inst✝ : FaithfulSMul M α
m : M
⊢ (∀ (x : α), x ∈ fixedBy α m) ↔ (fun x => m • x) = fun x => 1 • x
state_after: no goals
Theorem: FractionalIdeal.spanSingleton_div_self
File: Mathlib/RingTheory/DedekindDomain/Ideal.lean

tactic: rw [spanSingleton_div_spanSingleton, div_self hx, spanSingleton_one]
state_before: R : Type u_1
A : Type u_2
K : Type u_3
inst✝⁹ : CommRing R
inst✝⁸ : CommRing A
inst✝⁷ : Field K
R₁ : Type u_4
inst✝⁶ : CommRing R₁
inst✝⁵ : IsDomain R₁
inst✝⁴ : Algebra R₁ K
inst✝³ : IsFractionRing R₁ K
I J : FractionalIdeal R₁⁰ K
K' : Type u_5
inst✝² : Field K'
inst✝¹ : Algebra R₁ K'
inst✝ : IsFractionRing R₁ K'
x : K
hx : x ≠ 0
⊢ spanSingleton R₁⁰ x / spanSingleton R₁⁰ x = 1
state_after: no goals
Theorem: SimpleGraph.adj_of_mem_incidenceSet
File: Mathlib/Combinatorics/SimpleGraph/Basic.lean

tactic: rwa [← mk'_mem_incidenceSet_left_iff, ←
  Set.mem_singleton_iff.1 <| G.incidenceSet_inter_incidenceSet_subset h ⟨ha, hb⟩]
state_before: ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v w : V
e : Sym2 V
h : a ≠ b
ha : e ∈ G.incidenceSet a
hb : e ∈ G.incidenceSet b
⊢ G.Adj a b
state_after: no goals
Theorem: Real.Angle.two_zsmul_coe_pi
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: simp [← intCast_mul_eq_zsmul]
state_before: ⊢ 2 • ↑π = 0
state_after: no goals
Theorem: Multiset.sum_int_mod
File: Mathlib/Algebra/BigOperators/Group/Multiset.lean

tactic: induction s using Multiset.induction <;> simp [Int.add_emod, *]
state_before: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s : Multiset ℤ
n : ℤ
⊢ s.sum % n = (map (fun x => x % n) s).sum % n
state_after: no goals
Theorem: Lagrange.degree_interpolate_erase_lt
File: Mathlib/LinearAlgebra/Lagrange.lean

tactic: rw [← Finset.card_erase_of_mem hi]
state_before: F : Type u_1
inst✝¹ : Field F
ι : Type u_2
inst✝ : DecidableEq ι
s t : Finset ι
i j : ι
v r r' : ι → F
hvs : Set.InjOn v ↑s
hi : i ∈ s
⊢ ((interpolate (s.erase i) v) r).degree < ↑(s.card - 1)
state_after: F : Type u_1
inst✝¹ : Field F
ι : Type u_2
inst✝ : DecidableEq ι
s t : Finset ι
i j : ι
v r r' : ι → F
hvs : Set.InjOn v ↑s
hi : i ∈ s
⊢ ((interpolate (s.erase i) v) r).degree < ↑(s.erase i).card

tactic: exact degree_interpolate_lt _ (Set.InjOn.mono (coe_subset.mpr (erase_subset _ _)) hvs)
state_before: F : Type u_1
inst✝¹ : Field F
ι : Type u_2
inst✝ : DecidableEq ι
s t : Finset ι
i j : ι
v r r' : ι → F
hvs : Set.InjOn v ↑s
hi : i ∈ s
⊢ ((interpolate (s.erase i) v) r).degree < ↑(s.erase i).card
state_after: no goals
Theorem: LieModule.nilpotencyLength_eq_one_iff
File: Mathlib/Algebra/Lie/Nilpotent.lean

tactic: rw [nilpotencyLength_eq_succ_iff, ← trivial_iff_lower_central_eq_bot]
state_before: R : Type u
L : Type v
M : Type w
inst✝¹¹ : CommRing R
inst✝¹⁰ : LieRing L
inst✝⁹ : LieAlgebra R L
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : LieRingModule L M
inst✝⁵ : LieModule R L M
k : ℕ
N : LieSubmodule R L M
M₂ : Type w₁
inst✝⁴ : AddCommGroup M₂
inst✝³ : Module R M₂
inst✝² : LieRingModule L M₂
inst✝¹ : LieModule R L M₂
inst✝ : Nontrivial M
⊢ nilpotencyLength R L M = 1 ↔ IsTrivial L M
state_after: R : Type u
L : Type v
M : Type w
inst✝¹¹ : CommRing R
inst✝¹⁰ : LieRing L
inst✝⁹ : LieAlgebra R L
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : LieRingModule L M
inst✝⁵ : LieModule R L M
k : ℕ
N : LieSubmodule R L M
M₂ : Type w₁
inst✝⁴ : AddCommGroup M₂
inst✝³ : Module R M₂
inst✝² : LieRingModule L M₂
inst✝¹ : LieModule R L M₂
inst✝ : Nontrivial M
⊢ IsTrivial L M ∧ lowerCentralSeries R L M 0 ≠ ⊥ ↔ IsTrivial L M

tactic: simp
state_before: R : Type u
L : Type v
M : Type w
inst✝¹¹ : CommRing R
inst✝¹⁰ : LieRing L
inst✝⁹ : LieAlgebra R L
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : LieRingModule L M
inst✝⁵ : LieModule R L M
k : ℕ
N : LieSubmodule R L M
M₂ : Type w₁
inst✝⁴ : AddCommGroup M₂
inst✝³ : Module R M₂
inst✝² : LieRingModule L M₂
inst✝¹ : LieModule R L M₂
inst✝ : Nontrivial M
⊢ IsTrivial L M ∧ lowerCentralSeries R L M 0 ≠ ⊥ ↔ IsTrivial L M
state_after: no goals
Theorem: Polynomial.count_roots
File: Mathlib/Algebra/Polynomial/Roots.lean

tactic: by_cases hp : p = 0
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝² : CommRing R
inst✝¹ : IsDomain R
p✝ q : R[X]
inst✝ : DecidableEq R
p : R[X]
⊢ count a p.roots = rootMultiplicity a p
state_after: case pos
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝² : CommRing R
inst✝¹ : IsDomain R
p✝ q : R[X]
inst✝ : DecidableEq R
p : R[X]
hp : p = 0
⊢ count a p.roots = rootMultiplicity a p

case neg
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝² : CommRing R
inst✝¹ : IsDomain R
p✝ q : R[X]
inst✝ : DecidableEq R
p : R[X]
hp : ¬p = 0
⊢ count a p.roots = rootMultiplicity a p

tactic: rw [roots_def, dif_neg hp]
state_before: case neg
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝² : CommRing R
inst✝¹ : IsDomain R
p✝ q : R[X]
inst✝ : DecidableEq R
p : R[X]
hp : ¬p = 0
⊢ count a p.roots = rootMultiplicity a p
state_after: case neg
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝² : CommRing R
inst✝¹ : IsDomain R
p✝ q : R[X]
inst✝ : DecidableEq R
p : R[X]
hp : ¬p = 0
⊢ count a (Classical.choose ⋯) = rootMultiplicity a p

tactic: exact (Classical.choose_spec (exists_multiset_roots hp)).2 a
state_before: case neg
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝² : CommRing R
inst✝¹ : IsDomain R
p✝ q : R[X]
inst✝ : DecidableEq R
p : R[X]
hp : ¬p = 0
⊢ count a (Classical.choose ⋯) = rootMultiplicity a p
state_after: no goals

tactic: simp [hp]
state_before: case pos
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝² : CommRing R
inst✝¹ : IsDomain R
p✝ q : R[X]
inst✝ : DecidableEq R
p : R[X]
hp : p = 0
⊢ count a p.roots = rootMultiplicity a p
state_after: no goals
Theorem: nhdsWithin_singleton
File: Mathlib/Topology/ContinuousOn.lean

tactic: rw [nhdsWithin, principal_singleton, inf_eq_right.2 (pure_le_nhds a)]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : TopologicalSpace α
a : α
⊢ 𝓝[{a}] a = pure a
state_after: no goals
Theorem: deriv.lhopital_zero_right_on_Ioo
File: Mathlib/Analysis/Calculus/LHopital.lean

tactic: have hdf : ∀ x ∈ Ioo a b, DifferentiableAt ℝ f x := fun x hx =>
  (hdf x hx).differentiableAt (Ioo_mem_nhds hx.1 hx.2)
state_before: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : DifferentiableOn ℝ f (Ioo a b)
hg' : ∀ x ∈ Ioo a b, deriv g x ≠ 0
hfa : Tendsto f (𝓝[>] a) (𝓝 0)
hga : Tendsto g (𝓝[>] a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[>] a) l
⊢ Tendsto (fun x => f x / g x) (𝓝[>] a) l
state_after: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf✝ : DifferentiableOn ℝ f (Ioo a b)
hg' : ∀ x ∈ Ioo a b, deriv g x ≠ 0
hfa : Tendsto f (𝓝[>] a) (𝓝 0)
hga : Tendsto g (𝓝[>] a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[>] a) l
hdf : ∀ x ∈ Ioo a b, DifferentiableAt ℝ f x
⊢ Tendsto (fun x => f x / g x) (𝓝[>] a) l

tactic: have hdg : ∀ x ∈ Ioo a b, DifferentiableAt ℝ g x := fun x hx =>
  by_contradiction fun h => hg' x hx (deriv_zero_of_not_differentiableAt h)
state_before: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf✝ : DifferentiableOn ℝ f (Ioo a b)
hg' : ∀ x ∈ Ioo a b, deriv g x ≠ 0
hfa : Tendsto f (𝓝[>] a) (𝓝 0)
hga : Tendsto g (𝓝[>] a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[>] a) l
hdf : ∀ x ∈ Ioo a b, DifferentiableAt ℝ f x
⊢ Tendsto (fun x => f x / g x) (𝓝[>] a) l
state_after: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf✝ : DifferentiableOn ℝ f (Ioo a b)
hg' : ∀ x ∈ Ioo a b, deriv g x ≠ 0
hfa : Tendsto f (𝓝[>] a) (𝓝 0)
hga : Tendsto g (𝓝[>] a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[>] a) l
hdf : ∀ x ∈ Ioo a b, DifferentiableAt ℝ f x
hdg : ∀ x ∈ Ioo a b, DifferentiableAt ℝ g x
⊢ Tendsto (fun x => f x / g x) (𝓝[>] a) l

tactic: exact HasDerivAt.lhopital_zero_right_on_Ioo hab (fun x hx => (hdf x hx).hasDerivAt)
  (fun x hx => (hdg x hx).hasDerivAt) hg' hfa hga hdiv
state_before: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf✝ : DifferentiableOn ℝ f (Ioo a b)
hg' : ∀ x ∈ Ioo a b, deriv g x ≠ 0
hfa : Tendsto f (𝓝[>] a) (𝓝 0)
hga : Tendsto g (𝓝[>] a) (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) (𝓝[>] a) l
hdf : ∀ x ∈ Ioo a b, DifferentiableAt ℝ f x
hdg : ∀ x ∈ Ioo a b, DifferentiableAt ℝ g x
⊢ Tendsto (fun x => f x / g x) (𝓝[>] a) l
state_after: no goals
Theorem: List.length_cyclicPermutations_of_ne_nil
File: Mathlib/Data/List/Rotate.lean

tactic: simp [cyclicPermutations_of_ne_nil _ h]
state_before: α : Type u
l✝ l' l : List α
h : l ≠ []
⊢ l.cyclicPermutations.length = l.length
state_after: no goals
Theorem: Matrix.dotProduct_mulVec
File: Mathlib/Data/Matrix/Basic.lean

tactic: simp only [dotProduct, vecMul, mulVec, Finset.mul_sum, Finset.sum_mul, mul_assoc]
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✝³ : NonUnitalNonAssocSemiring α
inst✝² : Fintype n
inst✝¹ : Fintype m
inst✝ : NonUnitalSemiring R
v : m → R
A : Matrix m n R
w : n → R
⊢ v ⬝ᵥ A *ᵥ w = v ᵥ* A ⬝ᵥ w
state_after: 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✝³ : NonUnitalNonAssocSemiring α
inst✝² : Fintype n
inst✝¹ : Fintype m
inst✝ : NonUnitalSemiring R
v : m → R
A : Matrix m n R
w : n → R
⊢ ∑ x : m, ∑ i : n, v x * (A x i * w i) = ∑ x : n, ∑ x_1 : m, v x_1 * (A x_1 x * w x)

tactic: exact Finset.sum_comm
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✝³ : NonUnitalNonAssocSemiring α
inst✝² : Fintype n
inst✝¹ : Fintype m
inst✝ : NonUnitalSemiring R
v : m → R
A : Matrix m n R
w : n → R
⊢ ∑ x : m, ∑ i : n, v x * (A x i * w i) = ∑ x : n, ∑ x_1 : m, v x_1 * (A x_1 x * w x)
state_after: no goals
Theorem: Multiset.Nodup.add_iff
File: Mathlib/Data/Multiset/Nodup.lean

tactic: simp [nodup_add, d₁, d₂]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s t : Multiset α
a : α
d₁ : s.Nodup
d₂ : t.Nodup
⊢ (s + t).Nodup ↔ s.Disjoint t
state_after: no goals
Theorem: Set.image_diff_preimage
File: Mathlib/Data/Set/Image.lean

tactic: simp_rw [diff_eq, ← preimage_compl, image_inter_preimage]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : α → β
s✝ t✝ : Set α
f : α → β
s : Set α
t : Set β
⊢ f '' (s \ f ⁻¹' t) = f '' s \ t
state_after: no goals
Theorem: ENNReal.ofReal_inv_of_pos
File: Mathlib/Data/ENNReal/Real.lean

tactic: rw [ENNReal.ofReal, ENNReal.ofReal, ← @coe_inv (Real.toNNReal x) (by simp [hx]), coe_inj,
  ← Real.toNNReal_inv]
state_before: a b c d : ℝ≥0∞
r p q : ℝ≥0
x : ℝ
hx : 0 < x
⊢ ENNReal.ofReal x⁻¹ = (ENNReal.ofReal x)⁻¹
state_after: no goals

tactic: simp [hx]
state_before: a b c d : ℝ≥0∞
r p q : ℝ≥0
x : ℝ
hx : 0 < x
⊢ x.toNNReal ≠ 0
state_after: no goals
Theorem: CategoryTheory.ShortComplex.QuasiIso.exact_iff
File: Mathlib/Algebra/Homology/ShortComplex/Exact.lean

tactic: simp only [exact_iff_isZero_homology]
state_before: C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{?u.60030, u_2} D
inst✝⁴ : Preadditive C
inst✝³ : Preadditive D
S S₁ S₂ : ShortComplex C
φ : S₁ ⟶ S₂
inst✝² : S₁.HasHomology
inst✝¹ : S₂.HasHomology
inst✝ : QuasiIso φ
⊢ S₁.Exact ↔ S₂.Exact
state_after: C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{?u.60030, u_2} D
inst✝⁴ : Preadditive C
inst✝³ : Preadditive D
S S₁ S₂ : ShortComplex C
φ : S₁ ⟶ S₂
inst✝² : S₁.HasHomology
inst✝¹ : S₂.HasHomology
inst✝ : QuasiIso φ
⊢ IsZero S₁.homology ↔ IsZero S₂.homology

tactic: exact Iso.isZero_iff (asIso (homologyMap φ))
state_before: C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{?u.60030, u_2} D
inst✝⁴ : Preadditive C
inst✝³ : Preadditive D
S S₁ S₂ : ShortComplex C
φ : S₁ ⟶ S₂
inst✝² : S₁.HasHomology
inst✝¹ : S₂.HasHomology
inst✝ : QuasiIso φ
⊢ IsZero S₁.homology ↔ IsZero S₂.homology
state_after: no goals
Theorem: MeasureTheory.Lp.edist_toLp_zero
File: Mathlib/MeasureTheory/Function/LpSpace.lean

tactic: convert edist_toLp_toLp f 0 hf zero_memℒp
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → E
hf : Memℒp f p μ
⊢ edist (Memℒp.toLp f hf) 0 = snorm f p μ
state_after: case h.e'_3.h.e'_5
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → E
hf : Memℒp f p μ
⊢ f = f - 0

tactic: simp
state_before: case h.e'_3.h.e'_5
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → E
hf : Memℒp f p μ
⊢ f = f - 0
state_after: no goals
Theorem: Real.volume_Iio
File: Mathlib/MeasureTheory/Measure/Lebesgue/Basic.lean

tactic: simp
state_before: ι : Type u_1
inst✝ : Fintype ι
a : ℝ
n : ℕ
⊢ ↑n = volume (Ioo (a - ↑n) a)
state_after: no goals