1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CochainComplex.mappingCone.liftCochain_v_fst_v
File: Mathlib/Algebra/Homology/HomotopyCategory/MappingCone.lean

tactic: omega
state_before: C : Type u_1
inst✝² : Category.{?u.178149, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
K : CochainComplex C ℤ
n m : ℤ
α : Cochain K F m
β : Cochain K G n
h : n + 1 = m
p₁ p₂ p₃ : ℤ
h₁₂ : p₁ + n = p₂
h₂₃ : p₂ + 1 = p₃
⊢ p₁ + m = p₃
state_after: no goals

tactic: simpa only [Cochain.comp_v _ _ h p₁ p₂ p₃ h₁₂ h₂₃]
  using Cochain.congr_v (liftCochain_fst φ α β h) p₁ p₃ (by omega)
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
K : CochainComplex C ℤ
n m : ℤ
α : Cochain K F m
β : Cochain K G n
h : n + 1 = m
p₁ p₂ p₃ : ℤ
h₁₂ : p₁ + n = p₂
h₂₃ : p₂ + 1 = p₃
⊢ (liftCochain φ α β h).v p₁ p₂ h₁₂ ≫ (↑(fst φ)).v p₂ p₃ h₂₃ = α.v p₁ p₃ ⋯
state_after: no goals

tactic: omega
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
K : CochainComplex C ℤ
n m : ℤ
α : Cochain K F m
β : Cochain K G n
h : n + 1 = m
p₁ p₂ p₃ : ℤ
h₁₂ : p₁ + n = p₂
h₂₃ : p₂ + 1 = p₃
⊢ p₁ + m = p₃
state_after: no goals
Theorem: QuadraticForm.associated_isSymm
File: Mathlib/LinearAlgebra/QuadraticForm/Basic.lean

tactic: simp only [associated_apply, sub_eq_add_neg, add_assoc, map_mul, RingHom.id_apply, map_add,
  _root_.map_neg, add_comm, add_left_comm]
state_before: S : Type u_1
T : Type u_2
R : Type u_3
M : Type u_4
N : Type u_5
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : CommSemiring S
inst✝¹ : Algebra S R
inst✝ : Invertible 2
B₁ : BilinForm R M
Q : QuadraticForm R M
x y : M
⊢ (RingHom.id R) ((((associatedHom S) Q) x) y) = (((associatedHom S) Q) y) x
state_after: no goals
Theorem: Real.log_prod
File: Mathlib/Analysis/SpecialFunctions/Log/Basic.lean

tactic: induction' s using Finset.cons_induction_on with a s ha ih
state_before: x y : ℝ
α : Type u_1
s : Finset α
f : α → ℝ
hf : ∀ x ∈ s, f x ≠ 0
⊢ log (∏ i ∈ s, f i) = ∑ i ∈ s, log (f i)
state_after: case h₁
x y : ℝ
α : Type u_1
f : α → ℝ
hf : ∀ x ∈ ∅, f x ≠ 0
⊢ log (∏ i ∈ ∅, f i) = ∑ i ∈ ∅, log (f i)

case h₂
x y : ℝ
α : Type u_1
f : α → ℝ
a : α
s : Finset α
ha : a ∉ s
ih : (∀ x ∈ s, f x ≠ 0) → log (∏ i ∈ s, f i) = ∑ i ∈ s, log (f i)
hf : ∀ x ∈ Finset.cons a s ha, f x ≠ 0
⊢ log (∏ i ∈ Finset.cons a s ha, f i) = ∑ i ∈ Finset.cons a s ha, log (f i)

tactic: simp
state_before: case h₁
x y : ℝ
α : Type u_1
f : α → ℝ
hf : ∀ x ∈ ∅, f x ≠ 0
⊢ log (∏ i ∈ ∅, f i) = ∑ i ∈ ∅, log (f i)
state_after: no goals

tactic: rw [Finset.forall_mem_cons] at hf
state_before: case h₂
x y : ℝ
α : Type u_1
f : α → ℝ
a : α
s : Finset α
ha : a ∉ s
ih : (∀ x ∈ s, f x ≠ 0) → log (∏ i ∈ s, f i) = ∑ i ∈ s, log (f i)
hf : ∀ x ∈ Finset.cons a s ha, f x ≠ 0
⊢ log (∏ i ∈ Finset.cons a s ha, f i) = ∑ i ∈ Finset.cons a s ha, log (f i)
state_after: case h₂
x y : ℝ
α : Type u_1
f : α → ℝ
a : α
s : Finset α
ha : a ∉ s
ih : (∀ x ∈ s, f x ≠ 0) → log (∏ i ∈ s, f i) = ∑ i ∈ s, log (f i)
hf : f a ≠ 0 ∧ ∀ x ∈ s, f x ≠ 0
⊢ log (∏ i ∈ Finset.cons a s ha, f i) = ∑ i ∈ Finset.cons a s ha, log (f i)

tactic: simp [ih hf.2, log_mul hf.1 (Finset.prod_ne_zero_iff.2 hf.2)]
state_before: case h₂
x y : ℝ
α : Type u_1
f : α → ℝ
a : α
s : Finset α
ha : a ∉ s
ih : (∀ x ∈ s, f x ≠ 0) → log (∏ i ∈ s, f i) = ∑ i ∈ s, log (f i)
hf : f a ≠ 0 ∧ ∀ x ∈ s, f x ≠ 0
⊢ log (∏ i ∈ Finset.cons a s ha, f i) = ∑ i ∈ Finset.cons a s ha, log (f i)
state_after: no goals
Theorem: EMetric.diam_pos_iff'
File: Mathlib/Topology/EMetricSpace/Basic.lean

tactic: simp only [diam_pos_iff, Set.Nontrivial, exists_prop]
state_before: α : Type u
β : Type v
X : Type u_1
inst✝¹ : PseudoEMetricSpace α
γ : Type w
inst✝ : EMetricSpace γ
s : Set γ
⊢ 0 < diam s ↔ ∃ x ∈ s, ∃ y ∈ s, x ≠ y
state_after: no goals
Theorem: Polynomial.reflect_neg
File: Mathlib/Algebra/Polynomial/Reverse.lean

tactic: rw [neg_eq_neg_one_mul, ← C_1, ← C_neg, reflect_C_mul, C_neg, C_1, ← neg_eq_neg_one_mul]
state_before: R : Type u_1
inst✝ : Ring R
f : R[X]
N : ℕ
⊢ reflect N (-f) = -reflect N f
state_after: no goals
Theorem: Valued.hasBasis_nhds_zero
File: Mathlib/Topology/Algebra/Valuation.lean

tactic: simp [Filter.hasBasis_iff, is_topological_valuation]
state_before: R : Type u
inst✝¹ : Ring R
Γ₀ : Type v
inst✝ : LinearOrderedCommGroupWithZero Γ₀
_i : Valued R Γ₀
⊢ (𝓝 0).HasBasis (fun x => True) fun γ => {x | v x < ↑γ}
state_after: no goals
Theorem: banach_steinhaus_iSup_nnnorm
File: Mathlib/Analysis/NormedSpace/BanachSteinhaus.lean

tactic: rw [show ((⨆ i, ↑‖g i‖₊) < ∞) ↔ _ from (NormedSpace.equicontinuous_TFAE g).out 8 2]
state_before: E : Type u_1
F : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
inst✝⁷ : SeminormedAddCommGroup E
inst✝⁶ : SeminormedAddCommGroup F
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NontriviallyNormedField 𝕜₂
inst✝³ : NormedSpace 𝕜 E
inst✝² : NormedSpace 𝕜₂ F
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝¹ : RingHomIsometric σ₁₂
ι : Type u_5
inst✝ : CompleteSpace E
g : ι → E →SL[σ₁₂] F
h : ∀ (x : E), ⨆ i, ↑‖(g i) x‖₊ < ⊤
⊢ ⨆ i, ↑‖g i‖₊ < ⊤
state_after: E : Type u_1
F : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
inst✝⁷ : SeminormedAddCommGroup E
inst✝⁶ : SeminormedAddCommGroup F
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NontriviallyNormedField 𝕜₂
inst✝³ : NormedSpace 𝕜 E
inst✝² : NormedSpace 𝕜₂ F
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝¹ : RingHomIsometric σ₁₂
ι : Type u_5
inst✝ : CompleteSpace E
g : ι → E →SL[σ₁₂] F
h : ∀ (x : E), ⨆ i, ↑‖(g i) x‖₊ < ⊤
⊢ UniformEquicontinuous (DFunLike.coe ∘ g)

tactic: refine (norm_withSeminorms 𝕜₂ F).banach_steinhaus (fun _ x ↦ ?_)
state_before: E : Type u_1
F : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
inst✝⁷ : SeminormedAddCommGroup E
inst✝⁶ : SeminormedAddCommGroup F
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NontriviallyNormedField 𝕜₂
inst✝³ : NormedSpace 𝕜 E
inst✝² : NormedSpace 𝕜₂ F
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝¹ : RingHomIsometric σ₁₂
ι : Type u_5
inst✝ : CompleteSpace E
g : ι → E →SL[σ₁₂] F
h : ∀ (x : E), ⨆ i, ↑‖(g i) x‖₊ < ⊤
⊢ UniformEquicontinuous (DFunLike.coe ∘ g)
state_after: E : Type u_1
F : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
inst✝⁷ : SeminormedAddCommGroup E
inst✝⁶ : SeminormedAddCommGroup F
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NontriviallyNormedField 𝕜₂
inst✝³ : NormedSpace 𝕜 E
inst✝² : NormedSpace 𝕜₂ F
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝¹ : RingHomIsometric σ₁₂
ι : Type u_5
inst✝ : CompleteSpace E
g : ι → E →SL[σ₁₂] F
h : ∀ (x : E), ⨆ i, ↑‖(g i) x‖₊ < ⊤
x✝ : Fin 1
x : E
⊢ BddAbove (range fun i => (normSeminorm 𝕜₂ F) ((g i) x))

tactic: simpa [← NNReal.bddAbove_coe, ← Set.range_comp] using ENNReal.iSup_coe_lt_top.1 (h x)
state_before: E : Type u_1
F : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
inst✝⁷ : SeminormedAddCommGroup E
inst✝⁶ : SeminormedAddCommGroup F
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NontriviallyNormedField 𝕜₂
inst✝³ : NormedSpace 𝕜 E
inst✝² : NormedSpace 𝕜₂ F
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝¹ : RingHomIsometric σ₁₂
ι : Type u_5
inst✝ : CompleteSpace E
g : ι → E →SL[σ₁₂] F
h : ∀ (x : E), ⨆ i, ↑‖(g i) x‖₊ < ⊤
x✝ : Fin 1
x : E
⊢ BddAbove (range fun i => (normSeminorm 𝕜₂ F) ((g i) x))
state_after: no goals
Theorem: Batteries.RBNode.Balanced.le_size
File: .lake/packages/batteries/Batteries/Data/RBMap/Depth.lean

tactic: rw [size, Nat.add_right_comm (size _), Nat.add_assoc, depthLB, Nat.pow_succ, Nat.mul_two]
state_before: α : Type u_1
t : RBNode α
c : RBColor
n✝ n : Nat
x✝ y✝ : RBNode α
v✝ : α
hl : x✝.Balanced black n
hr : y✝.Balanced black n
⊢ 2 ^ depthLB red n ≤ (node red x✝ v✝ y✝).size + 1
state_after: α : Type u_1
t : RBNode α
c : RBColor
n✝ n : Nat
x✝ y✝ : RBNode α
v✝ : α
hl : x✝.Balanced black n
hr : y✝.Balanced black n
⊢ 2 ^ n + 2 ^ n ≤ x✝.size + 1 + (y✝.size + 1)

tactic: exact Nat.add_le_add hl.le_size hr.le_size
state_before: α : Type u_1
t : RBNode α
c : RBColor
n✝ n : Nat
x✝ y✝ : RBNode α
v✝ : α
hl : x✝.Balanced black n
hr : y✝.Balanced black n
⊢ 2 ^ n + 2 ^ n ≤ x✝.size + 1 + (y✝.size + 1)
state_after: no goals

tactic: rw [size, Nat.add_right_comm (size _), Nat.add_assoc, depthLB, Nat.pow_succ, Nat.mul_two]
state_before: α : Type u_1
t : RBNode α
c : RBColor
n : Nat
x✝ : RBNode α
c₁✝ : RBColor
n✝ : Nat
y✝ : RBNode α
c₂✝ : RBColor
v✝ : α
hl : x✝.Balanced c₁✝ n✝
hr : y✝.Balanced c₂✝ n✝
⊢ 2 ^ depthLB black (n✝ + 1) ≤ (node black x✝ v✝ y✝).size + 1
state_after: α : Type u_1
t : RBNode α
c : RBColor
n : Nat
x✝ : RBNode α
c₁✝ : RBColor
n✝ : Nat
y✝ : RBNode α
c₂✝ : RBColor
v✝ : α
hl : x✝.Balanced c₁✝ n✝
hr : y✝.Balanced c₂✝ n✝
⊢ 2 ^ n✝ + 2 ^ n✝ ≤ x✝.size + 1 + (y✝.size + 1)

tactic: refine Nat.add_le_add (Nat.le_trans ?_ hl.le_size) (Nat.le_trans ?_ hr.le_size) <;>
  exact Nat.pow_le_pow_of_le_right (by decide) (depthLB_le ..)
state_before: α : Type u_1
t : RBNode α
c : RBColor
n : Nat
x✝ : RBNode α
c₁✝ : RBColor
n✝ : Nat
y✝ : RBNode α
c₂✝ : RBColor
v✝ : α
hl : x✝.Balanced c₁✝ n✝
hr : y✝.Balanced c₂✝ n✝
⊢ 2 ^ n✝ + 2 ^ n✝ ≤ x✝.size + 1 + (y✝.size + 1)
state_after: no goals

tactic: decide
state_before: α : Type u_1
t : RBNode α
c : RBColor
n : Nat
x✝ : RBNode α
c₁✝ : RBColor
n✝ : Nat
y✝ : RBNode α
c₂✝ : RBColor
v✝ : α
hl : x✝.Balanced c₁✝ n✝
hr : y✝.Balanced c₂✝ n✝
⊢ 2 > 0
state_after: no goals
Theorem: Finsupp.comp_liftAddHom
File: Mathlib/Algebra/BigOperators/Finsupp.lean

tactic: rw [liftAddHom_symm_apply, AddMonoidHom.comp_assoc, liftAddHom_comp_single]
state_before: α : Type u_1
ι : Type u_2
γ : Type u_3
A : Type u_4
B : Type u_5
C : Type u_6
inst✝⁵ : AddCommMonoid A
inst✝⁴ : AddCommMonoid B
inst✝³ : AddCommMonoid C
t : ι → A → C
h0 : ∀ (i : ι), t i 0 = 0
h1 : ∀ (i : ι) (x y : A), t i (x + y) = t i x + t i y
s : Finset α
f✝ : α → ι →₀ A
i : ι
g✝ : ι →₀ A
k : ι → A → γ → B
x : γ
β : Type u_7
M : Type u_8
M' : Type u_9
N : Type u_10
P : Type u_11
G : Type u_12
H : Type u_13
R : Type u_14
S : Type u_15
inst✝² : AddCommMonoid M
inst✝¹ : AddCommMonoid N
inst✝ : AddCommMonoid P
g : N →+ P
f : α → M →+ N
a : α
⊢ liftAddHom.symm (g.comp (liftAddHom f)) a = g.comp (f a)
state_after: no goals
Theorem: BoxIntegral.BoxAdditiveMap.volume_apply
File: Mathlib/Analysis/BoxIntegral/Partition/Measure.lean

tactic: rw [BoxAdditiveMap.volume, toSMul_apply]
state_before: ι : Type u_1
inst✝² : Fintype ι
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
I : Box ι
x : E
⊢ (BoxAdditiveMap.volume I) x = (∏ j : ι, (I.upper j - I.lower j)) • x
state_after: ι : Type u_1
inst✝² : Fintype ι
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
I : Box ι
x : E
⊢ volume.toBoxAdditive I • x = (∏ j : ι, (I.upper j - I.lower j)) • x
Theorem: VectorFourier.iteratedFDeriv_fourierIntegral
File: Mathlib/Analysis/Fourier/FourierTransformDeriv.lean

tactic: ext w : 1
state_before: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℂ E
V : Type u_2
W : Type u_3
inst✝⁶ : NormedAddCommGroup V
inst✝⁵ : NormedSpace ℝ V
inst✝⁴ : NormedAddCommGroup W
inst✝³ : NormedSpace ℝ W
L : V →L[ℝ] W →L[ℝ] ℝ
f : V → E
inst✝² : SecondCountableTopology V
inst✝¹ : MeasurableSpace V
inst✝ : BorelSpace V
μ : Measure V
N : ℕ∞
hf : ∀ (n : ℕ), ↑n ≤ N → Integrable (fun v => ‖v‖ ^ n * ‖f v‖) μ
h'f : AEStronglyMeasurable f μ
n : ℕ
hn : ↑n ≤ N
⊢ iteratedFDeriv ℝ n (fourierIntegral 𝐞 μ L.toLinearMap₂ f) =
    fourierIntegral 𝐞 μ L.toLinearMap₂ fun v => fourierPowSMulRight L f v n
state_after: case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℂ E
V : Type u_2
W : Type u_3
inst✝⁶ : NormedAddCommGroup V
inst✝⁵ : NormedSpace ℝ V
inst✝⁴ : NormedAddCommGroup W
inst✝³ : NormedSpace ℝ W
L : V →L[ℝ] W →L[ℝ] ℝ
f : V → E
inst✝² : SecondCountableTopology V
inst✝¹ : MeasurableSpace V
inst✝ : BorelSpace V
μ : Measure V
N : ℕ∞
hf : ∀ (n : ℕ), ↑n ≤ N → Integrable (fun v => ‖v‖ ^ n * ‖f v‖) μ
h'f : AEStronglyMeasurable f μ
n : ℕ
hn : ↑n ≤ N
w : W
⊢ iteratedFDeriv ℝ n (fourierIntegral 𝐞 μ L.toLinearMap₂ f) w =
    fourierIntegral 𝐞 μ L.toLinearMap₂ (fun v => fourierPowSMulRight L f v n) w

tactic: exact ((hasFTaylorSeriesUpTo_fourierIntegral L hf h'f).eq_iteratedFDeriv hn w).symm
state_before: case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℂ E
V : Type u_2
W : Type u_3
inst✝⁶ : NormedAddCommGroup V
inst✝⁵ : NormedSpace ℝ V
inst✝⁴ : NormedAddCommGroup W
inst✝³ : NormedSpace ℝ W
L : V →L[ℝ] W →L[ℝ] ℝ
f : V → E
inst✝² : SecondCountableTopology V
inst✝¹ : MeasurableSpace V
inst✝ : BorelSpace V
μ : Measure V
N : ℕ∞
hf : ∀ (n : ℕ), ↑n ≤ N → Integrable (fun v => ‖v‖ ^ n * ‖f v‖) μ
h'f : AEStronglyMeasurable f μ
n : ℕ
hn : ↑n ≤ N
w : W
⊢ iteratedFDeriv ℝ n (fourierIntegral 𝐞 μ L.toLinearMap₂ f) w =
    fourierIntegral 𝐞 μ L.toLinearMap₂ (fun v => fourierPowSMulRight L f v n) w
state_after: no goals
Theorem: TrivSqZeroExt.inv_inr
File: Mathlib/Algebra/TrivSqZeroExt.lean

tactic: ext
state_before: R : Type u
M : Type v
inst✝⁴ : DivisionSemiring R
inst✝³ : AddCommGroup M
inst✝² : Module Rᵐᵒᵖ M
inst✝¹ : Module R M
inst✝ : SMulCommClass R Rᵐᵒᵖ M
m : M
⊢ (inr m)⁻¹ = 0
state_after: case h1
R : Type u
M : Type v
inst✝⁴ : DivisionSemiring R
inst✝³ : AddCommGroup M
inst✝² : Module Rᵐᵒᵖ M
inst✝¹ : Module R M
inst✝ : SMulCommClass R Rᵐᵒᵖ M
m : M
⊢ (inr m)⁻¹.fst = fst 0

case h2
R : Type u
M : Type v
inst✝⁴ : DivisionSemiring R
inst✝³ : AddCommGroup M
inst✝² : Module Rᵐᵒᵖ M
inst✝¹ : Module R M
inst✝ : SMulCommClass R Rᵐᵒᵖ M
m : M
⊢ (inr m)⁻¹.snd = snd 0

tactic: rw [fst_inv, fst_inr, fst_zero, inv_zero]
state_before: case h1
R : Type u
M : Type v
inst✝⁴ : DivisionSemiring R
inst✝³ : AddCommGroup M
inst✝² : Module Rᵐᵒᵖ M
inst✝¹ : Module R M
inst✝ : SMulCommClass R Rᵐᵒᵖ M
m : M
⊢ (inr m)⁻¹.fst = fst 0
state_after: no goals

tactic: rw [snd_inv, snd_inr, fst_inr, inv_zero, op_zero, zero_smul, snd_zero, neg_zero]
state_before: case h2
R : Type u
M : Type v
inst✝⁴ : DivisionSemiring R
inst✝³ : AddCommGroup M
inst✝² : Module Rᵐᵒᵖ M
inst✝¹ : Module R M
inst✝ : SMulCommClass R Rᵐᵒᵖ M
m : M
⊢ (inr m)⁻¹.snd = snd 0
state_after: no goals
Theorem: Real.toNNReal_div
File: Mathlib/Data/NNReal/Basic.lean

tactic: rw [div_eq_mul_inv, div_eq_mul_inv, ← Real.toNNReal_inv, ← Real.toNNReal_mul hx]
state_before: x y : ℝ
hx : 0 ≤ x
⊢ (x / y).toNNReal = x.toNNReal / y.toNNReal
state_after: no goals
Theorem: Multiset.Nodup.toFinset_inj
File: Mathlib/Data/Finset/Basic.lean

tactic: simpa [← toFinset_eq hl, ← toFinset_eq hl'] using h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s t l l' : Multiset α
hl : l.Nodup
hl' : l'.Nodup
h : l.toFinset = l'.toFinset
⊢ l = l'
state_after: no goals
Theorem: Finset.prod_Ioc_succ_top
File: Mathlib/Algebra/BigOperators/Intervals.lean

tactic: rw [← prod_Ioc_consecutive _ hab (Nat.le_succ b), Nat.Ioc_succ_singleton, prod_singleton]
state_before: α : Type u_1
M : Type u_2
inst✝ : CommMonoid M
s₂ s₁ s : Finset α
a✝ : α
g f✝ : α → M
a b : ℕ
hab : a ≤ b
f : ℕ → M
⊢ ∏ k ∈ Ioc a (b + 1), f k = (∏ k ∈ Ioc a b, f k) * f (b + 1)
state_after: no goals
Theorem: AlgebraicGeometry.LocallyRingedSpace.IsOpenImmersion.lift_fac
File: Mathlib/Geometry/RingedSpace/OpenImmersion.lean

tactic: erw [Category.assoc]
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y Z : LocallyRingedSpace
f : X ⟶ Z
g : Y ⟶ Z
H : IsOpenImmersion f
H' : Set.range ⇑g.val.base ⊆ Set.range ⇑f.val.base
⊢ lift f g H' ≫ f = g
state_after: C : Type u
inst✝ : Category.{v, u} C
X Y Z : LocallyRingedSpace
f : X ⟶ Z
g : Y ⟶ Z
H : IsOpenImmersion f
H' : Set.range ⇑g.val.base ⊆ Set.range ⇑f.val.base
⊢ inv pullback.snd ≫ pullback.fst ≫ f = g

tactic: rw [IsIso.inv_comp_eq]
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y Z : LocallyRingedSpace
f : X ⟶ Z
g : Y ⟶ Z
H : IsOpenImmersion f
H' : Set.range ⇑g.val.base ⊆ Set.range ⇑f.val.base
⊢ inv pullback.snd ≫ pullback.fst ≫ f = g
state_after: C : Type u
inst✝ : Category.{v, u} C
X Y Z : LocallyRingedSpace
f : X ⟶ Z
g : Y ⟶ Z
H : IsOpenImmersion f
H' : Set.range ⇑g.val.base ⊆ Set.range ⇑f.val.base
⊢ pullback.fst ≫ f = pullback.snd ≫ g

tactic: exact pullback.condition
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y Z : LocallyRingedSpace
f : X ⟶ Z
g : Y ⟶ Z
H : IsOpenImmersion f
H' : Set.range ⇑g.val.base ⊆ Set.range ⇑f.val.base
⊢ pullback.fst ≫ f = pullback.snd ≫ g
state_after: no goals
Theorem: String.length_eq_list_length
File: Mathlib/Data/String/Lemmas.lean

tactic: simp only [String.length]
state_before: l : List Char
⊢ { data := l }.length = l.length
state_after: no goals
Theorem: Matrix.dotProduct_diagonal
File: Mathlib/Data/Matrix/Basic.lean

tactic: have : ∀ j ≠ i, v j * diagonal w i j = 0 := fun j hij => by
  simp [diagonal_apply_ne' _ hij]
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✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq m
inst✝ : NonUnitalNonAssocSemiring α
u v w : m → α
i : m
⊢ v ⬝ᵥ diagonal w i = v i * w i
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✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq m
inst✝ : NonUnitalNonAssocSemiring α
u v w : m → α
i : m
this : ∀ (j : m), j ≠ i → v j * diagonal w i j = 0
⊢ v ⬝ᵥ diagonal w i = v i * w i

tactic: convert Finset.sum_eq_single i (fun j _ => this j) _ using 1 <;> simp
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✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq m
inst✝ : NonUnitalNonAssocSemiring α
u v w : m → α
i : m
this : ∀ (j : m), j ≠ i → v j * diagonal w i j = 0
⊢ v ⬝ᵥ diagonal w i = v i * w i
state_after: no goals

tactic: simp [diagonal_apply_ne' _ hij]
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✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq m
inst✝ : NonUnitalNonAssocSemiring α
u v w : m → α
i j : m
hij : j ≠ i
⊢ v j * diagonal w i j = 0
state_after: no goals
Theorem: MeasureTheory.Measure.haar.haarContent_self
File: Mathlib/MeasureTheory/Measure/Haar/Basic.lean

tactic: simp_rw [← ENNReal.coe_one, haarContent_apply, ENNReal.coe_inj, chaar_self]
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
⊢ (fun s => ↑((haarContent K₀).toFun s)) K₀.toCompacts = 1
state_after: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
⊢ ⟨1, ⋯⟩ = 1

tactic: rfl
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
⊢ ⟨1, ⋯⟩ = 1
state_after: no goals
Theorem: Linarith.eq_of_eq_of_eq
File: Mathlib/Tactic/Linarith/Lemmas.lean

tactic: simp [*]
state_before: α : Type u_1
inst✝ : OrderedSemiring α
a b : α
ha : a = 0
hb : b = 0
⊢ a + b = 0
state_after: no goals
Theorem: Polynomial.natSepDegree_C_mul_X_sub_C_pow
File: Mathlib/FieldTheory/SeparableDegree.lean

tactic: simp only [natSepDegree_C_mul _ hx, natSepDegree_X_sub_C_pow]
state_before: F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
f : F[X]
x y : F
n : ℕ
hx : x ≠ 0
⊢ (C x * (X - C y) ^ n).natSepDegree = if n = 0 then 0 else 1
state_after: no goals
Theorem: Ring.inverse_eq_inv
File: Mathlib/Algebra/GroupWithZero/Units/Basic.lean

tactic: obtain rfl | ha := eq_or_ne a 0
state_before: α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝¹ : MonoidWithZero M₀
inst✝ : GroupWithZero G₀
a✝ b c d : G₀
m n : ℕ
a : G₀
⊢ inverse a = a⁻¹
state_after: case inl
α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝¹ : MonoidWithZero M₀
inst✝ : GroupWithZero G₀
a b c d : G₀
m n : ℕ
⊢ inverse 0 = 0⁻¹

case inr
α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝¹ : MonoidWithZero M₀
inst✝ : GroupWithZero G₀
a✝ b c d : G₀
m n : ℕ
a : G₀
ha : a ≠ 0
⊢ inverse a = a⁻¹

tactic: simp
state_before: case inl
α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝¹ : MonoidWithZero M₀
inst✝ : GroupWithZero G₀
a b c d : G₀
m n : ℕ
⊢ inverse 0 = 0⁻¹
state_after: no goals

tactic: exact Ring.inverse_unit (Units.mk0 a ha)
state_before: case inr
α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝¹ : MonoidWithZero M₀
inst✝ : GroupWithZero G₀
a✝ b c d : G₀
m n : ℕ
a : G₀
ha : a ≠ 0
⊢ inverse a = a⁻¹
state_after: no goals
Theorem: exists_associated_pow_of_mul_eq_pow'
File: Mathlib/RingTheory/PrincipalIdealDomain.lean

tactic: classical
letI := IsBezout.toGCDDomain R
exact exists_associated_pow_of_mul_eq_pow ((gcd_isUnit_iff _ _).mpr hab) h
state_before: R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : IsBezout R
a b c : R
hab : IsCoprime a b
k : ℕ
h : a * b = c ^ k
⊢ ∃ d, Associated (d ^ k) a
state_after: no goals

tactic: letI := IsBezout.toGCDDomain R
state_before: R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : IsBezout R
a b c : R
hab : IsCoprime a b
k : ℕ
h : a * b = c ^ k
⊢ ∃ d, Associated (d ^ k) a
state_after: R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : IsBezout R
a b c : R
hab : IsCoprime a b
k : ℕ
h : a * b = c ^ k
this : GCDMonoid R := IsBezout.toGCDDomain R
⊢ ∃ d, Associated (d ^ k) a

tactic: exact exists_associated_pow_of_mul_eq_pow ((gcd_isUnit_iff _ _).mpr hab) h
state_before: R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : IsBezout R
a b c : R
hab : IsCoprime a b
k : ℕ
h : a * b = c ^ k
this : GCDMonoid R := IsBezout.toGCDDomain R
⊢ ∃ d, Associated (d ^ k) a
state_after: no goals