1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: pow_lt_pow_right'
File: Mathlib/Algebra/Order/Monoid/Unbundled/Pow.lean

tactic: rcases Nat.le.dest h with ⟨k, rfl⟩
state_before: β : Type u_1
G : Type u_2
M : Type u_3
inst✝³ : Monoid M
inst✝² : Preorder M
inst✝¹ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
x : M
inst✝ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x < x_1
a : M
n m : ℕ
ha : 1 < a
h : n < m
⊢ a ^ n < a ^ m
state_after: case intro
β : Type u_1
G : Type u_2
M : Type u_3
inst✝³ : Monoid M
inst✝² : Preorder M
inst✝¹ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
x : M
inst✝ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x < x_1
a : M
n : ℕ
ha : 1 < a
k : ℕ
h : n < n.succ + k
⊢ a ^ n < a ^ (n.succ + k)

tactic: clear h
state_before: case intro
β : Type u_1
G : Type u_2
M : Type u_3
inst✝³ : Monoid M
inst✝² : Preorder M
inst✝¹ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
x : M
inst✝ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x < x_1
a : M
n : ℕ
ha : 1 < a
k : ℕ
h : n < n.succ + k
⊢ a ^ n < a ^ (n.succ + k)
state_after: case intro
β : Type u_1
G : Type u_2
M : Type u_3
inst✝³ : Monoid M
inst✝² : Preorder M
inst✝¹ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
x : M
inst✝ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x < x_1
a : M
n : ℕ
ha : 1 < a
k : ℕ
⊢ a ^ n < a ^ (n.succ + k)

tactic: rw [pow_add, pow_succ, mul_assoc, ← pow_succ']
state_before: case intro
β : Type u_1
G : Type u_2
M : Type u_3
inst✝³ : Monoid M
inst✝² : Preorder M
inst✝¹ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
x : M
inst✝ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x < x_1
a : M
n : ℕ
ha : 1 < a
k : ℕ
⊢ a ^ n < a ^ (n.succ + k)
state_after: case intro
β : Type u_1
G : Type u_2
M : Type u_3
inst✝³ : Monoid M
inst✝² : Preorder M
inst✝¹ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
x : M
inst✝ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x < x_1
a : M
n : ℕ
ha : 1 < a
k : ℕ
⊢ a ^ n < a ^ n * a ^ (k + 1)

tactic: exact lt_mul_of_one_lt_right' _ (one_lt_pow' ha k.succ_ne_zero)
state_before: case intro
β : Type u_1
G : Type u_2
M : Type u_3
inst✝³ : Monoid M
inst✝² : Preorder M
inst✝¹ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
x : M
inst✝ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x < x_1
a : M
n : ℕ
ha : 1 < a
k : ℕ
⊢ a ^ n < a ^ n * a ^ (k + 1)
state_after: no goals
Theorem: sq_pos_of_neg
File: Mathlib/Algebra/Order/Ring/Basic.lean

tactic: rw [sq]
state_before: α : Type u_1
M : Type u_2
R : Type u_3
inst✝ : StrictOrderedRing R
a : R
ha : a < 0
⊢ 0 < a ^ 2
state_after: α : Type u_1
M : Type u_2
R : Type u_3
inst✝ : StrictOrderedRing R
a : R
ha : a < 0
⊢ 0 < a * a

tactic: exact mul_pos_of_neg_of_neg ha ha
state_before: α : Type u_1
M : Type u_2
R : Type u_3
inst✝ : StrictOrderedRing R
a : R
ha : a < 0
⊢ 0 < a * a
state_after: no goals
Theorem: Real.exists_rat_pow_btwn_rat
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: apply_mod_cast exists_rat_pow_btwn_rat_aux hn x y <;> assumption
state_before: z x✝ y✝ : ℝ
n : ℕ
hn : n ≠ 0
x y : ℚ
h : x < y
hy : 0 < y
⊢ ∃ q, 0 < q ∧ x < q ^ n ∧ q ^ n < y
state_after: no goals
Theorem: LieSubmodule.comap_map_eq
File: Mathlib/Algebra/Lie/IdealOperations.lean

