1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Basis.toDual_total_left
File: Mathlib/LinearAlgebra/Dual.lean

tactic: rw [Finsupp.total_apply, Finsupp.sum, _root_.map_sum, LinearMap.sum_apply]
state_before: R : Type uR
M : Type uM
K : Type uK
V : Type uV
ι : Type uι
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
inst✝ : DecidableEq ι
b : Basis ι R M
f : ι →₀ R
i : ι
⊢ (b.toDual ((Finsupp.total ι M R ⇑b) f)) (b i) = f i
state_after: R : Type uR
M : Type uM
K : Type uK
V : Type uV
ι : Type uι
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
inst✝ : DecidableEq ι
b : Basis ι R M
f : ι →₀ R
i : ι
⊢ ∑ d ∈ f.support, (b.toDual (f d • b d)) (b i) = f i

tactic: simp_rw [LinearMap.map_smul, LinearMap.smul_apply, toDual_apply, smul_eq_mul, mul_boole,
  Finset.sum_ite_eq']
state_before: R : Type uR
M : Type uM
K : Type uK
V : Type uV
ι : Type uι
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
inst✝ : DecidableEq ι
b : Basis ι R M
f : ι →₀ R
i : ι
⊢ ∑ d ∈ f.support, (b.toDual (f d • b d)) (b i) = f i
state_after: R : Type uR
M : Type uM
K : Type uK
V : Type uV
ι : Type uι
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
inst✝ : DecidableEq ι
b : Basis ι R M
f : ι →₀ R
i : ι
⊢ (if i ∈ f.support then f i else 0) = f i

tactic: split_ifs with h
state_before: R : Type uR
M : Type uM
K : Type uK
V : Type uV
ι : Type uι
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
inst✝ : DecidableEq ι
b : Basis ι R M
f : ι →₀ R
i : ι
⊢ (if i ∈ f.support then f i else 0) = f i
state_after: case pos
R : Type uR
M : Type uM
K : Type uK
V : Type uV
ι : Type uι
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
inst✝ : DecidableEq ι
b : Basis ι R M
f : ι →₀ R
i : ι
h : i ∈ f.support
⊢ f i = f i

case neg
R : Type uR
M : Type uM
K : Type uK
V : Type uV
ι : Type uι
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
inst✝ : DecidableEq ι
b : Basis ι R M
f : ι →₀ R
i : ι
h : i ∉ f.support
⊢ 0 = f i

tactic: rfl
state_before: case pos
R : Type uR
M : Type uM
K : Type uK
V : Type uV
ι : Type uι
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
inst✝ : DecidableEq ι
b : Basis ι R M
f : ι →₀ R
i : ι
h : i ∈ f.support
⊢ f i = f i
state_after: no goals

tactic: rw [Finsupp.not_mem_support_iff.mp h]
state_before: case neg
R : Type uR
M : Type uM
K : Type uK
V : Type uV
ι : Type uι
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
inst✝ : DecidableEq ι
b : Basis ι R M
f : ι →₀ R
i : ι
h : i ∉ f.support
⊢ 0 = f i
state_after: no goals
Theorem: Complex.cos_two_pi
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: simp [two_mul, cos_add]
state_before: ⊢ cos (2 * ↑π) = 1
state_after: no goals
Theorem: Complex.IsExpCmpFilter.isLittleO_zpow_mul_exp
File: Mathlib/Analysis/SpecialFunctions/CompareExp.lean

tactic: simpa only [cpow_intCast] using hl.isLittleO_cpow_mul_exp hb m n
state_before: l : Filter ℂ
b₁ b₂ : ℝ
hl : IsExpCmpFilter l
hb : b₁ < b₂
m n : ℤ
⊢ (fun z => z ^ m * cexp (↑b₁ * z)) =o[l] fun z => z ^ n * cexp (↑b₂ * z)
state_after: no goals
Theorem: BoxIntegral.Box.splitUpper_def
File: Mathlib/Analysis/BoxIntegral/Partition/Split.lean

tactic: simp (config := { unfoldPartialApp := true }) only [splitUpper, mk'_eq_coe, max_eq_left h.1.le,
  update, and_self]
state_before: ι : Type u_1
M : Type u_2
n : ℕ
I : Box ι
i✝ : ι
x✝ : ℝ
y : ι → ℝ
inst✝ : DecidableEq ι
i : ι
x : ℝ
h : x ∈ Ioo (I.lower i) (I.upper i)
h' : optParam (∀ (j : ι), update I.lower i x j < I.upper j) ⋯
⊢ I.splitUpper i x = ↑{ lower := update I.lower i x, upper := I.upper, lower_lt_upper := h' }
state_after: no goals
Theorem: Nat.four_pow_le_two_mul_self_mul_centralBinom
File: Mathlib/Data/Nat/Choose/Central.lean

tactic: norm_num [centralBinom, choose]
state_before: x✝ : 0 < 1
⊢ 4 ^ 1 ≤ 2 * 1 * centralBinom 1
state_after: no goals

tactic: norm_num [centralBinom, choose]
state_before: x✝ : 0 < 2
⊢ 4 ^ 2 ≤ 2 * 2 * centralBinom 2
state_after: no goals

tactic: norm_num [centralBinom, choose]
state_before: x✝ : 0 < 3
⊢ 4 ^ 3 ≤ 2 * 3 * centralBinom 3
state_after: no goals

tactic: rw [mul_assoc]
state_before: n : ℕ
x✝ : 0 < n + 4
⊢ (n + 4) * (n + 4).centralBinom ≤ 2 * (n + 4) * (n + 4).centralBinom
state_after: n : ℕ
x✝ : 0 < n + 4
⊢ (n + 4) * (n + 4).centralBinom ≤ 2 * ((n + 4) * (n + 4).centralBinom)

tactic: refine Nat.le_mul_of_pos_left _ zero_lt_two
state_before: n : ℕ
x✝ : 0 < n + 4
⊢ (n + 4) * (n + 4).centralBinom ≤ 2 * ((n + 4) * (n + 4).centralBinom)
state_after: no goals
Theorem: Nat.mul_mod_mod
File: Mathlib/Data/Nat/Defs.lean

tactic: rw [mul_mod, mod_mod, ← mul_mod]
state_before: a✝ b✝ c✝ d m n k : ℕ
p q : ℕ → Prop
a b c : ℕ
⊢ a * (b % c) % c = a * b % c
state_after: no goals
Theorem: single_mem_stdSimplex
File: Mathlib/Analysis/Convex/Basic.lean

tactic: simp
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
ι : Type u_5
inst✝² : OrderedSemiring 𝕜
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
i : ι
⊢ ∑ x : ι, Pi.single i 1 x = 1
state_after: no goals
Theorem: NormedSpace.image_isVonNBounded_iff
File: Mathlib/Analysis/LocallyConvex/Bounded.lean

tactic: simp_rw [isVonNBounded_iff', Set.forall_mem_image]
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
α : Type u_7
f : α → E
s : Set α
⊢ Bornology.IsVonNBounded 𝕜 (f '' s) ↔ ∃ r, ∀ x ∈ s, ‖f x‖ ≤ r
state_after: no goals
Theorem: Rat.le_def
File: Mathlib/Algebra/Order/Ring/Rat.lean

tactic: rw [← num_divInt_den q, ← num_divInt_den p]
state_before: a b c p q : ℚ
⊢ p ≤ q ↔ p.num * ↑q.den ≤ q.num * ↑p.den
state_after: a b c p q : ℚ
⊢ p.num /. ↑p.den ≤ q.num /. ↑q.den ↔
    (p.num /. ↑p.den).num * ↑(q.num /. ↑q.den).den ≤ (q.num /. ↑q.den).num * ↑(p.num /. ↑p.den).den

tactic: conv_rhs => simp only [num_divInt_den]
state_before: a b c p q : ℚ
⊢ p.num /. ↑p.den ≤ q.num /. ↑q.den ↔
    (p.num /. ↑p.den).num * ↑(q.num /. ↑q.den).den ≤ (q.num /. ↑q.den).num * ↑(p.num /. ↑p.den).den
state_after: a b c p q : ℚ
⊢ p.num /. ↑p.den ≤ q.num /. ↑q.den ↔ p.num * ↑q.den ≤ q.num * ↑p.den

tactic: exact Rat.divInt_le_divInt (mod_cast p.pos) (mod_cast q.pos)
state_before: a b c p q : ℚ
⊢ p.num /. ↑p.den ≤ q.num /. ↑q.den ↔ p.num * ↑q.den ≤ q.num * ↑p.den
state_after: no goals
Theorem: MeasureTheory.lintegral_rnDeriv_mul
File: Mathlib/MeasureTheory/Decomposition/RadonNikodym.lean

tactic: nth_rw 2 [← withDensity_rnDeriv_eq μ ν hμν]
state_before: α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
α : Type u_3
m : MeasurableSpace α
μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
hμν : μ ≪ ν
f : α → ℝ≥0∞
hf : AEMeasurable f ν
⊢ ∫⁻ (x : α), μ.rnDeriv ν x * f x ∂ν = ∫⁻ (x : α), f x ∂μ
state_after: α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
α : Type u_3
m : MeasurableSpace α
μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
hμν : μ ≪ ν
f : α → ℝ≥0∞
hf : AEMeasurable f ν
⊢ ∫⁻ (x : α), μ.rnDeriv ν x * f x ∂ν = ∫⁻ (x : α), f x ∂ν.withDensity (μ.rnDeriv ν)

tactic: rw [lintegral_withDensity_eq_lintegral_mul₀ (measurable_rnDeriv μ ν).aemeasurable hf]
state_before: α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
α : Type u_3
m : MeasurableSpace α
μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
hμν : μ ≪ ν
f : α → ℝ≥0∞
hf : AEMeasurable f ν
⊢ ∫⁻ (x : α), μ.rnDeriv ν x * f x ∂ν = ∫⁻ (x : α), f x ∂ν.withDensity (μ.rnDeriv ν)
state_after: α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
α : Type u_3
m : MeasurableSpace α
μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
hμν : μ ≪ ν
f : α → ℝ≥0∞
hf : AEMeasurable f ν
⊢ ∫⁻ (x : α), μ.rnDeriv ν x * f x ∂ν = ∫⁻ (a : α), (μ.rnDeriv ν * f) a ∂ν

tactic: rfl
state_before: α✝ : Type u_1
β : Type u_2
m✝ : MeasurableSpace α✝
α : Type u_3
m : MeasurableSpace α
μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
hμν : μ ≪ ν
f : α → ℝ≥0∞
hf : AEMeasurable f ν
⊢ ∫⁻ (x : α), μ.rnDeriv ν x * f x ∂ν = ∫⁻ (a : α), (μ.rnDeriv ν * f) a ∂ν
state_after: no goals
Theorem: IsCyclotomicExtension.Rat.Three.lambda_pow_four_dvd_cube_add_one_of_dvd_add_one
File: Mathlib/NumberTheory/Cyclotomic/Three.lean

tactic: replace h : λ ∣ -x - 1 := by
  convert h.neg_right using 1
  exact (neg_add' x 1).symm
state_before: K : Type u_1
inst✝² : Field K
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
u : (𝓞 K)ˣ
x✝ x : 𝓞 K
h : λ ∣ x + 1
⊢ λ ^ 4 ∣ x ^ 3 + 1
state_after: K : Type u_1
inst✝² : Field K
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
u : (𝓞 K)ˣ
x✝ x : 𝓞 K
h : λ ∣ -x - 1
⊢ λ ^ 4 ∣ x ^ 3 + 1

tactic: convert (lambda_pow_four_dvd_cube_sub_one_of_dvd_sub_one hζ h).neg_right using 1
state_before: K : Type u_1
inst✝² : Field K
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
u : (𝓞 K)ˣ
x✝ x : 𝓞 K
h : λ ∣ -x - 1
⊢ λ ^ 4 ∣ x ^ 3 + 1
state_after: case h.e'_4
K : Type u_1
inst✝² : Field K
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
u : (𝓞 K)ˣ
x✝ x : 𝓞 K
h : λ ∣ -x - 1
⊢ x ^ 3 + 1 = -((-x) ^ 3 - 1)

tactic: ring
state_before: case h.e'_4
K : Type u_1
inst✝² : Field K
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
u : (𝓞 K)ˣ
x✝ x : 𝓞 K
h : λ ∣ -x - 1
⊢ x ^ 3 + 1 = -((-x) ^ 3 - 1)
state_after: no goals

tactic: convert h.neg_right using 1
state_before: K : Type u_1
inst✝² : Field K
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
u : (𝓞 K)ˣ
x✝ x : 𝓞 K
h : λ ∣ x + 1
⊢ λ ∣ -x - 1
state_after: case h.e'_4
K : Type u_1
inst✝² : Field K
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
u : (𝓞 K)ˣ
x✝ x : 𝓞 K
h : λ ∣ x + 1
⊢ -x - 1 = -(x + 1)

tactic: exact (neg_add' x 1).symm
state_before: case h.e'_4
K : Type u_1
inst✝² : Field K
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
u : (𝓞 K)ˣ
x✝ x : 𝓞 K
h : λ ∣ x + 1
⊢ -x - 1 = -(x + 1)
state_after: no goals
Theorem: Zsqrtd.mul_nonneg
File: Mathlib/NumberTheory/Zsqrtd/Basic.lean

tactic: simp_rw [← nonneg_iff_zero_le]
state_before: d : ℕ
a b : ℤ√↑d
⊢ 0 ≤ a → 0 ≤ b → 0 ≤ a * b
state_after: d : ℕ
a b : ℤ√↑d
⊢ a.Nonneg → b.Nonneg → (a * b).Nonneg

tactic: exact nonneg_mul
state_before: d : ℕ
a b : ℤ√↑d
⊢ a.Nonneg → b.Nonneg → (a * b).Nonneg
state_after: no goals
Theorem: IsCompact.exists_isMinOn
File: Mathlib/Topology/Algebra/Order/Compact.lean

tactic: rcases (hs.image_of_continuousOn hf).exists_isLeast (ne_s.image f) with ⟨_, ⟨x, hxs, rfl⟩, hx⟩
state_before: α✝ : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝⁴ : LinearOrder α
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : ClosedIicTopology α
s : Set β
hs : IsCompact s
ne_s : s.Nonempty
f : β → α
hf : ContinuousOn f s
⊢ ∃ x ∈ s, IsMinOn f s x
state_after: case intro.intro.intro.intro
α✝ : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝⁴ : LinearOrder α
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : ClosedIicTopology α
s : Set β
hs : IsCompact s
ne_s : s.Nonempty
f : β → α
hf : ContinuousOn f s
x : β
hxs : x ∈ s
hx : f x ∈ lowerBounds (f '' s)
⊢ ∃ x ∈ s, IsMinOn f s x

tactic: exact ⟨x, hxs, forall_mem_image.1 hx⟩
state_before: case intro.intro.intro.intro
α✝ : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝⁴ : LinearOrder α
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : ClosedIicTopology α
s : Set β
hs : IsCompact s
ne_s : s.Nonempty
f : β → α
hf : ContinuousOn f s
x : β
hxs : x ∈ s
hx : f x ∈ lowerBounds (f '' s)
⊢ ∃ x ∈ s, IsMinOn f s x
state_after: no goals
Theorem: Real.rpow_lt_rpow_of_exponent_lt
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: repeat' rw [rpow_def_of_pos (lt_trans zero_lt_one hx)]
state_before: x y z : ℝ
n : ℕ
hx : 1 < x
hyz : y < z
⊢ x ^ y < x ^ z
state_after: x y z : ℝ
n : ℕ
hx : 1 < x
hyz : y < z
⊢ rexp (log x * y) < rexp (log x * z)

tactic: rw [exp_lt_exp]
state_before: x y z : ℝ
n : ℕ
hx : 1 < x
hyz : y < z
⊢ rexp (log x * y) < rexp (log x * z)
state_after: x y z : ℝ
n : ℕ
hx : 1 < x
hyz : y < z
⊢ log x * y < log x * z

tactic: exact mul_lt_mul_of_pos_left hyz (log_pos hx)
state_before: x y z : ℝ
n : ℕ
hx : 1 < x
hyz : y < z
⊢ log x * y < log x * z
state_after: no goals

tactic: rw [rpow_def_of_pos (lt_trans zero_lt_one hx)]
state_before: x y z : ℝ
n : ℕ
hx : 1 < x
hyz : y < z
⊢ rexp (log x * y) < x ^ z
state_after: x y z : ℝ
n : ℕ
hx : 1 < x
hyz : y < z
⊢ rexp (log x * y) < rexp (log x * z)
Theorem: RootPairing.ne_zero'
File: Mathlib/LinearAlgebra/RootSystem/Defs.lean

tactic: simpa [h] using P.root_coroot_two i
state_before: ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : AddCommGroup N
inst✝¹ : Module R N
P : RootPairing ι R M N
i j : ι
inst✝ : CharZero R
h : P.coroot i = 0
⊢ False
state_after: no goals
Theorem: PartialHomeomorph.mem_interior_extend_target
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

tactic: rw [f.extend_target, interior_inter, (f.open_target.preimage I.continuous_symm).interior_eq,
  mem_inter_iff, mem_preimage]
state_before: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
inst✝¹ : TopologicalSpace H'
inst✝ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
y : H
hy : y ∈ f.target
hy' : ↑I y ∈ interior (range ↑I)
⊢ ↑I y ∈ interior (f.extend I).target
state_after: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
inst✝¹ : TopologicalSpace H'
inst✝ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
y : H
hy : y ∈ f.target
hy' : ↑I y ∈ interior (range ↑I)
⊢ ↑I.symm (↑I y) ∈ f.target ∧ ↑I y ∈ interior (range ↑I)

tactic: exact ⟨mem_of_eq_of_mem (I.left_inv (y)) hy, hy'⟩
state_before: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
inst✝¹ : TopologicalSpace H'
inst✝ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
y : H
hy : y ∈ f.target
hy' : ↑I y ∈ interior (range ↑I)
⊢ ↑I.symm (↑I y) ∈ f.target ∧ ↑I y ∈ interior (range ↑I)
state_after: no goals
Theorem: Cardinal.mul_eq_left
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: rw [mul_eq_max_of_aleph0_le_left ha hb', max_eq_left hb]
state_before: a b : Cardinal.{u_1}
ha : ℵ₀ ≤ a
hb : b ≤ a
hb' : b ≠ 0
⊢ a * b = a
state_after: no goals
Theorem: inv_lt_iff_one_lt_mul
File: Mathlib/Algebra/Order/Group/Defs.lean

tactic: rw [inv_mul_self]
state_before: α : Type u
inst✝² : Group α
inst✝¹ : LT α
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x < x_1
a b c : α
⊢ a⁻¹ * a < b * a ↔ 1 < b * a
state_after: no goals
Theorem: mulSupport_comp_inv_smul₀
File: Mathlib/Data/Set/Pointwise/Support.lean

tactic: ext x
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : GroupWithZero α
inst✝¹ : MulAction α β
inst✝ : One γ
c : α
hc : c ≠ 0
f : β → γ
⊢ (mulSupport fun x => f (c⁻¹ • x)) = c • mulSupport f
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : GroupWithZero α
inst✝¹ : MulAction α β
inst✝ : One γ
c : α
hc : c ≠ 0
f : β → γ
x : β
⊢ (x ∈ mulSupport fun x => f (c⁻¹ • x)) ↔ x ∈ c • mulSupport f

tactic: simp only [mem_smul_set_iff_inv_smul_mem₀ hc, mem_mulSupport]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : GroupWithZero α
inst✝¹ : MulAction α β
inst✝ : One γ
c : α
hc : c ≠ 0
f : β → γ
x : β
⊢ (x ∈ mulSupport fun x => f (c⁻¹ • x)) ↔ x ∈ c • mulSupport f
state_after: no goals
Theorem: ENNReal.ofReal_lt_iff_lt_toReal
File: Mathlib/Data/ENNReal/Real.lean

tactic: lift b to ℝ≥0 using hb
state_before: a✝ b✝ c d : ℝ≥0∞
r p q : ℝ≥0
a : ℝ
b : ℝ≥0∞
ha : 0 ≤ a
hb : b ≠ ⊤
⊢ ENNReal.ofReal a < b ↔ a < b.toReal
state_after: case intro
a✝ b✝ c d : ℝ≥0∞
r p q : ℝ≥0
a : ℝ
ha : 0 ≤ a
b : ℝ≥0
⊢ ENNReal.ofReal a < ↑b ↔ a < (↑b).toReal

tactic: simpa [ENNReal.ofReal, ENNReal.toReal] using Real.toNNReal_lt_iff_lt_coe ha
state_before: case intro
a✝ b✝ c d : ℝ≥0∞
r p q : ℝ≥0
a : ℝ
ha : 0 ≤ a
b : ℝ≥0
⊢ ENNReal.ofReal a < ↑b ↔ a < (↑b).toReal
state_after: no goals
Theorem: MeasureTheory.levyProkhorovEDist_lt_top
File: Mathlib/MeasureTheory/Measure/LevyProkhorovMetric.lean

tactic: simp [measure_lt_top]
state_before: ι : Type u_1
Ω : Type u_2
inst✝³ : MeasurableSpace Ω
inst✝² : PseudoEMetricSpace Ω
μ ν : Measure Ω
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
⊢ max (μ univ) (ν univ) < ⊤
state_after: no goals
Theorem: Matrix.cons_vec_bit0_eq_alt0
File: Mathlib/Data/Fin/VecNotation.lean

tactic: rw [vecAlt0_vecAppend]
state_before: α : Type u
m n o : ℕ
m' : Type u_1
n' : Type u_2
o' : Type u_3
x : α
u : Fin n → α
i : Fin (n + 1)
⊢ vecCons x u (bit0 i) = vecAlt0 ⋯ (vecAppend ⋯ (vecCons x u) (vecCons x u)) i
state_after: α : Type u
m n o : ℕ
m' : Type u_1
n' : Type u_2
o' : Type u_3
x : α
u : Fin n → α
i : Fin (n + 1)
⊢ vecCons x u (bit0 i) = (vecCons x u ∘ bit0) i

tactic: rfl
state_before: α : Type u
m n o : ℕ
m' : Type u_1
n' : Type u_2
o' : Type u_3
x : α
u : Fin n → α
i : Fin (n + 1)
⊢ vecCons x u (bit0 i) = (vecCons x u ∘ bit0) i
state_after: no goals
Theorem: Zsqrtd.norm_zero
File: Mathlib/NumberTheory/Zsqrtd/Basic.lean

tactic: simp [norm]
state_before: d : ℤ
⊢ norm 0 = 0
state_after: no goals
Theorem: Stream'.map_eq
File: Mathlib/Data/Stream/Init.lean

tactic: rw [← Stream'.eta (map f s), tail_map, head_map]
state_before: α : Type u
β : Type v
δ : Type w
f : α → β
s : Stream' α
⊢ map f s = f s.head :: map f s.tail
state_after: no goals
Theorem: Function.Antiperiodic.add_const
File: Mathlib/Algebra/Periodic.lean

tactic: simpa only [add_right_comm] using h (x + a)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x✝ : α
inst✝¹ : AddCommSemigroup α
inst✝ : Neg β
h : Antiperiodic f c
a x : α
⊢ (fun x => f (x + a)) (x + c) = -(fun x => f (x + a)) x
state_after: no goals
Theorem: Set.image_const_add_Ioo
File: Mathlib/Algebra/Order/Interval/Set/Monoid.lean

tactic: simp only [add_comm a, image_add_const_Ioo]
state_before: M : Type u_1
inst✝¹ : OrderedCancelAddCommMonoid M
inst✝ : ExistsAddOfLE M
a b c d : M
⊢ (fun x => a + x) '' Ioo b c = Ioo (a + b) (a + c)
state_after: no goals
Theorem: DFinsupp.prod_finset_sum_index
File: Mathlib/Data/DFinsupp/Basic.lean

tactic: classical
exact Finset.induction_on s (by simp [prod_zero_index])
      (by simp (config := { contextual := true }) [prod_add_index, h_zero, h_add])
state_before: ι : Type u
γ✝ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
γ : Type w
α : Type x
inst✝² : (i : ι) → AddCommMonoid (β i)
inst✝¹ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
inst✝ : CommMonoid γ
s : Finset α
g : α → Π₀ (i : ι), β i
h : (i : ι) → β i → γ
h_zero : ∀ (i : ι), h i 0 = 1
h_add : ∀ (i : ι) (b₁ b₂ : β i), h i (b₁ + b₂) = h i b₁ * h i b₂
⊢ ∏ i ∈ s, (g i).prod h = (∑ i ∈ s, g i).prod h
state_after: no goals

tactic: exact Finset.induction_on s (by simp [prod_zero_index])
      (by simp (config := { contextual := true }) [prod_add_index, h_zero, h_add])
state_before: ι : Type u
γ✝ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
γ : Type w
α : Type x
inst✝² : (i : ι) → AddCommMonoid (β i)
inst✝¹ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
inst✝ : CommMonoid γ
s : Finset α
g : α → Π₀ (i : ι), β i
h : (i : ι) → β i → γ
h_zero : ∀ (i : ι), h i 0 = 1
h_add : ∀ (i : ι) (b₁ b₂ : β i), h i (b₁ + b₂) = h i b₁ * h i b₂
⊢ ∏ i ∈ s, (g i).prod h = (∑ i ∈ s, g i).prod h
state_after: no goals

tactic: simp [prod_zero_index]
state_before: ι : Type u
γ✝ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
γ : Type w
α : Type x
inst✝² : (i : ι) → AddCommMonoid (β i)
inst✝¹ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
inst✝ : CommMonoid γ
s : Finset α
g : α → Π₀ (i : ι), β i
h : (i : ι) → β i → γ
h_zero : ∀ (i : ι), h i 0 = 1
h_add : ∀ (i : ι) (b₁ b₂ : β i), h i (b₁ + b₂) = h i b₁ * h i b₂
⊢ ∏ i ∈ ∅, (g i).prod h = (∑ i ∈ ∅, g i).prod h
state_after: no goals

tactic: simp (config := { contextual := true }) [prod_add_index, h_zero, h_add]
state_before: ι : Type u
γ✝ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
γ : Type w
α : Type x
inst✝² : (i : ι) → AddCommMonoid (β i)
inst✝¹ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
inst✝ : CommMonoid γ
s : Finset α
g : α → Π₀ (i : ι), β i
h : (i : ι) → β i → γ
h_zero : ∀ (i : ι), h i 0 = 1
h_add : ∀ (i : ι) (b₁ b₂ : β i), h i (b₁ + b₂) = h i b₁ * h i b₂
⊢ ∀ ⦃a : α⦄ {s : Finset α},
    a ∉ s →
      ∏ i ∈ s, (g i).prod h = (∑ i ∈ s, g i).prod h → ∏ i ∈ insert a s, (g i).prod h = (∑ i ∈ insert a s, g i).prod h
state_after: no goals
Theorem: Set.MapsTo.restrict_inj
File: Mathlib/Data/Set/Function.lean

tactic: rw [h.restrict_eq_codRestrict, injective_codRestrict, injOn_iff_injective]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
s s₁ s₂ : Set α
t t₁ t₂ : Set β
p : Set γ
f f₁ f₂ f₃ : α → β
g g₁ g₂ : β → γ
f' f₁' f₂' : β → α
g' : γ → β
a : α
b : β
h : MapsTo f s t
⊢ Injective (restrict f s t h) ↔ InjOn f s
state_after: no goals
Theorem: mul_mul_div_cancel
File: Mathlib/Algebra/Group/Basic.lean

tactic: rw [mul_assoc, mul_div_cancel]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : CommGroup G
a✝ b✝ c✝ d a b c : G
⊢ a * c * (b / c) = a * b
state_after: no goals
Theorem: InnerProductGeometry.angle_self
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/Basic.lean

tactic: unfold angle
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y x : V
hx : x ≠ 0
⊢ angle x x = 0
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y x : V
hx : x ≠ 0
⊢ arccos (⟪x, x⟫_ℝ / (‖x‖ * ‖x‖)) = 0

tactic: rw [← real_inner_self_eq_norm_mul_norm, div_self (inner_self_ne_zero.2 hx : ⟪x, x⟫ ≠ 0),
  Real.arccos_one]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y x : V
hx : x ≠ 0
⊢ arccos (⟪x, x⟫_ℝ / (‖x‖ * ‖x‖)) = 0
state_after: no goals
Theorem: Polynomial.cyclotomic_prime_mul_X_sub_one
File: Mathlib/RingTheory/Polynomial/Cyclotomic/Basic.lean

tactic: rw [cyclotomic_prime, geom_sum_mul]
state_before: R : Type u_1
inst✝ : Ring R
p : ℕ
hn : Fact (Nat.Prime p)
⊢ cyclotomic p R * (X - 1) = X ^ p - 1
state_after: no goals