1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Polynomial.X_sub_C_dvd_sub_C_eval
File: Mathlib/Algebra/Polynomial/Div.lean

tactic: rw [dvd_iff_isRoot, IsRoot, eval_sub, eval_C, sub_self]
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : CommRing R
p q : R[X]
⊢ X - C a ∣ p - C (eval a p)
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.Point.toAffineLift_add
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: rcases P, Q with ⟨@⟨⟨_⟩, hP⟩, @⟨⟨_⟩, hQ⟩⟩
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : W.Point
⊢ (P + Q).toAffineLift = P.toAffineLift + Q.toAffineLift
state_after: case mk.mk.mk.mk
R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
point✝¹ : PointClass F
a✝¹ : Fin 3 → F
hP : W.NonsingularLift (Quot.mk Setoid.r a✝¹)
point✝ : PointClass F
a✝ : Fin 3 → F
hQ : W.NonsingularLift (Quot.mk Setoid.r a✝)
⊢ (mk hP + mk hQ).toAffineLift = (mk hP).toAffineLift + (mk hQ).toAffineLift

tactic: exact toAffine_add hP hQ
state_before: case mk.mk.mk.mk
R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
point✝¹ : PointClass F
a✝¹ : Fin 3 → F
hP : W.NonsingularLift (Quot.mk Setoid.r a✝¹)
point✝ : PointClass F
a✝ : Fin 3 → F
hQ : W.NonsingularLift (Quot.mk Setoid.r a✝)
⊢ (mk hP + mk hQ).toAffineLift = (mk hP).toAffineLift + (mk hQ).toAffineLift
state_after: no goals
Theorem: Filter.frequently_and_distrib_left
File: Mathlib/Order/Filter/Basic.lean

tactic: simp only [Filter.Frequently, not_and, eventually_imp_distrib_left, Classical.not_imp]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f : Filter α
p : Prop
q : α → Prop
⊢ (∃ᶠ (x : α) in f, p ∧ q x) ↔ p ∧ ∃ᶠ (x : α) in f, q x
state_after: no goals
Theorem: Set.Finite.partiallyWellOrderedOn
File: Mathlib/Order/WellFoundedSet.lean

tactic: intro f hf
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
r : α → α → Prop
r' : β → β → Prop
f : α → β
s t : Set α
a : α
inst✝ : IsRefl α r
hs : s.Finite
⊢ s.PartiallyWellOrderedOn r
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
r : α → α → Prop
r' : β → β → Prop
f✝ : α → β
s t : Set α
a : α
inst✝ : IsRefl α r
hs : s.Finite
f : ℕ → α
hf : ∀ (n : ℕ), f n ∈ s
⊢ ∃ m n, m < n ∧ r (f m) (f n)

tactic: obtain ⟨m, n, hmn, h⟩ := hs.exists_lt_map_eq_of_forall_mem hf
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
r : α → α → Prop
r' : β → β → Prop
f✝ : α → β
s t : Set α
a : α
inst✝ : IsRefl α r
hs : s.Finite
f : ℕ → α
hf : ∀ (n : ℕ), f n ∈ s
⊢ ∃ m n, m < n ∧ r (f m) (f n)
state_after: case intro.intro.intro
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
r : α → α → Prop
r' : β → β → Prop
f✝ : α → β
s t : Set α
a : α
inst✝ : IsRefl α r
hs : s.Finite
f : ℕ → α
hf : ∀ (n : ℕ), f n ∈ s
m n : ℕ
hmn : m < n
h : f m = f n
⊢ ∃ m n, m < n ∧ r (f m) (f n)

tactic: exact ⟨m, n, hmn, h.subst <| refl (f m)⟩
state_before: case intro.intro.intro
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
r : α → α → Prop
r' : β → β → Prop
f✝ : α → β
s t : Set α
a : α
inst✝ : IsRefl α r
hs : s.Finite
f : ℕ → α
hf : ∀ (n : ℕ), f n ∈ s
m n : ℕ
hmn : m < n
h : f m = f n
⊢ ∃ m n, m < n ∧ r (f m) (f n)
state_after: no goals
Theorem: measurable_updateFinset
File: Mathlib/MeasureTheory/MeasurableSpace/Basic.lean