tactic: rw [SetLike.ext'_iff]
state_before: R : Type u
L : Type v
M : Type w
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
inst✝³ : AddCommGroup M₂
inst✝² : Module R M₂
inst✝¹ : LieRingModule L M₂
inst✝ : LieModule R L M₂
N N' : LieSubmodule R L M
I J : LieIdeal R L
N₂ : LieSubmodule R L M₂
f : M →ₗ⁅R,L⁆ M₂
hf : f.ker = ⊥
⊢ comap f (map f N) = N
state_after: R : Type u
L : Type v
M : Type w
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
inst✝³ : AddCommGroup M₂
inst✝² : Module R M₂
inst✝¹ : LieRingModule L M₂
inst✝ : LieModule R L M₂
N N' : LieSubmodule R L M
I J : LieIdeal R L
N₂ : LieSubmodule R L M₂
f : M →ₗ⁅R,L⁆ M₂
hf : f.ker = ⊥
⊢ ↑(comap f (map f N)) = ↑N

tactic: exact (N : Set M).preimage_image_eq (f.ker_eq_bot.mp hf)
state_before: R : Type u
L : Type v
M : Type w
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
inst✝³ : AddCommGroup M₂
inst✝² : Module R M₂
inst✝¹ : LieRingModule L M₂
inst✝ : LieModule R L M₂
N N' : LieSubmodule R L M
I J : LieIdeal R L
N₂ : LieSubmodule R L M₂
f : M →ₗ⁅R,L⁆ M₂
hf : f.ker = ⊥
⊢ ↑(comap f (map f N)) = ↑N
state_after: no goals
Theorem: Finset.card_biUnion
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: simp_rw [card_eq_sum_ones]
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✝ : DecidableEq β
s : Finset α
t : α → Finset β
h : ∀ x ∈ s, ∀ y ∈ s, x ≠ y → Disjoint (t x) (t y)
⊢ ∑ a ∈ s, ∑ _i ∈ t a, 1 = ∑ u ∈ s, (t u).card
state_after: no goals
Theorem: Monoid.PushoutI.NormalWord.prod_empty
File: Mathlib/GroupTheory/PushoutI.lean

tactic: simp [prod, empty]
state_before: ι : Type u_1
G : ι → Type u_2
H : Type u_3
K : Type u_4
inst✝⁴ : Monoid K
inst✝³ : (i : ι) → Group (G i)
inst✝² : Group H
φ : (i : ι) → H →* G i
d : Transversal φ
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → DecidableEq (G i)
⊢ empty.prod = 1
state_after: no goals
Theorem: Nat.multinomial_cons
File: Mathlib/Data/Nat/Choose/Multinomial.lean

tactic: rw [multinomial, Nat.div_eq_iff_eq_mul_left _ (prod_factorial_dvd_factorial_sum _ _), prod_cons,
  multinomial, mul_assoc, mul_left_comm _ (f a)!,
  Nat.div_mul_cancel (prod_factorial_dvd_factorial_sum _ _), ← mul_assoc, Nat.choose_symm_add,
  Nat.add_choose_mul_factorial_mul_factorial, Finset.sum_cons]
state_before: α : Type u_1
s : Finset α
f✝ : α → ℕ
a b : α
n : ℕ
ha : a ∉ s
f : α → ℕ
⊢ multinomial (cons a s ha) f = (f a + ∑ i ∈ s, f i).choose (f a) * multinomial s f
state_after: α : Type u_1
s : Finset α
f✝ : α → ℕ
a b : α
n : ℕ
ha : a ∉ s
f : α → ℕ
⊢ 0 < ∏ i ∈ cons a s ha, (f i)!

tactic: positivity
state_before: α : Type u_1
s : Finset α
f✝ : α → ℕ
a b : α
n : ℕ
ha : a ∉ s
f : α → ℕ
⊢ 0 < ∏ i ∈ cons a s ha, (f i)!
state_after: no goals
Theorem: Multiset.coe_bind
File: Mathlib/Data/Multiset/Bind.lean

tactic: rw [List.bind, ← coe_join, List.map_map]
state_before: α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
s t : Multiset α
f✝ g : α → Multiset β
l : List α
f : α → List β
⊢ ((↑l).bind fun a => ↑(f a)) = ↑(l.bind f)
state_after: α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
s t : Multiset α
f✝ g : α → Multiset β
l : List α
f : α → List β
⊢ ((↑l).bind fun a => ↑(f a)) = (↑(List.map (ofList ∘ f) l)).join

tactic: rfl
state_before: α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
s t : Multiset α
f✝ g : α → Multiset β
l : List α
f : α → List β
⊢ ((↑l).bind fun a => ↑(f a)) = (↑(List.map (ofList ∘ f) l)).join
state_after: no goals
Theorem: interior_sInter
File: Mathlib/Topology/AlexandrovDiscrete.lean

tactic: simp_rw [sInter_eq_biInter, interior_iInter]
state_before: ι : Sort u_1
κ : ι → Sort u_2
α : Type u_3
β : Type u_4
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : AlexandrovDiscrete α
S✝ : Set (Set α)
f : ι → Set α
S : Set (Set α)
⊢ interior (⋂₀ S) = ⋂ s ∈ S, interior s
state_after: no goals
Theorem: LinearPMap.inverse_closure
File: Mathlib/Topology/Algebra/Module/LinearPMap.lean

tactic: apply eq_of_eq_graph
state_before: R : Type u_1
E : Type u_2
F : Type u_3
inst✝¹¹ : CommRing R
inst✝¹⁰ : AddCommGroup E
inst✝⁹ : AddCommGroup F
inst✝⁸ : Module R E
inst✝⁷ : Module R F
inst✝⁶ : TopologicalSpace E
inst✝⁵ : TopologicalSpace F
inst✝⁴ : ContinuousAdd E
inst✝³ : ContinuousAdd F
inst✝² : TopologicalSpace R
inst✝¹ : ContinuousSMul R E
inst✝ : ContinuousSMul R F
f : E →ₗ.[R] F
hf : LinearMap.ker f.toFun = ⊥
hf' : f.IsClosable
hcf : LinearMap.ker f.closure.toFun = ⊥
⊢ f.inverse.closure = f.closure.inverse
state_after: case h
R : Type u_1
E : Type u_2
F : Type u_3
inst✝¹¹ : CommRing R
inst✝¹⁰ : AddCommGroup E
inst✝⁹ : AddCommGroup F
inst✝⁸ : Module R E
inst✝⁷ : Module R F
inst✝⁶ : TopologicalSpace E
inst✝⁵ : TopologicalSpace F
inst✝⁴ : ContinuousAdd E
inst✝³ : ContinuousAdd F
inst✝² : TopologicalSpace R
inst✝¹ : ContinuousSMul R E
inst✝ : ContinuousSMul R F
f : E →ₗ.[R] F
hf : LinearMap.ker f.toFun = ⊥
hf' : f.IsClosable
hcf : LinearMap.ker f.closure.toFun = ⊥
⊢ f.inverse.closure.graph = f.closure.inverse.graph

tactic: rw [closure_inverse_graph hf hf' hcf,
  ((inverse_isClosable_iff hf hf').mpr hcf).graph_closure_eq_closure_graph]
state_before: case h
R : Type u_1
E : Type u_2
F : Type u_3
inst✝¹¹ : CommRing R
inst✝¹⁰ : AddCommGroup E
inst✝⁹ : AddCommGroup F
inst✝⁸ : Module R E
inst✝⁷ : Module R F
inst✝⁶ : TopologicalSpace E
inst✝⁵ : TopologicalSpace F
inst✝⁴ : ContinuousAdd E
inst✝³ : ContinuousAdd F
inst✝² : TopologicalSpace R
inst✝¹ : ContinuousSMul R E
inst✝ : ContinuousSMul R F
f : E →ₗ.[R] F
hf : LinearMap.ker f.toFun = ⊥
hf' : f.IsClosable
hcf : LinearMap.ker f.closure.toFun = ⊥
⊢ f.inverse.closure.graph = f.closure.inverse.graph
state_after: no goals
Theorem: Asymptotics.bound_of_isBigO_nat_atTop
File: Mathlib/Analysis/Asymptotics/Asymptotics.lean

tactic: rwa [Nat.cofinite_eq_atTop]
state_before: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
G : Type u_5
E' : Type u_6
F' : Type u_7
G' : Type u_8
E'' : Type u_9
F'' : Type u_10
G'' : Type u_11
E''' : Type u_12
R : Type u_13
R' : Type u_14
𝕜 : Type u_15
𝕜' : Type u_16
inst✝¹³ : Norm E
inst✝¹² : Norm F
inst✝¹¹ : Norm G
inst✝¹⁰ : SeminormedAddCommGroup E'
inst✝⁹ : SeminormedAddCommGroup F'
inst✝⁸ : SeminormedAddCommGroup G'
inst✝⁷ : NormedAddCommGroup E''
inst✝⁶ : NormedAddCommGroup F''
inst✝⁵ : NormedAddCommGroup G''
inst✝⁴ : SeminormedRing R
inst✝³ : SeminormedAddGroup E'''
inst✝² : SeminormedRing R'
inst✝¹ : NormedDivisionRing 𝕜
inst✝ : NormedDivisionRing 𝕜'
c c' c₁ c₂ : ℝ
f✝ : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g''✝ : α → F''
k'' : α → G''
l l' : Filter α
f : ℕ → E
g'' : ℕ → E''
h : f =O[atTop] g''
⊢ f =O[cofinite] g''
state_after: no goals
Theorem: PicardLindelof.FunSpace.mem_closedBall
File: Mathlib/Analysis/ODE/PicardLindelof.lean

tactic: rw [f.map_t₀']
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
v : PicardLindelof E
f : v.FunSpace
t : ↑(Icc v.tMin v.tMax)
⊢ dist (f.toFun t) v.x₀ = dist (f.toFun t) (f.toFun v.t₀)
state_after: no goals
Theorem: QuasispectrumRestricts.real_iff
File: Mathlib/Analysis/NormedSpace/Spectrum.lean

tactic: rw [quasispectrumRestricts_iff_spectrumRestricts_inr,
  Unitization.quasispectrum_eq_spectrum_inr' _ ℂ, SpectrumRestricts.real_iff]
state_before: 𝕜 : Type u_1
A✝ : Type u_2
A : Type u_3
inst✝³ : NonUnitalRing A
inst✝² : Module ℂ A
inst✝¹ : IsScalarTower ℂ A A
inst✝ : SMulCommClass ℂ A A
a : A
⊢ QuasispectrumRestricts a ⇑Complex.reCLM ↔ ∀ x ∈ σₙ ℂ a, x = ↑x.re
state_after: no goals
Theorem: String.foldr_eq
File: .lake/packages/batteries/Batteries/Data/String/Lemmas.lean

tactic: simpa using foldrAux_of_valid f [] s.1 [] a
state_before: α : Type u_1
f : Char → α → α
s : String
a : α
⊢ foldr f a s = List.foldr f a s.data
state_after: no goals
Theorem: quadraticCharFun_eq_zero_iff
File: Mathlib/NumberTheory/LegendreSymbol/QuadraticChar/Basic.lean

tactic: simp only [quadraticCharFun]
state_before: F : Type u_1
inst✝² : Field F
inst✝¹ : Fintype F
inst✝ : DecidableEq F
a : F
⊢ quadraticCharFun F a = 0 ↔ a = 0
state_after: F : Type u_1
inst✝² : Field F
inst✝¹ : Fintype F
inst✝ : DecidableEq F
a : F
⊢ (if a = 0 then 0 else if IsSquare a then 1 else -1) = 0 ↔ a = 0

tactic: by_cases ha : a = 0
state_before: F : Type u_1
inst✝² : Field F
inst✝¹ : Fintype F
inst✝ : DecidableEq F
a : F
⊢ (if a = 0 then 0 else if IsSquare a then 1 else -1) = 0 ↔ a = 0
state_after: case pos
F : Type u_1
inst✝² : Field F
inst✝¹ : Fintype F
inst✝ : DecidableEq F
a : F
ha : a = 0
⊢ (if a = 0 then 0 else if IsSquare a then 1 else -1) = 0 ↔ a = 0

case neg
F : Type u_1
inst✝² : Field F
inst✝¹ : Fintype F
inst✝ : DecidableEq F
a : F
ha : ¬a = 0
⊢ (if a = 0 then 0 else if IsSquare a then 1 else -1) = 0 ↔ a = 0

tactic: simp only [ha, if_true]
state_before: case pos
F : Type u_1
inst✝² : Field F
inst✝¹ : Fintype F
inst✝ : DecidableEq F
a : F
ha : a = 0
⊢ (if a = 0 then 0 else if IsSquare a then 1 else -1) = 0 ↔ a = 0
state_after: no goals

tactic: simp only [ha, if_false, iff_false_iff]
state_before: case neg
F : Type u_1
inst✝² : Field F
inst✝¹ : Fintype F
inst✝ : DecidableEq F
a : F
ha : ¬a = 0
⊢ (if a = 0 then 0 else if IsSquare a then 1 else -1) = 0 ↔ a = 0
state_after: case neg
F : Type u_1
inst✝² : Field F
inst✝¹ : Fintype F
inst✝ : DecidableEq F
a : F
ha : ¬a = 0
⊢ ¬(if IsSquare a then 1 else -1) = 0

tactic: split_ifs <;> simp only [neg_eq_zero, one_ne_zero, not_false_iff]
state_before: case neg
F : Type u_1
inst✝² : Field F
inst✝¹ : Fintype F
inst✝ : DecidableEq F
a : F
ha : ¬a = 0
⊢ ¬(if IsSquare a then 1 else -1) = 0
state_after: no goals
Theorem: HasDerivWithinAt.const_mul
File: Mathlib/Analysis/Calculus/Deriv/Mul.lean

tactic: convert (hasDerivWithinAt_const x s c).mul hd using 1
state_before: 𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
E : Type w
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
G : Type u_1
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
𝕜' : Type u_2
𝔸 : Type u_3
inst✝³ : NormedField 𝕜'
inst✝² : NormedRing 𝔸
inst✝¹ : NormedAlgebra 𝕜 𝕜'
inst✝ : NormedAlgebra 𝕜 𝔸
c✝ d : 𝕜 → 𝔸
c' d' : 𝔸
u v : 𝕜 → 𝕜'
c : 𝔸
hd : HasDerivWithinAt d d' s x
⊢ HasDerivWithinAt (fun y => c * d y) (c * d') s x
state_after: case h.e'_7
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
E : Type w
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
G : Type u_1
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
𝕜' : Type u_2
𝔸 : Type u_3
inst✝³ : NormedField 𝕜'
inst✝² : NormedRing 𝔸
inst✝¹ : NormedAlgebra 𝕜 𝕜'
inst✝ : NormedAlgebra 𝕜 𝔸
c✝ d : 𝕜 → 𝔸
c' d' : 𝔸
u v : 𝕜 → 𝕜'
c : 𝔸
hd : HasDerivWithinAt d d' s x
⊢ c * d' = 0 * d x + c * d'

tactic: rw [zero_mul, zero_add]
state_before: case h.e'_7
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
E : Type w
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
G : Type u_1
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
𝕜' : Type u_2
𝔸 : Type u_3
inst✝³ : NormedField 𝕜'
inst✝² : NormedRing 𝔸
inst✝¹ : NormedAlgebra 𝕜 𝕜'
inst✝ : NormedAlgebra 𝕜 𝔸
c✝ d : 𝕜 → 𝔸
c' d' : 𝔸
u v : 𝕜 → 𝕜'
c : 𝔸
hd : HasDerivWithinAt d d' s x
⊢ c * d' = 0 * d x + c * d'
state_after: no goals
Theorem: balancedCoreAux_empty
File: Mathlib/Analysis/LocallyConvex/BalancedCoreHull.lean

tactic: simp_rw [balancedCoreAux, iInter₂_eq_empty_iff, smul_set_empty]
state_before: 𝕜 : Type u_1
E : Type u_2
ι : Type u_3
inst✝² : NormedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
s t : Set E
⊢ balancedCoreAux 𝕜 ∅ = ∅
state_after: 𝕜 : Type u_1
E : Type u_2
ι : Type u_3
inst✝² : NormedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
s t : Set E
⊢ ∀ (a : E), ∃ i, ∃ (_ : 1 ≤ ‖i‖), a ∉ ∅

tactic: exact fun _ => ⟨1, norm_one.ge, not_mem_empty _⟩
state_before: 𝕜 : Type u_1
E : Type u_2
ι : Type u_3
inst✝² : NormedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
s t : Set E
⊢ ∀ (a : E), ∃ i, ∃ (_ : 1 ≤ ‖i‖), a ∉ ∅
state_after: no goals
Theorem: riemannZeta_neg_nat_eq_bernoulli'
File: Mathlib/NumberTheory/LSeries/HurwitzZetaValues.lean

tactic: rcases eq_or_ne k 0 with rfl | hk
state_before: k : ℕ
⊢ riemannZeta (-↑k) = -↑(bernoulli' (k + 1)) / (↑k + 1)
state_after: case inl

⊢ riemannZeta (-↑0) = -↑(bernoulli' (0 + 1)) / (↑0 + 1)

case inr
k : ℕ
hk : k ≠ 0
⊢ riemannZeta (-↑k) = -↑(bernoulli' (k + 1)) / (↑k + 1)

tactic: rw [Nat.cast_zero, neg_zero, riemannZeta_zero, zero_add, zero_add, div_one,
  bernoulli'_one, Rat.cast_div, Rat.cast_one, Rat.cast_ofNat, neg_div]
state_before: case inl

⊢ riemannZeta (-↑0) = -↑(bernoulli' (0 + 1)) / (↑0 + 1)
state_after: no goals

tactic: rw [← hurwitzZeta_zero, ← QuotientAddGroup.mk_zero, hurwitzZeta_neg_nat hk
  (left_mem_Icc.mpr zero_le_one), ofReal_zero, Polynomial.eval_zero_map,
  Polynomial.bernoulli_eval_zero, Algebra.algebraMap_eq_smul_one, Rat.smul_one_eq_cast,
  div_mul_eq_mul_div, neg_one_mul, bernoulli_eq_bernoulli'_of_ne_one (by simp [hk])]
state_before: case inr
k : ℕ
hk : k ≠ 0
⊢ riemannZeta (-↑k) = -↑(bernoulli' (k + 1)) / (↑k + 1)
state_after: no goals

tactic: simp [hk]
state_before: k : ℕ
hk : k ≠ 0
⊢ k + 1 ≠ 1
state_after: no goals
Theorem: IsSepClosed.roots_eq_zero_iff
File: Mathlib/FieldTheory/IsSepClosed.lean

tactic: refine ⟨fun h => ?_, fun hp => by rw [hp, roots_C]⟩
state_before: k : Type u
inst✝² : Field k
K : Type v
inst✝¹ : Field K
inst✝ : IsSepClosed k
p : k[X]
hsep : p.Separable
⊢ p.roots = 0 ↔ p = C (p.coeff 0)
state_after: k : Type u
inst✝² : Field k
K : Type v
inst✝¹ : Field K
inst✝ : IsSepClosed k
p : k[X]
hsep : p.Separable
h : p.roots = 0
⊢ p = C (p.coeff 0)

tactic: rcases le_or_lt (degree p) 0 with hd | hd
state_before: k : Type u
inst✝² : Field k
K : Type v
inst✝¹ : Field K
inst✝ : IsSepClosed k
p : k[X]
hsep : p.Separable
h : p.roots = 0
⊢ p = C (p.coeff 0)
state_after: case inl
k : Type u
inst✝² : Field k
K : Type v
inst✝¹ : Field K
inst✝ : IsSepClosed k
p : k[X]
hsep : p.Separable
h : p.roots = 0
hd : p.degree ≤ 0
⊢ p = C (p.coeff 0)

case inr
k : Type u
inst✝² : Field k
K : Type v
inst✝¹ : Field K
inst✝ : IsSepClosed k
p : k[X]
hsep : p.Separable
h : p.roots = 0
hd : 0 < p.degree
⊢ p = C (p.coeff 0)

tactic: rw [hp, roots_C]
state_before: k : Type u
inst✝² : Field k
K : Type v
inst✝¹ : Field K
inst✝ : IsSepClosed k
p : k[X]
hsep : p.Separable
hp : p = C (p.coeff 0)
⊢ p.roots = 0
state_after: no goals

tactic: exact eq_C_of_degree_le_zero hd
state_before: case inl
k : Type u
inst✝² : Field k
K : Type v
inst✝¹ : Field K
inst✝ : IsSepClosed k
p : k[X]
hsep : p.Separable
h : p.roots = 0
hd : p.degree ≤ 0
⊢ p = C (p.coeff 0)
state_after: no goals

tactic: obtain ⟨z, hz⟩ := IsSepClosed.exists_root p hd.ne' hsep
state_before: case inr
k : Type u
inst✝² : Field k
K : Type v
inst✝¹ : Field K
inst✝ : IsSepClosed k
p : k[X]
hsep : p.Separable
h : p.roots = 0
hd : 0 < p.degree
⊢ p = C (p.coeff 0)
state_after: case inr.intro
k : Type u
inst✝² : Field k
K : Type v
inst✝¹ : Field K
inst✝ : IsSepClosed k
p : k[X]
hsep : p.Separable
h : p.roots = 0
hd : 0 < p.degree
z : k
hz : p.IsRoot z
⊢ p = C (p.coeff 0)

tactic: rw [← mem_roots (ne_zero_of_degree_gt hd), h] at hz
state_before: case inr.intro
k : Type u
inst✝² : Field k
K : Type v
inst✝¹ : Field K
inst✝ : IsSepClosed k
p : k[X]
hsep : p.Separable
h : p.roots = 0
hd : 0 < p.degree
z : k
hz : p.IsRoot z
⊢ p = C (p.coeff 0)
state_after: case inr.intro
k : Type u
inst✝² : Field k
K : Type v
inst✝¹ : Field K
inst✝ : IsSepClosed k
p : k[X]
hsep : p.Separable
h : p.roots = 0
hd : 0 < p.degree
z : k
hz : z ∈ 0
⊢ p = C (p.coeff 0)

tactic: simp at hz
state_before: case inr.intro
k : Type u
inst✝² : Field k
K : Type v
inst✝¹ : Field K
inst✝ : IsSepClosed k
p : k[X]
hsep : p.Separable
h : p.roots = 0
hd : 0 < p.degree
z : k
hz : z ∈ 0
⊢ p = C (p.coeff 0)
state_after: no goals
Theorem: Symmetric.forall_existsUnique_iff
File: Mathlib/Logic/Function/Basic.lean

tactic: simp [hr.forall_existsUnique_iff', funext_iff]
state_before: α : Sort u_1
β : Sort u_2
r : α → α → Prop
hr : Symmetric r
⊢ (∀ (a : α), ∃! b, r a b) ↔ ∃ f, Involutive f ∧ ∀ {a b : α}, r a b ↔ f a = b
state_after: no goals
Theorem: dist_partial_sum
File: Mathlib/Analysis/SpecificLimits/Normed.lean

tactic: simp [dist_eq_norm, sum_range_succ]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : SeminormedAddCommGroup α
r C : ℝ
f u : ℕ → α
n : ℕ
⊢ dist (∑ k ∈ Finset.range (n + 1), u k) (∑ k ∈ Finset.range n, u k) = ‖u n‖
state_after: no goals
Theorem: CategoryTheory.StrongEpi.of_arrow_iso
File: Mathlib/CategoryTheory/Limits/Shapes/StrongEpi.lean

tactic: rw [Arrow.iso_w' e]
state_before: C : Type u
inst✝ : Category.{v, u} C
P Q R : C
f✝ : P ⟶ Q
g✝ : Q ⟶ R
A B A' B' : C
f : A ⟶ B
g : A' ⟶ B'
e : Arrow.mk f ≅ Arrow.mk g
h : StrongEpi f
⊢ Epi g
state_after: C : Type u
inst✝ : Category.{v, u} C
P Q R : C
f✝ : P ⟶ Q
g✝ : Q ⟶ R
A B A' B' : C
f : A ⟶ B
g : A' ⟶ B'
e : Arrow.mk f ≅ Arrow.mk g
h : StrongEpi f
⊢ Epi (e.inv.left ≫ f ≫ e.hom.right)

tactic: haveI := epi_comp f e.hom.right
state_before: C : Type u
inst✝ : Category.{v, u} C
P Q R : C
f✝ : P ⟶ Q
g✝ : Q ⟶ R
A B A' B' : C
f : A ⟶ B
g : A' ⟶ B'
e : Arrow.mk f ≅ Arrow.mk g
h : StrongEpi f
⊢ Epi (e.inv.left ≫ f ≫ e.hom.right)
state_after: C : Type u
inst✝ : Category.{v, u} C
P Q R : C
f✝ : P ⟶ Q
g✝ : Q ⟶ R
A B A' B' : C
f : A ⟶ B
g : A' ⟶ B'
e : Arrow.mk f ≅ Arrow.mk g
h : StrongEpi f
this : Epi (f ≫ e.hom.right)
⊢ Epi (e.inv.left ≫ f ≫ e.hom.right)

tactic: apply epi_comp
state_before: C : Type u
inst✝ : Category.{v, u} C
P Q R : C
f✝ : P ⟶ Q
g✝ : Q ⟶ R
A B A' B' : C
f : A ⟶ B
g : A' ⟶ B'
e : Arrow.mk f ≅ Arrow.mk g
h : StrongEpi f
this : Epi (f ≫ e.hom.right)
⊢ Epi (e.inv.left ≫ f ≫ e.hom.right)
state_after: no goals

tactic: intro
state_before: C : Type u
inst✝ : Category.{v, u} C
P Q R : C
f✝ : P ⟶ Q
g✝ : Q ⟶ R
A B A' B' : C
f : A ⟶ B
g : A' ⟶ B'
e : Arrow.mk f ≅ Arrow.mk g
h : StrongEpi f
X Y : C
z : X ⟶ Y
⊢ ∀ [inst : Mono z], HasLiftingProperty g z
state_after: C : Type u
inst✝¹ : Category.{v, u} C
P Q R : C
f✝ : P ⟶ Q
g✝ : Q ⟶ R
A B A' B' : C
f : A ⟶ B
g : A' ⟶ B'
e : Arrow.mk f ≅ Arrow.mk g
h : StrongEpi f
X Y : C
z : X ⟶ Y
inst✝ : Mono z
⊢ HasLiftingProperty g z

tactic: apply HasLiftingProperty.of_arrow_iso_left e z
state_before: C : Type u
inst✝¹ : Category.{v, u} C
P Q R : C
f✝ : P ⟶ Q
g✝ : Q ⟶ R
A B A' B' : C
f : A ⟶ B
g : A' ⟶ B'
e : Arrow.mk f ≅ Arrow.mk g
h : StrongEpi f
X Y : C
z : X ⟶ Y
inst✝ : Mono z
⊢ HasLiftingProperty g z
state_after: no goals
Theorem: orderOf_eq_zero_iff'
File: Mathlib/GroupTheory/OrderOfElement.lean

tactic: simp_rw [orderOf_eq_zero_iff, isOfFinOrder_iff_pow_eq_one, not_exists, not_and]
state_before: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Monoid G
a b x y : G
n m : ℕ
⊢ orderOf x = 0 ↔ ∀ (n : ℕ), 0 < n → x ^ n ≠ 1
state_after: no goals
Theorem: Polynomial.smul_mem_lifts
File: Mathlib/Algebra/Polynomial/Lifts.lean

tactic: rw [mem_lifts_iff_mem_alg] at hp ⊢
state_before: R : Type u
inst✝² : CommSemiring R
S : Type v
inst✝¹ : Semiring S
inst✝ : Algebra R S
p : S[X]
r : R
hp : p ∈ lifts (algebraMap R S)
⊢ r • p ∈ lifts (algebraMap R S)
state_after: R : Type u
inst✝² : CommSemiring R
S : Type v
inst✝¹ : Semiring S
inst✝ : Algebra R S
p : S[X]
r : R
hp : p ∈ (mapAlg R S).range
⊢ r • p ∈ (mapAlg R S).range

tactic: exact Subalgebra.smul_mem (mapAlg R S).range hp r
state_before: R : Type u
inst✝² : CommSemiring R
S : Type v
inst✝¹ : Semiring S
inst✝ : Algebra R S
p : S[X]
r : R
hp : p ∈ (mapAlg R S).range
⊢ r • p ∈ (mapAlg R S).range
state_after: no goals
Theorem: iteratedDeriv_const_mul
File: Mathlib/Analysis/Calculus/IteratedDeriv/Lemmas.lean

tactic: simpa only [smul_eq_mul] using iteratedDeriv_const_smul h c
state_before: 𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
n✝ : ℕ
x : 𝕜
s : Set 𝕜
hx : x ∈ s
h✝ : UniqueDiffOn 𝕜 s
f✝ g : 𝕜 → F
n : ℕ
f : 𝕜 → 𝕜
h : ContDiff 𝕜 (↑n) f
c : 𝕜
⊢ (iteratedDeriv n fun x => f (c * x)) = fun x => c ^ n * iteratedDeriv n f (c * x)
state_after: no goals