1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Polynomial.natDegree_C
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: by_cases ha : a = 0
state_before: R : Type u
S : Type v
a✝ b c d : R
n m : ℕ
inst✝ : Semiring R
p q r : R[X]
a : R
⊢ (C a).natDegree = 0
state_after: case pos
R : Type u
S : Type v
a✝ b c d : R
n m : ℕ
inst✝ : Semiring R
p q r : R[X]
a : R
ha : a = 0
⊢ (C a).natDegree = 0

case neg
R : Type u
S : Type v
a✝ b c d : R
n m : ℕ
inst✝ : Semiring R
p q r : R[X]
a : R
ha : ¬a = 0
⊢ (C a).natDegree = 0

tactic: have : C a = 0 := by rw [ha, C_0]
state_before: case pos
R : Type u
S : Type v
a✝ b c d : R
n m : ℕ
inst✝ : Semiring R
p q r : R[X]
a : R
ha : a = 0
⊢ (C a).natDegree = 0
state_after: case pos
R : Type u
S : Type v
a✝ b c d : R
n m : ℕ
inst✝ : Semiring R
p q r : R[X]
a : R
ha : a = 0
this : C a = 0
⊢ (C a).natDegree = 0

tactic: rw [natDegree, degree_eq_bot.2 this, WithBot.unbot'_bot]
state_before: case pos
R : Type u
S : Type v
a✝ b c d : R
n m : ℕ
inst✝ : Semiring R
p q r : R[X]
a : R
ha : a = 0
this : C a = 0
⊢ (C a).natDegree = 0
state_after: no goals

tactic: rw [ha, C_0]
state_before: R : Type u
S : Type v
a✝ b c d : R
n m : ℕ
inst✝ : Semiring R
p q r : R[X]
a : R
ha : a = 0
⊢ C a = 0
state_after: no goals

tactic: rw [natDegree, degree_C ha, WithBot.unbot_zero']
state_before: case neg
R : Type u
S : Type v
a✝ b c d : R
n m : ℕ
inst✝ : Semiring R
p q r : R[X]
a : R
ha : ¬a = 0
⊢ (C a).natDegree = 0
state_after: no goals
Theorem: Fin.card_Icc
File: Mathlib/Order/Interval/Finset/Fin.lean

tactic: rw [← Nat.card_Icc, ← map_valEmbedding_Icc, card_map]
state_before: n : ℕ
a b : Fin n
⊢ (Icc a b).card = ↑b + 1 - ↑a
state_after: no goals
Theorem: Nat.sum_totient'
File: Mathlib/Data/Nat/Totient.lean

tactic: convert sum_totient _ using 1
state_before: n : ℕ
⊢ ∑ m ∈ filter (fun x => x ∣ n) (range n.succ), φ m = n
state_after: case h.e'_2
n : ℕ
⊢ ∑ m ∈ filter (fun x => x ∣ n) (range n.succ), φ m = n.divisors.sum φ

tactic: simp only [Nat.divisors, sum_filter, range_eq_Ico]
state_before: case h.e'_2
n : ℕ
⊢ ∑ m ∈ filter (fun x => x ∣ n) (range n.succ), φ m = n.divisors.sum φ
state_after: case h.e'_2
n : ℕ
⊢ (∑ a ∈ Ico 0 n.succ, if a ∣ n then φ a else 0) = ∑ a ∈ Ico 1 (n + 1), if a ∣ n then φ a else 0

tactic: rw [sum_eq_sum_Ico_succ_bot] <;> simp
state_before: case h.e'_2
n : ℕ
⊢ (∑ a ∈ Ico 0 n.succ, if a ∣ n then φ a else 0) = ∑ a ∈ Ico 1 (n + 1), if a ∣ n then φ a else 0
state_after: no goals
Theorem: ENNReal.inv_ne_zero
File: Mathlib/Data/ENNReal/Inv.lean

tactic: simp
state_before: a b c d : ℝ≥0∞
r p q : ℝ≥0
⊢ a⁻¹ ≠ 0 ↔ a ≠ ⊤
state_after: no goals
Theorem: NNReal.summable_one_div_rpow
File: Mathlib/Analysis/PSeries.lean

tactic: simp
state_before: p : ℝ
⊢ (Summable fun n => 1 / ↑n ^ p) ↔ 1 < p
state_after: no goals
Theorem: coverPreserving_opens_map
File: Mathlib/Topology/Sheaves/SheafCondition/Sites.lean

tactic: constructor
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : TopCat
f : X ⟶ Y
F : TopCat.Presheaf C Y
⊢ CoverPreserving (Opens.grothendieckTopology ↑Y) (Opens.grothendieckTopology ↑X) (Opens.map f)
state_after: case cover_preserve
C : Type u
inst✝ : Category.{v, u} C
X Y : TopCat
f : X ⟶ Y
F : TopCat.Presheaf C Y
⊢ ∀ {U : Opens ↑Y} {S : Sieve U},
    S ∈ (Opens.grothendieckTopology ↑Y).sieves U →
      Sieve.functorPushforward (Opens.map f) S ∈ (Opens.grothendieckTopology ↑X).sieves ((Opens.map f).obj U)

tactic: intro U S hS x hx
state_before: case cover_preserve
C : Type u
inst✝ : Category.{v, u} C
X Y : TopCat
f : X ⟶ Y
F : TopCat.Presheaf C Y
⊢ ∀ {U : Opens ↑Y} {S : Sieve U},
    S ∈ (Opens.grothendieckTopology ↑Y).sieves U →
      Sieve.functorPushforward (Opens.map f) S ∈ (Opens.grothendieckTopology ↑X).sieves ((Opens.map f).obj U)
state_after: case cover_preserve
C : Type u
inst✝ : Category.{v, u} C
X Y : TopCat
f : X ⟶ Y
F : TopCat.Presheaf C Y
U : Opens ↑Y
S : Sieve U
hS : S ∈ (Opens.grothendieckTopology ↑Y).sieves U
x : ↑X
hx : x ∈ (Opens.map f).obj U
⊢ ∃ U_1 f_1, (Sieve.functorPushforward (Opens.map f) S).arrows f_1 ∧ x ∈ U_1

tactic: obtain ⟨V, i, hi, hxV⟩ := hS (f x) hx
state_before: case cover_preserve
C : Type u
inst✝ : Category.{v, u} C
X Y : TopCat
f : X ⟶ Y
F : TopCat.Presheaf C Y
U : Opens ↑Y
S : Sieve U
hS : S ∈ (Opens.grothendieckTopology ↑Y).sieves U
x : ↑X
hx : x ∈ (Opens.map f).obj U
⊢ ∃ U_1 f_1, (Sieve.functorPushforward (Opens.map f) S).arrows f_1 ∧ x ∈ U_1
state_after: case cover_preserve.intro.intro.intro
C : Type u
inst✝ : Category.{v, u} C
X Y : TopCat
f : X ⟶ Y
F : TopCat.Presheaf C Y
U : Opens ↑Y
S : Sieve U
hS : S ∈ (Opens.grothendieckTopology ↑Y).sieves U
x : ↑X
hx : x ∈ (Opens.map f).obj U
V : Opens ↑Y
i : V ⟶ U
hi : S.arrows i
hxV : f x ∈ V
⊢ ∃ U_1 f_1, (Sieve.functorPushforward (Opens.map f) S).arrows f_1 ∧ x ∈ U_1

tactic: exact ⟨_, (Opens.map f).map i, ⟨_, _, 𝟙 _, hi, Subsingleton.elim _ _⟩, hxV⟩
state_before: case cover_preserve.intro.intro.intro
C : Type u
inst✝ : Category.{v, u} C
X Y : TopCat
f : X ⟶ Y
F : TopCat.Presheaf C Y
U : Opens ↑Y
S : Sieve U
hS : S ∈ (Opens.grothendieckTopology ↑Y).sieves U
x : ↑X
hx : x ∈ (Opens.map f).obj U
V : Opens ↑Y
i : V ⟶ U
hi : S.arrows i
hxV : f x ∈ V
⊢ ∃ U_1 f_1, (Sieve.functorPushforward (Opens.map f) S).arrows f_1 ∧ x ∈ U_1
state_after: no goals
Theorem: FormalMultilinearSeries.le_radius_of_summable
File: Mathlib/Analysis/Analytic/Basic.lean

tactic: simp only [← coe_nnnorm] at h
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h : Summable fun n => ‖p n‖ * ↑r ^ n
⊢ Summable fun n => ‖p n‖₊ * r ^ n
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h : Summable fun n => ↑‖p n‖₊ * ↑r ^ n
⊢ Summable fun n => ‖p n‖₊ * r ^ n

tactic: exact mod_cast h
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
r : ℝ≥0
h : Summable fun n => ↑‖p n‖₊ * ↑r ^ n
⊢ Summable fun n => ‖p n‖₊ * r ^ n
state_after: no goals
Theorem: Associated.mul_left
File: Mathlib/Algebra/Associated.lean

tactic: obtain ⟨d, rfl⟩ := h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
a b c : α
h : b ~ᵤ c
⊢ a * b ~ᵤ a * c
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
a b : α
d : αˣ
⊢ a * b ~ᵤ a * (b * ↑d)

tactic: exact ⟨d, mul_assoc _ _ _⟩
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
a b : α
d : αˣ
⊢ a * b ~ᵤ a * (b * ↑d)
state_after: no goals
Theorem: MvPolynomial.coe_bit1
File: Mathlib/RingTheory/MvPowerSeries/Basic.lean

tactic: rw [bit1, bit1, coe_add, coe_one, coe_bit0]
state_before: σ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
φ ψ : MvPolynomial σ R
⊢ ↑(bit1 φ) = bit1 ↑φ
state_after: no goals
Theorem: mul_inv_le_one_iff_le
File: Mathlib/Algebra/Order/Group/Defs.lean

tactic: rw [one_mul]
state_before: α : Type u
inst✝² : Group α
inst✝¹ : LE α
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c : α
⊢ a ≤ 1 * b ↔ a ≤ b
state_after: no goals
Theorem: Quotient.out_equiv_out
File: Mathlib/Data/Quot.lean

tactic: rw [← Quotient.eq_mk_iff_out, Quotient.out_eq]
state_before: α : Sort u_1
β : Sort u_2
s : Setoid α
x y : Quotient s
⊢ x.out ≈ y.out ↔ x = y
state_after: no goals
Theorem: FractionalIdeal.spanFinset_ne_zero
File: Mathlib/RingTheory/FractionalIdeal/Operations.lean

tactic: simp
state_before: R : Type u_1
inst✝⁶ : CommRing R
S : Submonoid R
P : Type u_2
inst✝⁵ : CommRing P
inst✝⁴ : Algebra R P
loc : IsLocalization S P
R₁ : Type u_3
inst✝³ : CommRing R₁
K : Type u_4
inst✝² : Field K
inst✝¹ : Algebra R₁ K
inst✝ : IsFractionRing R₁ K
ι : Type u_5
s : Finset ι
f : ι → K
⊢ spanFinset R₁ s f ≠ 0 ↔ ∃ j ∈ s, f j ≠ 0
state_after: no goals
Theorem: CategoryTheory.Abelian.kernel.lift.inv
File: Mathlib/CategoryTheory/Abelian/Exact.lean

tactic: have := isIso_kernel_lift_of_exact_of_mono _ _ ex
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
inst✝ : Mono f
ex : Exact f g
⊢ let_fun this := ⋯;
  CategoryTheory.inv (kernel.lift g f ⋯) ≫ f = kernel.ι g
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
inst✝ : Mono f
ex : Exact f g
this : IsIso (kernel.lift g f ⋯)
⊢ let_fun this := ⋯;
  CategoryTheory.inv (kernel.lift g f ⋯) ≫ f = kernel.ι g

tactic: simp
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
inst✝ : Mono f
ex : Exact f g
this : IsIso (kernel.lift g f ⋯)
⊢ let_fun this := ⋯;
  CategoryTheory.inv (kernel.lift g f ⋯) ≫ f = kernel.ι g
state_after: no goals
Theorem: tendsto_self_mul_const_pow_of_abs_lt_one
File: Mathlib/Analysis/SpecificLimits/Normed.lean

tactic: simpa only [pow_one] using tendsto_pow_const_mul_const_pow_of_abs_lt_one 1 hr
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
r : ℝ
hr : |r| < 1
⊢ Tendsto (fun n => ↑n * r ^ n) atTop (𝓝 0)
state_after: no goals
Theorem: MeasurableEquiv.comap_symm
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: ext s hs
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
μ : Measure α
ν : Measure β
e : α ≃ᵐ β
⊢ Measure.comap (⇑e.symm) μ = Measure.map (⇑e) μ
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
μ : Measure α
ν : Measure β
e : α ≃ᵐ β
s : Set β
hs : MeasurableSet s
⊢ (Measure.comap (⇑e.symm) μ) s = (Measure.map (⇑e) μ) s

tactic: rw [e.map_apply, Measure.comap_apply _ e.symm.injective _ _ hs, image_symm]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
μ : Measure α
ν : Measure β
e : α ≃ᵐ β
s : Set β
hs : MeasurableSet s
⊢ (Measure.comap (⇑e.symm) μ) s = (Measure.map (⇑e) μ) s
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
μ : Measure α
ν : Measure β
e : α ≃ᵐ β
s : Set β
hs : MeasurableSet s
⊢ ∀ (s : Set β), MeasurableSet s → MeasurableSet (⇑e.symm '' s)

tactic: exact fun t ht ↦ e.symm.measurableSet_image.mpr ht
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
μ : Measure α
ν : Measure β
e : α ≃ᵐ β
s : Set β
hs : MeasurableSet s
⊢ ∀ (s : Set β), MeasurableSet s → MeasurableSet (⇑e.symm '' s)
state_after: no goals
Theorem: StructureGroupoid.mem_maximalAtlas_of_eqOnSource
File: Mathlib/Geometry/Manifold/ChartedSpace.lean

tactic: intro e'' he''
state_before: H : Type u
H' : Type u_1
M : Type u_2
M' : Type u_3
M'' : Type u_4
inst✝² : TopologicalSpace H
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
G : StructureGroupoid H
e e' : PartialHomeomorph M H
h : e' ≈ e
he : e ∈ maximalAtlas M G
⊢ e' ∈ maximalAtlas M G
state_after: H : Type u
H' : Type u_1
M : Type u_2
M' : Type u_3
M'' : Type u_4
inst✝² : TopologicalSpace H
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
G : StructureGroupoid H
e e' : PartialHomeomorph M H
h : e' ≈ e
he : e ∈ maximalAtlas M G
e'' : PartialHomeomorph M H
he'' : e'' ∈ atlas H M
⊢ e'.symm ≫ₕ e'' ∈ G ∧ e''.symm ≫ₕ e' ∈ G

tactic: obtain ⟨l, r⟩ := mem_maximalAtlas_iff.mp he e'' he''
state_before: H : Type u
H' : Type u_1
M : Type u_2
M' : Type u_3
M'' : Type u_4
inst✝² : TopologicalSpace H
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
G : StructureGroupoid H
e e' : PartialHomeomorph M H
h : e' ≈ e
he : e ∈ maximalAtlas M G
e'' : PartialHomeomorph M H
he'' : e'' ∈ atlas H M
⊢ e'.symm ≫ₕ e'' ∈ G ∧ e''.symm ≫ₕ e' ∈ G
state_after: case intro
H : Type u
H' : Type u_1
M : Type u_2
M' : Type u_3
M'' : Type u_4
inst✝² : TopologicalSpace H
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
G : StructureGroupoid H
e e' : PartialHomeomorph M H
h : e' ≈ e
he : e ∈ maximalAtlas M G
e'' : PartialHomeomorph M H
he'' : e'' ∈ atlas H M
l : e.symm ≫ₕ e'' ∈ G
r : e''.symm ≫ₕ e ∈ G
⊢ e'.symm ≫ₕ e'' ∈ G ∧ e''.symm ≫ₕ e' ∈ G

tactic: exact ⟨G.mem_of_eqOnSource l (EqOnSource.trans' (EqOnSource.symm' h) (e''.eqOnSource_refl)),
       G.mem_of_eqOnSource r (EqOnSource.trans' (e''.symm).eqOnSource_refl h)⟩
state_before: case intro
H : Type u
H' : Type u_1
M : Type u_2
M' : Type u_3
M'' : Type u_4
inst✝² : TopologicalSpace H
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
G : StructureGroupoid H
e e' : PartialHomeomorph M H
h : e' ≈ e
he : e ∈ maximalAtlas M G
e'' : PartialHomeomorph M H
he'' : e'' ∈ atlas H M
l : e.symm ≫ₕ e'' ∈ G
r : e''.symm ≫ₕ e ∈ G
⊢ e'.symm ≫ₕ e'' ∈ G ∧ e''.symm ≫ₕ e' ∈ G
state_after: no goals
Theorem: AddMonoidAlgebra.single_pow
File: Mathlib/Algebra/MonoidAlgebra/Basic.lean

tactic: simp only [pow_zero, zero_nsmul]
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝¹ : Semiring k
inst✝ : AddMonoid G
a : G
b : k
⊢ single a b ^ 0 = single (0 • a) (b ^ 0)
state_after: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝¹ : Semiring k
inst✝ : AddMonoid G
a : G
b : k
⊢ 1 = single 0 1

tactic: rfl
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝¹ : Semiring k
inst✝ : AddMonoid G
a : G
b : k
⊢ 1 = single 0 1
state_after: no goals

tactic: rw [pow_succ, pow_succ, single_pow n, single_mul_single, add_nsmul, one_nsmul]
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝¹ : Semiring k
inst✝ : AddMonoid G
a : G
b : k
n : ℕ
⊢ single a b ^ (n + 1) = single ((n + 1) • a) (b ^ (n + 1))
state_after: no goals
Theorem: Irrational.of_int_sub
File: Mathlib/Data/Real/Irrational.lean

tactic: rwa [Rat.cast_intCast]
state_before: q : ℚ
x y : ℝ
m : ℤ
h : Irrational (↑m - x)
⊢ Irrational (↑↑m - x)
state_after: no goals
Theorem: Real.cosh_sq
File: Mathlib/Data/Complex/Exponential.lean

tactic: rw [← ofReal_inj]
state_before: x y : ℝ
⊢ cosh x ^ 2 = sinh x ^ 2 + 1
state_after: x y : ℝ
⊢ ↑(cosh x ^ 2) = ↑(sinh x ^ 2 + 1)

tactic: simp [cosh_sq]
state_before: x y : ℝ
⊢ ↑(cosh x ^ 2) = ↑(sinh x ^ 2 + 1)
state_after: no goals
Theorem: edist_inv_inv
File: Mathlib/Topology/MetricSpace/IsometricSMul.lean

tactic: rw [← edist_mul_left a, ← edist_mul_right _ _ b, mul_right_inv, one_mul, inv_mul_cancel_right,
  edist_comm]
state_before: M : Type u
G : Type v
X : Type w
inst✝⁶ : PseudoEMetricSpace X
inst✝⁵ : Group G
inst✝⁴ : MulAction G X
inst✝³ : IsometricSMul G X
inst✝² : PseudoEMetricSpace G
inst✝¹ : IsometricSMul G G
inst✝ : IsometricSMul Gᵐᵒᵖ G
a b : G
⊢ edist a⁻¹ b⁻¹ = edist a b
state_after: no goals
Theorem: Matrix.SpecialLinearGroup.scalar_eq_self_of_mem_center
File: Mathlib/LinearAlgebra/Matrix/SpecialLinearGroup.lean

tactic: obtain ⟨r : R, hr : scalar n r = A⟩ := mem_range_scalar_of_commute_transvectionStruct fun t ↦
  Subtype.ext_iff.mp <| Subgroup.mem_center_iff.mp hA ⟨t.toMatrix, by simp⟩
state_before: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
R : Type v
inst✝¹ : CommRing R
S : Type u_1
inst✝ : CommRing S
A : SpecialLinearGroup n R
hA : A ∈ center (SpecialLinearGroup n R)
i : n
⊢ (scalar n) (↑A i i) = ↑A
state_after: case intro
n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
R : Type v
inst✝¹ : CommRing R
S : Type u_1
inst✝ : CommRing S
A : SpecialLinearGroup n R
hA : A ∈ center (SpecialLinearGroup n R)
i : n
r : R
hr : (scalar n) r = ↑A
⊢ (scalar n) (↑A i i) = ↑A

tactic: simp [← congr_fun₂ hr i i, ← hr]
state_before: case intro
n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
R : Type v
inst✝¹ : CommRing R
S : Type u_1
inst✝ : CommRing S
A : SpecialLinearGroup n R
hA : A ∈ center (SpecialLinearGroup n R)
i : n
r : R
hr : (scalar n) r = ↑A
⊢ (scalar n) (↑A i i) = ↑A
state_after: no goals

tactic: simp
state_before: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
R : Type v
inst✝¹ : CommRing R
S : Type u_1
inst✝ : CommRing S
A : SpecialLinearGroup n R
hA : A ∈ center (SpecialLinearGroup n R)
i : n
t : TransvectionStruct n R
⊢ t.toMatrix.det = 1
state_after: no goals
Theorem: Nat.size_eq_zero
File: Mathlib/Data/Nat/Size.lean

tactic: simpa [Nat.pos_iff_ne_zero, not_iff_not] using size_pos
state_before: n : ℕ
⊢ n.size = 0 ↔ n = 0
state_after: no goals
Theorem: exists_ne_one_of_finprod_mem_ne_one
File: Mathlib/Algebra/BigOperators/Finprod.lean

tactic: by_contra! h'
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f g : α → M
a b : α
s t : Set α
h : ∏ᶠ (i : α) (_ : i ∈ s), f i ≠ 1
⊢ ∃ x ∈ s, f x ≠ 1
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f g : α → M
a b : α
s t : Set α
h : ∏ᶠ (i : α) (_ : i ∈ s), f i ≠ 1
h' : ∀ x ∈ s, f x = 1
⊢ False

tactic: exact h (finprod_mem_of_eqOn_one h')
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f g : α → M
a b : α
s t : Set α
h : ∏ᶠ (i : α) (_ : i ∈ s), f i ≠ 1
h' : ∀ x ∈ s, f x = 1
⊢ False
state_after: no goals
Theorem: SetTheory.PGame.isOption_neg_neg
File: Mathlib/SetTheory/Game/PGame.lean

tactic: rw [isOption_neg, neg_neg]
state_before: xl xr : Type u
x y : PGame
⊢ (-x).IsOption (-y) ↔ x.IsOption y
state_after: no goals
Theorem: Matrix.stdBasisMatrix_add
File: Mathlib/Data/Matrix/Basis.lean

tactic: unfold stdBasisMatrix
state_before: l : Type u_1
m : Type u_2
n : Type u_3
R : Type u_4
α : Type u_5
inst✝³ : DecidableEq l
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : Semiring α
i : m
j : n
a b : α
⊢ stdBasisMatrix i j (a + b) = stdBasisMatrix i j a + stdBasisMatrix i j b
state_after: l : Type u_1
m : Type u_2
n : Type u_3
R : Type u_4
α : Type u_5
inst✝³ : DecidableEq l
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : Semiring α
i : m
j : n
a b : α
⊢ (fun i' j' => if i = i' ∧ j = j' then a + b else 0) =
    (fun i' j' => if i = i' ∧ j = j' then a else 0) + fun i' j' => if i = i' ∧ j = j' then b else 0

tactic: ext
state_before: l : Type u_1
m : Type u_2
n : Type u_3
R : Type u_4
α : Type u_5
inst✝³ : DecidableEq l
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : Semiring α
i : m
j : n
a b : α
⊢ (fun i' j' => if i = i' ∧ j = j' then a + b else 0) =
    (fun i' j' => if i = i' ∧ j = j' then a else 0) + fun i' j' => if i = i' ∧ j = j' then b else 0
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
R : Type u_4
α : Type u_5
inst✝³ : DecidableEq l
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : Semiring α
i : m
j : n
a b : α
i✝ : m
j✝ : n
⊢ (if i = i✝ ∧ j = j✝ then a + b else 0) =
    ((fun i' j' => if i = i' ∧ j = j' then a else 0) + fun i' j' => if i = i' ∧ j = j' then b else 0) i✝ j✝

tactic: split_ifs with h <;> simp [h]
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
R : Type u_4
α : Type u_5
inst✝³ : DecidableEq l
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : Semiring α
i : m
j : n
a b : α
i✝ : m
j✝ : n
⊢ (if i = i✝ ∧ j = j✝ then a + b else 0) =
    ((fun i' j' => if i = i' ∧ j = j' then a else 0) + fun i' j' => if i = i' ∧ j = j' then b else 0) i✝ j✝
state_after: no goals
Theorem: HasStrictDerivAt.const_sub
File: Mathlib/Analysis/Calculus/Deriv/Add.lean

tactic: simpa only [sub_eq_add_neg] using hf.neg.const_add c
state_before: 𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L : Filter 𝕜
c : F
hf : HasStrictDerivAt f f' x
⊢ HasStrictDerivAt (fun x => c - f x) (-f') x
state_after: no goals
Theorem: SupClosed.preimage
File: Mathlib/Order/SupClosed.lean

tactic: simpa [map_sup] using hs ha hb
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : SemilatticeSup α
inst✝² : SemilatticeSup β
ι : Sort u_4
S : Set (Set α)
f✝ : ι → Set α
s t : Set α
a✝ : α
inst✝¹ : FunLike F β α
inst✝ : SupHomClass F β α
hs : SupClosed s
f : F
a : β
ha : a ∈ ⇑f ⁻¹' s
b : β
hb : b ∈ ⇑f ⁻¹' s
⊢ a ⊔ b ∈ ⇑f ⁻¹' s
state_after: no goals
Theorem: mem_segment_sub_add
File: Mathlib/Analysis/Convex/Segment.lean

tactic: convert @midpoint_mem_segment 𝕜 _ _ _ _ _ (x - y) (x + y)
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝³ : LinearOrderedRing 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
x✝ y✝ : E
inst✝ : Invertible 2
x y : E
⊢ x ∈ [x - y-[𝕜]x + y]
state_after: case h.e'_4
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝³ : LinearOrderedRing 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
x✝ y✝ : E
inst✝ : Invertible 2
x y : E
⊢ x = midpoint 𝕜 (x - y) (x + y)

tactic: rw [midpoint_sub_add]
state_before: case h.e'_4
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝³ : LinearOrderedRing 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
x✝ y✝ : E
inst✝ : Invertible 2
x y : E
⊢ x = midpoint 𝕜 (x - y) (x + y)
state_after: no goals
Theorem: hasSum_zeta_four
File: Mathlib/NumberTheory/ZetaValues.lean

tactic: convert hasSum_zeta_nat two_ne_zero using 1
state_before: ⊢ HasSum (fun n => 1 / ↑n ^ 4) (π ^ 4 / 90)
state_after: case h.e'_6

⊢ π ^ 4 / 90 = (-1) ^ (2 + 1) * 2 ^ (2 * 2 - 1) * π ^ (2 * 2) * ↑(bernoulli (2 * 2)) / ↑(2 * 2)!

tactic: norm_num
state_before: case h.e'_6

⊢ π ^ 4 / 90 = (-1) ^ (2 + 1) * 2 ^ (2 * 2 - 1) * π ^ (2 * 2) * ↑(bernoulli (2 * 2)) / ↑(2 * 2)!
state_after: case h.e'_6

⊢ π ^ 4 / 90 = -(8 * π ^ 4 * ↑(bernoulli 4)) / ↑4!

tactic: rw [bernoulli_eq_bernoulli'_of_ne_one, bernoulli'_four]
state_before: case h.e'_6

⊢ π ^ 4 / 90 = -(8 * π ^ 4 * ↑(bernoulli 4)) / ↑4!
state_after: case h.e'_6

⊢ π ^ 4 / 90 = -(8 * π ^ 4 * ↑(-1 / 30)) / ↑4!

case h.e'_6

⊢ 4 ≠ 1

tactic: norm_num [Nat.factorial]
state_before: case h.e'_6

⊢ π ^ 4 / 90 = -(8 * π ^ 4 * ↑(-1 / 30)) / ↑4!
state_after: case h.e'_6

⊢ π ^ 4 / 90 = 8 * π ^ 4 * (1 / 30) / 24

tactic: field_simp
state_before: case h.e'_6

⊢ π ^ 4 / 90 = 8 * π ^ 4 * (1 / 30) / 24
state_after: case h.e'_6

⊢ π ^ 4 * (30 * 24) = 8 * π ^ 4 * 90

tactic: ring
state_before: case h.e'_6

⊢ π ^ 4 * (30 * 24) = 8 * π ^ 4 * 90
state_after: no goals

tactic: decide
state_before: case h.e'_6

⊢ 4 ≠ 1
state_after: no goals
Theorem: MeasureTheory.AEEqFun.Integrable.smul
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: simpa using ((integrable_mk hfm).1 hfi).smul c
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝⁵ : MeasurableSpace δ
inst✝⁴ : NormedAddCommGroup β
inst✝³ : NormedAddCommGroup γ
𝕜 : Type u_5
inst✝² : NormedRing 𝕜
inst✝¹ : Module 𝕜 β
inst✝ : BoundedSMul 𝕜 β
c : 𝕜
f : α →ₘ[μ] β
_f : α → β
hfm : AEStronglyMeasurable _f μ
hfi : (mk _f hfm).Integrable
⊢ MeasureTheory.Integrable ((fun x => c • x) ∘ ↑⟨_f, hfm⟩) μ
state_after: no goals
Theorem: NormOneClass.nontrivial
File: Mathlib/Analysis/Normed/Field/Basic.lean

tactic: simp
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
α : Type u_5
inst✝² : SeminormedAddCommGroup α
inst✝¹ : One α
inst✝ : NormOneClass α
⊢ ‖0‖ ≠ ‖1‖
state_after: no goals
Theorem: RCLike.abs_re_div_norm_le_one
File: Mathlib/Analysis/RCLike/Basic.lean

tactic: rw [abs_div, abs_norm]
state_before: K : Type u_1
E : Type u_2
inst✝ : RCLike K
z✝ z : K
⊢ |re z / ‖z‖| ≤ 1
state_after: K : Type u_1
E : Type u_2
inst✝ : RCLike K
z✝ z : K
⊢ |re z| / ‖z‖ ≤ 1

tactic: exact div_le_one_of_le (abs_re_le_norm _) (norm_nonneg _)
state_before: K : Type u_1
E : Type u_2
inst✝ : RCLike K
z✝ z : K
⊢ |re z| / ‖z‖ ≤ 1
state_after: no goals