tactic: simp (config := { unfoldPartialApp := true }) only [updateFinset, measurable_pi_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u : Set α
π : δ → Type u_6
inst✝³ : MeasurableSpace α
inst✝² : (a : δ) → MeasurableSpace (π a)
inst✝¹ : MeasurableSpace γ
inst✝ : DecidableEq δ
s : Finset δ
x : (i : δ) → π i
⊢ Measurable (updateFinset x s)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u : Set α
π : δ → Type u_6
inst✝³ : MeasurableSpace α
inst✝² : (a : δ) → MeasurableSpace (π a)
inst✝¹ : MeasurableSpace γ
inst✝ : DecidableEq δ
s : Finset δ
x : (i : δ) → π i
⊢ ∀ (a : δ), Measurable fun x_1 => if hi : a ∈ s then x_1 ⟨a, hi⟩ else x a

tactic: intro i
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u : Set α
π : δ → Type u_6
inst✝³ : MeasurableSpace α
inst✝² : (a : δ) → MeasurableSpace (π a)
inst✝¹ : MeasurableSpace γ
inst✝ : DecidableEq δ
s : Finset δ
x : (i : δ) → π i
⊢ ∀ (a : δ), Measurable fun x_1 => if hi : a ∈ s then x_1 ⟨a, hi⟩ else x a
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u : Set α
π : δ → Type u_6
inst✝³ : MeasurableSpace α
inst✝² : (a : δ) → MeasurableSpace (π a)
inst✝¹ : MeasurableSpace γ
inst✝ : DecidableEq δ
s : Finset δ
x : (i : δ) → π i
i : δ
⊢ Measurable fun x_1 => if hi : i ∈ s then x_1 ⟨i, hi⟩ else x i

tactic: by_cases h : i ∈ s <;> simp [h, measurable_pi_apply]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u : Set α
π : δ → Type u_6
inst✝³ : MeasurableSpace α
inst✝² : (a : δ) → MeasurableSpace (π a)
inst✝¹ : MeasurableSpace γ
inst✝ : DecidableEq δ
s : Finset δ
x : (i : δ) → π i
i : δ
⊢ Measurable fun x_1 => if hi : i ∈ s then x_1 ⟨i, hi⟩ else x i
state_after: no goals
Theorem: singleton_div_ball_one
File: Mathlib/Analysis/Normed/Group/Pointwise.lean

tactic: rw [singleton_div_ball, div_one]
state_before: E : Type u_1
inst✝ : SeminormedCommGroup E
ε δ : ℝ
s t : Set E
x y : E
⊢ {x} / ball 1 δ = ball x δ
state_after: no goals
Theorem: iSup_sigma
File: Mathlib/Order/CompleteLattice.lean

tactic: simp only [iSup_le_iff, Sigma.forall]
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✝ : CompleteLattice α
f✝ g s t : ι → α
a b : α
p : β → Type u_9
f : Sigma p → α
c : α
⊢ ⨆ x, f x ≤ c ↔ ⨆ i, ⨆ j, f ⟨i, j⟩ ≤ c
state_after: no goals
Theorem: Polynomial.toFinsupp_apply
File: Mathlib/Algebra/Polynomial/Basic.lean

tactic: cases f
state_before: R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
p q f : R[X]
i : ℕ
⊢ f.toFinsupp i = f.coeff i
state_after: case ofFinsupp
R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
p q : R[X]
i : ℕ
toFinsupp✝ : R[ℕ]
⊢ { toFinsupp := toFinsupp✝ }.toFinsupp i = { toFinsupp := toFinsupp✝ }.coeff i

tactic: rfl
state_before: case ofFinsupp
R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
p q : R[X]
i : ℕ
toFinsupp✝ : R[ℕ]
⊢ { toFinsupp := toFinsupp✝ }.toFinsupp i = { toFinsupp := toFinsupp✝ }.coeff i
state_after: no goals
Theorem: Derivation.eqOn_adjoin
File: Mathlib/RingTheory/Derivation/Basic.lean

tactic: simp only [map_add, *]
state_before: R : Type u_1
A : Type u_2
B : Type u_3
M : Type u_4
inst✝⁸ : CommSemiring R
inst✝⁷ : CommSemiring A
inst✝⁶ : CommSemiring B
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Algebra R A
inst✝³ : Algebra R B
inst✝² : Module A M
inst✝¹ : Module B M
inst✝ : Module R M
D D1 D2 : Derivation R A M
r : R
a b : A
s : Set A
h : Set.EqOn (⇑D1) (⇑D2) s
x✝ : A
hx✝ : x✝ ∈ ↑(adjoin R s)
x y : A
hx : D1 x = D2 x
hy : D1 y = D2 y
⊢ D1 (x + y) = D2 (x + y)
state_after: no goals

tactic: simp only [leibniz, *]
state_before: R : Type u_1
A : Type u_2
B : Type u_3
M : Type u_4
inst✝⁸ : CommSemiring R
inst✝⁷ : CommSemiring A
inst✝⁶ : CommSemiring B
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Algebra R A
inst✝³ : Algebra R B
inst✝² : Module A M
inst✝¹ : Module B M
inst✝ : Module R M
D D1 D2 : Derivation R A M
r : R
a b : A
s : Set A
h : Set.EqOn (⇑D1) (⇑D2) s
x✝ : A
hx✝ : x✝ ∈ ↑(adjoin R s)
x y : A
hx : D1 x = D2 x
hy : D1 y = D2 y
⊢ D1 (x * y) = D2 (x * y)
state_after: no goals
Theorem: MulAction.orbit_submonoid_subset
File: Mathlib/GroupTheory/GroupAction/Basic.lean

tactic: rintro b ⟨g, rfl⟩
state_before: M : Type u
inst✝² : Monoid M
α : Type v
inst✝¹ : MulAction M α
β : Type u_1
inst✝ : MulAction M β
S : Submonoid M
a : α
⊢ orbit (↥S) a ⊆ orbit M a
state_after: case intro
M : Type u
inst✝² : Monoid M
α : Type v
inst✝¹ : MulAction M α
β : Type u_1
inst✝ : MulAction M β
S : Submonoid M
a : α
g : ↥S
⊢ (fun m => m • a) g ∈ orbit M a

tactic: exact mem_orbit _ _
state_before: case intro
M : Type u
inst✝² : Monoid M
α : Type v
inst✝¹ : MulAction M α
β : Type u_1
inst✝ : MulAction M β
S : Submonoid M
a : α
g : ↥S
⊢ (fun m => m • a) g ∈ orbit M a
state_after: no goals
Theorem: Equiv.swap_comp_apply
File: Mathlib/Logic/Equiv/Basic.lean

tactic: cases π
state_before: α : Sort u_1
inst✝ : DecidableEq α
a b x : α
π : Perm α
⊢ (Equiv.trans π (swap a b)) x = if π x = a then b else if π x = b then a else π x
state_after: case mk
α : Sort u_1
inst✝ : DecidableEq α
a b x : α
toFun✝ invFun✝ : α → α
left_inv✝ : LeftInverse invFun✝ toFun✝
right_inv✝ : Function.RightInverse invFun✝ toFun✝
⊢ ({ toFun := toFun✝, invFun := invFun✝, left_inv := left_inv✝, right_inv := right_inv✝ }.trans (swap a b)) x =
    if { toFun := toFun✝, invFun := invFun✝, left_inv := left_inv✝, right_inv := right_inv✝ } x = a then b
    else
      if { toFun := toFun✝, invFun := invFun✝, left_inv := left_inv✝, right_inv := right_inv✝ } x = b then a
      else { toFun := toFun✝, invFun := invFun✝, left_inv := left_inv✝, right_inv := right_inv✝ } x

tactic: rfl
state_before: case mk
α : Sort u_1
inst✝ : DecidableEq α
a b x : α
toFun✝ invFun✝ : α → α
left_inv✝ : LeftInverse invFun✝ toFun✝
right_inv✝ : Function.RightInverse invFun✝ toFun✝
⊢ ({ toFun := toFun✝, invFun := invFun✝, left_inv := left_inv✝, right_inv := right_inv✝ }.trans (swap a b)) x =
    if { toFun := toFun✝, invFun := invFun✝, left_inv := left_inv✝, right_inv := right_inv✝ } x = a then b
    else
      if { toFun := toFun✝, invFun := invFun✝, left_inv := left_inv✝, right_inv := right_inv✝ } x = b then a
      else { toFun := toFun✝, invFun := invFun✝, left_inv := left_inv✝, right_inv := right_inv✝ } x
state_after: no goals
Theorem: zpow_one
File: Mathlib/Algebra/Group/Defs.lean

tactic: rw [zpow_ofNat, pow_one]
state_before: G : Type u_1
inst✝ : DivInvMonoid G
a✝ b a : G
⊢ a ^ 1 = a
state_after: no goals
Theorem: Complex.IsExpCmpFilter.isLittleO_cpow_mul_exp
File: Mathlib/Analysis/SpecialFunctions/CompareExp.lean

tactic: simp only
state_before: l : Filter ℂ
b₁ b₂ : ℝ
hl : IsExpCmpFilter l
hb : b₁ < b₂
a₁ a₂ z : ℂ
hz : z ≠ 0
⊢ (fun z => z ^ a₁ * cexp (↑b₁ * z)) z = (fun z => z ^ a₂ * cexp (↑b₁ * z) * z ^ (a₁ - a₂)) z
state_after: l : Filter ℂ
b₁ b₂ : ℝ
hl : IsExpCmpFilter l
hb : b₁ < b₂
a₁ a₂ z : ℂ
hz : z ≠ 0
⊢ z ^ a₁ * cexp (↑b₁ * z) = z ^ a₂ * cexp (↑b₁ * z) * z ^ (a₁ - a₂)

tactic: rw [mul_right_comm, ← cpow_add _ _ hz, add_sub_cancel]
state_before: l : Filter ℂ
b₁ b₂ : ℝ
hl : IsExpCmpFilter l
hb : b₁ < b₂
a₁ a₂ z : ℂ
hz : z ≠ 0
⊢ z ^ a₁ * cexp (↑b₁ * z) = z ^ a₂ * cexp (↑b₁ * z) * z ^ (a₁ - a₂)
state_after: no goals

tactic: simp only [ofReal_sub, sub_mul, mul_assoc, ← exp_add, add_sub_cancel]
state_before: l : Filter ℂ
b₁ b₂ : ℝ
hl : IsExpCmpFilter l
hb : b₁ < b₂
a₁ a₂ : ℂ
⊢ (fun z => z ^ a₂ * cexp (↑b₁ * z) * cexp (↑(b₂ - b₁) * z)) =ᶠ[l] fun z => z ^ a₂ * cexp (↑b₂ * z)
state_after: l : Filter ℂ
b₁ b₂ : ℝ
hl : IsExpCmpFilter l
hb : b₁ < b₂
a₁ a₂ : ℂ
⊢ (fun z => z ^ a₂ * cexp (↑b₂ * z)) =ᶠ[l] fun z => z ^ a₂ * cexp (↑b₂ * z)

tactic: norm_cast
state_before: l : Filter ℂ
b₁ b₂ : ℝ
hl : IsExpCmpFilter l
hb : b₁ < b₂
a₁ a₂ : ℂ
⊢ (fun z => z ^ a₂ * cexp (↑b₂ * z)) =ᶠ[l] fun z => z ^ a₂ * cexp (↑b₂ * z)
state_after: no goals
Theorem: RCLike.intCast_re
File: Mathlib/Analysis/RCLike/Basic.lean

tactic: rw [← ofReal_intCast, ofReal_re]
state_before: K : Type u_1
E : Type u_2
inst✝ : RCLike K
z : K
n : ℤ
⊢ re ↑n = ↑n
state_after: no goals
Theorem: Finset.Icc_mul_Icc_subset'
File: Mathlib/Data/Finset/Pointwise/Interval.lean

tactic: simpa using Set.Icc_mul_Icc_subset' _ _ _ _
state_before: α : Type u_1
inst✝⁵ : Mul α
inst✝⁴ : Preorder α
inst✝³ : DecidableEq α
inst✝² : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝¹ : CovariantClass α α (Function.swap HMul.hMul) LE.le
inst✝ : LocallyFiniteOrder α
a b c d : α
⊢ ↑(Icc a b * Icc c d) ⊆ ↑(Icc (a * c) (b * d))
state_after: no goals
Theorem: HasFDerivWithinAt.of_restrictScalars
File: Mathlib/Analysis/Calculus/FDeriv/RestrictScalars.lean

tactic: rw [← H] at h
state_before: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
𝕜' : Type u_2
inst✝⁹ : NontriviallyNormedField 𝕜'
inst✝⁸ : NormedAlgebra 𝕜 𝕜'
E : Type u_3
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : NormedSpace 𝕜' E
inst✝⁴ : IsScalarTower 𝕜 𝕜' E
F : Type u_4
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
f : E → F
f' : E →L[𝕜'] F
s : Set E
x : E
g' : E →L[𝕜] F
h : HasFDerivWithinAt f g' s x
H : ContinuousLinearMap.restrictScalars 𝕜 f' = g'
⊢ HasFDerivWithinAt f f' s x
state_after: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
𝕜' : Type u_2
inst✝⁹ : NontriviallyNormedField 𝕜'
inst✝⁸ : NormedAlgebra 𝕜 𝕜'
E : Type u_3
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : NormedSpace 𝕜' E
inst✝⁴ : IsScalarTower 𝕜 𝕜' E
F : Type u_4
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
f : E → F
f' : E →L[𝕜'] F
s : Set E
x : E
g' : E →L[𝕜] F
h : HasFDerivWithinAt f (ContinuousLinearMap.restrictScalars 𝕜 f') s x
H : ContinuousLinearMap.restrictScalars 𝕜 f' = g'
⊢ HasFDerivWithinAt f f' s x

tactic: exact .of_isLittleO h.1
state_before: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
𝕜' : Type u_2
inst✝⁹ : NontriviallyNormedField 𝕜'
inst✝⁸ : NormedAlgebra 𝕜 𝕜'
E : Type u_3
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : NormedSpace 𝕜' E
inst✝⁴ : IsScalarTower 𝕜 𝕜' E
F : Type u_4
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
f : E → F
f' : E →L[𝕜'] F
s : Set E
x : E
g' : E →L[𝕜] F
h : HasFDerivWithinAt f (ContinuousLinearMap.restrictScalars 𝕜 f') s x
H : ContinuousLinearMap.restrictScalars 𝕜 f' = g'
⊢ HasFDerivWithinAt f f' s x
state_after: no goals
Theorem: Finmap.union_comm_of_disjoint
File: Mathlib/Data/Finmap.lean

tactic: intro h
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
s₁✝ s₂✝ : Finmap β
s₁ s₂ : AList β
⊢ ⟦s₁⟧.Disjoint ⟦s₂⟧ → ⟦s₁⟧ ∪ ⟦s₂⟧ = ⟦s₂⟧ ∪ ⟦s₁⟧
state_after: α : Type u
β : α → Type v
inst✝ : DecidableEq α
s₁✝ s₂✝ : Finmap β
s₁ s₂ : AList β
h : ⟦s₁⟧.Disjoint ⟦s₂⟧
⊢ ⟦s₁⟧ ∪ ⟦s₂⟧ = ⟦s₂⟧ ∪ ⟦s₁⟧

tactic: simp only [AList.toFinmap_eq, union_toFinmap, AList.union_comm_of_disjoint h]
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
s₁✝ s₂✝ : Finmap β
s₁ s₂ : AList β
h : ⟦s₁⟧.Disjoint ⟦s₂⟧
⊢ ⟦s₁⟧ ∪ ⟦s₂⟧ = ⟦s₂⟧ ∪ ⟦s₁⟧
state_after: no goals
Theorem: Ordinal.IsNormal.fp_iff_deriv
File: Mathlib/SetTheory/Ordinal/FixedPoint.lean

tactic: rw [← H.le_iff_eq, H.le_iff_deriv]
state_before: f✝ : Ordinal.{u} → Ordinal.{u}
f : Ordinal.{u_1} → Ordinal.{u_1}
H : IsNormal f
a : Ordinal.{u_1}
⊢ f a = a ↔ ∃ o, deriv f o = a
state_after: no goals
Theorem: toMul_multiset_sum
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: simp [toMul, ofMul]
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : CommMonoid α
s : Multiset (Additive α)
⊢ toMul s.sum = (Multiset.map (⇑toMul) s).prod
state_after: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : CommMonoid α
s : Multiset (Additive α)
⊢ s.sum = s.prod

tactic: rfl
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : CommMonoid α
s : Multiset (Additive α)
⊢ s.sum = s.prod
state_after: no goals
Theorem: MultilinearMap.map_neg
File: Mathlib/LinearAlgebra/Multilinear/Basic.lean

tactic: rw [← MultilinearMap.map_add, add_left_neg, f.map_coord_zero i (update_same i 0 m)]
state_before: R : Type uR
S : Type uS
ι : Type uι
n : ℕ
M : Fin n.succ → Type v
M₁ : ι → Type v₁
M₂ : Type v₂
M₃ : Type v₃
M' : Type v'
inst✝⁵ : Semiring R
inst✝⁴ : (i : ι) → AddCommGroup (M₁ i)
inst✝³ : AddCommGroup M₂
inst✝² : (i : ι) → Module R (M₁ i)
inst✝¹ : Module R M₂
f : MultilinearMap R M₁ M₂
inst✝ : DecidableEq ι
m : (i : ι) → M₁ i
i : ι
x : M₁ i
⊢ f (update m i (-x)) + f (update m i x) = 0
state_after: no goals
Theorem: Set.einfsep_pair
File: Mathlib/Topology/MetricSpace/Infsep.lean

tactic: nth_rw 1 [← min_self (edist x y)]
state_before: α : Type u_1
β : Type u_2
inst✝ : PseudoEMetricSpace α
x y z : α
s t : Set α
hxy : x ≠ y
⊢ {x, y}.einfsep = edist x y
state_after: α : Type u_1
β : Type u_2
inst✝ : PseudoEMetricSpace α
x y z : α
s t : Set α
hxy : x ≠ y
⊢ {x, y}.einfsep = min (edist x y) (edist x y)

tactic: convert einfsep_pair_eq_inf hxy using 2
state_before: α : Type u_1
β : Type u_2
inst✝ : PseudoEMetricSpace α
x y z : α
s t : Set α
hxy : x ≠ y
⊢ {x, y}.einfsep = min (edist x y) (edist x y)
state_after: case h.e'_3.h.e'_2
α : Type u_1
β : Type u_2
inst✝ : PseudoEMetricSpace α
x y z : α
s t : Set α
hxy : x ≠ y
⊢ edist x y = edist y x

tactic: rw [edist_comm]
state_before: case h.e'_3.h.e'_2
α : Type u_1
β : Type u_2
inst✝ : PseudoEMetricSpace α
x y z : α
s t : Set α
hxy : x ≠ y
⊢ edist x y = edist y x
state_after: no goals
Theorem: lipschitzWith_sup_right
File: Mathlib/Analysis/Normed/Order/Lattice.lean

tactic: rw [NNReal.coe_one, one_mul, dist_eq_norm, dist_eq_norm]
state_before: α : Type u_1
inst✝ : NormedLatticeAddCommGroup α
z x y : α
⊢ dist (x ⊔ z) (y ⊔ z) ≤ ↑1 * dist x y
state_after: α : Type u_1
inst✝ : NormedLatticeAddCommGroup α
z x y : α
⊢ ‖x ⊔ z - y ⊔ z‖ ≤ ‖x - y‖

tactic: exact norm_sup_sub_sup_le_norm x y z
state_before: α : Type u_1
inst✝ : NormedLatticeAddCommGroup α
z x y : α
⊢ ‖x ⊔ z - y ⊔ z‖ ≤ ‖x - y‖
state_after: no goals
Theorem: Fin.eq_one_of_neq_zero
File: Mathlib/Data/Fin/Basic.lean

tactic: simpa only [one_eq_zero_iff, succ.injEq, iff_false] using hi
state_before: n m : ℕ
i : Fin 2
hi : i ≠ 0
⊢ i = 0 ↔ 1 = 0
state_after: no goals
Theorem: ModularGroup.im_T_smul
File: Mathlib/NumberTheory/Modular.lean

tactic: simpa using im_T_zpow_smul z 1
state_before: g : SL(2, ℤ)
z : ℍ
⊢ (T • z).im = z.im
state_after: no goals
Theorem: Nat.Primes.not_summable_one_div
File: Mathlib/NumberTheory/SumPrimeReciprocals.lean

tactic: convert summable_subtype_iff_indicator.mp.mt not_summable_one_div_on_primes
state_before: ⊢ ¬Summable fun p => 1 / ↑↑p
state_after: no goals
Theorem: CategoryTheory.Limits.kernelSubobjectMap_comp
File: Mathlib/CategoryTheory/Subobject/Limits.lean

tactic: aesop_cat
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
X Y Z : C
inst✝³ : HasZeroMorphisms C
f : X ⟶ Y
inst✝² : HasKernel f
X' Y' : C
f' : X' ⟶ Y'
inst✝¹ : HasKernel f'
X'' Y'' : C
f'' : X'' ⟶ Y''
inst✝ : HasKernel f''
sq : Arrow.mk f ⟶ Arrow.mk f'
sq' : Arrow.mk f' ⟶ Arrow.mk f''
⊢ kernelSubobjectMap (sq ≫ sq') = kernelSubobjectMap sq ≫ kernelSubobjectMap sq'
state_after: no goals
Theorem: NonUnitalAlgebra.toSubmodule_bot
File: Mathlib/Algebra/Algebra/NonUnitalSubalgebra.lean

tactic: ext
state_before: F : Type u_1
R : Type u
A : Type v
B : Type w
inst✝¹⁰ : CommSemiring R
inst✝⁹ : NonUnitalNonAssocSemiring A
inst✝⁸ : Module R A
inst✝⁷ : IsScalarTower R A A
inst✝⁶ : SMulCommClass R A A
inst✝⁵ : NonUnitalNonAssocSemiring B
inst✝⁴ : Module R B
inst✝³ : IsScalarTower R B B
inst✝² : SMulCommClass R B B
inst✝¹ : FunLike F A B
inst✝ : NonUnitalAlgHomClass F R A B
⊢ ⊥.toSubmodule = ⊥
state_after: case h
F : Type u_1
R : Type u
A : Type v
B : Type w
inst✝¹⁰ : CommSemiring R
inst✝⁹ : NonUnitalNonAssocSemiring A
inst✝⁸ : Module R A
inst✝⁷ : IsScalarTower R A A
inst✝⁶ : SMulCommClass R A A
inst✝⁵ : NonUnitalNonAssocSemiring B
inst✝⁴ : Module R B
inst✝³ : IsScalarTower R B B
inst✝² : SMulCommClass R B B
inst✝¹ : FunLike F A B
inst✝ : NonUnitalAlgHomClass F R A B
x✝ : A
⊢ x✝ ∈ ⊥.toSubmodule ↔ x✝ ∈ ⊥

tactic: simp only [mem_bot, NonUnitalSubalgebra.mem_toSubmodule, Submodule.mem_bot]
state_before: case h
F : Type u_1
R : Type u
A : Type v
B : Type w
inst✝¹⁰ : CommSemiring R
inst✝⁹ : NonUnitalNonAssocSemiring A
inst✝⁸ : Module R A
inst✝⁷ : IsScalarTower R A A
inst✝⁶ : SMulCommClass R A A
inst✝⁵ : NonUnitalNonAssocSemiring B
inst✝⁴ : Module R B
inst✝³ : IsScalarTower R B B
inst✝² : SMulCommClass R B B
inst✝¹ : FunLike F A B
inst✝ : NonUnitalAlgHomClass F R A B
x✝ : A
⊢ x✝ ∈ ⊥.toSubmodule ↔ x✝ ∈ ⊥
state_after: no goals
Theorem: Associates.decompositionMonoid_iff
File: Mathlib/Algebra/Associated.lean

tactic: simp_rw [_root_.decompositionMonoid_iff, forall_associated, isPrimal_mk]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CommMonoid α
⊢ DecompositionMonoid (Associates α) ↔ DecompositionMonoid α
state_after: no goals
Theorem: List.length_le_length_insertNth
File: Mathlib/Data/List/InsertNth.lean

tactic: rcases le_or_lt n l.length with hn | hn
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a : α
l : List α
x : α
n : ℕ
⊢ l.length ≤ (insertNth n x l).length
state_after: case inl
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a : α
l : List α
x : α
n : ℕ
hn : n ≤ l.length
⊢ l.length ≤ (insertNth n x l).length

case inr
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a : α
l : List α
x : α
n : ℕ
hn : l.length < n
⊢ l.length ≤ (insertNth n x l).length

tactic: rw [length_insertNth _ _ hn]
state_before: case inl
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a : α
l : List α
x : α
n : ℕ
hn : n ≤ l.length
⊢ l.length ≤ (insertNth n x l).length
state_after: case inl
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a : α
l : List α
x : α
n : ℕ
hn : n ≤ l.length
⊢ l.length ≤ l.length + 1

tactic: exact (Nat.lt_succ_self _).le
state_before: case inl
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a : α
l : List α
x : α
n : ℕ
hn : n ≤ l.length
⊢ l.length ≤ l.length + 1
state_after: no goals

tactic: rw [insertNth_of_length_lt _ _ _ hn]
state_before: case inr
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a : α
l : List α
x : α
n : ℕ
hn : l.length < n
⊢ l.length ≤ (insertNth n x l).length
state_after: no goals
Theorem: Filter.HasBasis.congr
File: Mathlib/Order/Filter/Bases.lean

tactic: simp only [hl.mem_iff, ← hp]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
l l' : Filter α
p : ι → Prop
s : ι → Set α
t✝ : Set α
i : ι
p'✝ : ι' → Prop
s'✝ : ι' → Set α
i' : ι'
hl : l.HasBasis p s
p' : ι → Prop
s' : ι → Set α
hp : ∀ (i : ι), p i ↔ p' i
hs : ∀ (i : ι), p i → s i = s' i
t : Set α
⊢ t ∈ l ↔ ∃ i, p' i ∧ s' i ⊆ t
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
l l' : Filter α
p : ι → Prop
s : ι → Set α
t✝ : Set α
i : ι
p'✝ : ι' → Prop
s'✝ : ι' → Set α
i' : ι'
hl : l.HasBasis p s
p' : ι → Prop
s' : ι → Set α
hp : ∀ (i : ι), p i ↔ p' i
hs : ∀ (i : ι), p i → s i = s' i
t : Set α
⊢ (∃ i, p i ∧ s i ⊆ t) ↔ ∃ i, p i ∧ s' i ⊆ t

tactic: exact exists_congr fun i ↦
and_congr_right fun hi ↦ hs i hi ▸ Iff.rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
l l' : Filter α
p : ι → Prop
s : ι → Set α
t✝ : Set α
i : ι
p'✝ : ι' → Prop
s'✝ : ι' → Set α
i' : ι'
hl : l.HasBasis p s
p' : ι → Prop
s' : ι → Set α
hp : ∀ (i : ι), p i ↔ p' i
hs : ∀ (i : ι), p i → s i = s' i
t : Set α
⊢ (∃ i, p i ∧ s i ⊆ t) ↔ ∃ i, p i ∧ s' i ⊆ t
state_after: no goals
Theorem: Submodule.colon_bot
File: Mathlib/RingTheory/Ideal/Colon.lean

tactic: simp_rw [SetLike.ext_iff, mem_colon, mem_annihilator, mem_bot, forall_const]
state_before: R : Type u_1
M : Type u_2
M' : Type u_3
F : Type u_4
G : Type u_5
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
N N₁ N₂ P P₁ P₂ : Submodule R M
⊢ ⊥.colon N = N.annihilator
state_after: no goals