1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: FirstOrder.Language.BoundedFormula.realize_iAlls
File: Mathlib/ModelTheory/Semantics.lean

tactic: rw [← Formula.realize_iAlls, iff_iff_eq]
state_before: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝³ : L.Structure M
inst✝² : L.Structure N
inst✝¹ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n : ℕ
T : L.Theory
inst✝ : Finite γ
f : α → β ⊕ γ
φ : L.Formula α
v : β → M
v' : Fin 0 → M
⊢ Realize (Formula.iAlls f φ) v v' ↔ ∀ (i : γ → M), φ.Realize fun a => Sum.elim v i (f a)
state_after: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝³ : L.Structure M
inst✝² : L.Structure N
inst✝¹ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n : ℕ
T : L.Theory
inst✝ : Finite γ
f : α → β ⊕ γ
φ : L.Formula α
v : β → M
v' : Fin 0 → M
⊢ Realize (Formula.iAlls f φ) v v' = (Formula.iAlls f φ).Realize v

tactic: congr
state_before: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝³ : L.Structure M
inst✝² : L.Structure N
inst✝¹ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n : ℕ
T : L.Theory
inst✝ : Finite γ
f : α → β ⊕ γ
φ : L.Formula α
v : β → M
v' : Fin 0 → M
⊢ Realize (Formula.iAlls f φ) v v' = (Formula.iAlls f φ).Realize v
state_after: case e__xs
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝³ : L.Structure M
inst✝² : L.Structure N
inst✝¹ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n : ℕ
T : L.Theory
inst✝ : Finite γ
f : α → β ⊕ γ
φ : L.Formula α
v : β → M
v' : Fin 0 → M
⊢ v' = default

tactic: simp [eq_iff_true_of_subsingleton]
state_before: case e__xs
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝³ : L.Structure M
inst✝² : L.Structure N
inst✝¹ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n : ℕ
T : L.Theory
inst✝ : Finite γ
f : α → β ⊕ γ
φ : L.Formula α
v : β → M
v' : Fin 0 → M
⊢ v' = default
state_after: no goals
Theorem: Multiset.lcm_ndinsert
File: Mathlib/Algebra/GCDMonoid/Multiset.lean

tactic: rw [← lcm_dedup, dedup_ext.2, lcm_dedup, lcm_cons]
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizedGCDMonoid α
inst✝ : DecidableEq α
a : α
s : Multiset α
⊢ (ndinsert a s).lcm = GCDMonoid.lcm a s.lcm
state_after: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizedGCDMonoid α
inst✝ : DecidableEq α
a : α
s : Multiset α
⊢ ∀ (a_1 : α), a_1 ∈ ndinsert a s ↔ a_1 ∈ a ::ₘ s

tactic: simp
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizedGCDMonoid α
inst✝ : DecidableEq α
a : α
s : Multiset α
⊢ ∀ (a_1 : α), a_1 ∈ ndinsert a s ↔ a_1 ∈ a ::ₘ s
state_after: no goals
Theorem: Real.exp_bound_div_one_sub_of_interval'
File: Mathlib/Data/Complex/Exponential.lean

tactic: have H : 0 < 1 - (1 + x + x ^ 2) * (1 - x) := calc
  0 < x ^ 3 := by positivity
  _ = 1 - (1 + x + x ^ 2) * (1 - x) := by ring
state_before: x : ℝ
h1 : 0 < x
h2 : x < 1
⊢ rexp x < 1 / (1 - x)
state_after: x : ℝ
h1 : 0 < x
h2 : x < 1
H : 0 < 1 - (1 + x + x ^ 2) * (1 - x)
⊢ rexp x < 1 / (1 - x)

tactic: calc
  exp x ≤ _ := exp_bound' h1.le h2.le zero_lt_three
  _ ≤ 1 + x + x ^ 2 := by
    repeat erw [Finset.sum_range_succ]
    norm_num [Nat.factorial]
    nlinarith
  _ < 1 / (1 - x) := by rw [lt_div_iff] <;> nlinarith
state_before: x : ℝ
h1 : 0 < x
h2 : x < 1
H : 0 < 1 - (1 + x + x ^ 2) * (1 - x)
⊢ rexp x < 1 / (1 - x)
state_after: no goals

tactic: positivity
state_before: x : ℝ
h1 : 0 < x
h2 : x < 1
⊢ 0 < x ^ 3
state_after: no goals

tactic: ring
state_before: x : ℝ
h1 : 0 < x
h2 : x < 1
⊢ x ^ 3 = 1 - (1 + x + x ^ 2) * (1 - x)
state_after: no goals

tactic: repeat erw [Finset.sum_range_succ]
state_before: x : ℝ
h1 : 0 < x
h2 : x < 1
H : 0 < 1 - (1 + x + x ^ 2) * (1 - x)
⊢ ∑ m ∈ range 3, x ^ m / ↑m.factorial + x ^ 3 * (↑3 + 1) / (↑(Nat.factorial 3) * ↑3) ≤ 1 + x + x ^ 2
state_after: x : ℝ
h1 : 0 < x
h2 : x < 1
H : 0 < 1 - (1 + x + x ^ 2) * (1 - x)
⊢ ∑ x_1 ∈ range 0, x ^ x_1 / ↑x_1.factorial + x ^ 0 / ↑(Nat.factorial 0) + x ^ 1 / ↑(Nat.factorial 1) +
        x ^ 2 / ↑(Nat.factorial 2) +
      x ^ 3 * (↑3 + 1) / (↑(Nat.factorial 3) * ↑3) ≤
    1 + x + x ^ 2

tactic: norm_num [Nat.factorial]
state_before: x : ℝ
h1 : 0 < x
h2 : x < 1
H : 0 < 1 - (1 + x + x ^ 2) * (1 - x)
⊢ ∑ x_1 ∈ range 0, x ^ x_1 / ↑x_1.factorial + x ^ 0 / ↑(Nat.factorial 0) + x ^ 1 / ↑(Nat.factorial 1) +
        x ^ 2 / ↑(Nat.factorial 2) +
      x ^ 3 * (↑3 + 1) / (↑(Nat.factorial 3) * ↑3) ≤
    1 + x + x ^ 2
state_after: x : ℝ
h1 : 0 < x
h2 : x < 1
H : 0 < 1 - (1 + x + x ^ 2) * (1 - x)
⊢ 1 + x + x ^ 2 / 2 + x ^ 3 * 4 / 18 ≤ 1 + x + x ^ 2

tactic: nlinarith
state_before: x : ℝ
h1 : 0 < x
h2 : x < 1
H : 0 < 1 - (1 + x + x ^ 2) * (1 - x)
⊢ 1 + x + x ^ 2 / 2 + x ^ 3 * 4 / 18 ≤ 1 + x + x ^ 2
state_after: no goals

tactic: erw [Finset.sum_range_succ]
state_before: x : ℝ
h1 : 0 < x
h2 : x < 1
H : 0 < 1 - (1 + x + x ^ 2) * (1 - x)
⊢ ∑ x_1 ∈ range 1, x ^ x_1 / ↑x_1.factorial + x ^ 1 / ↑(Nat.factorial 1) + x ^ 2 / ↑(Nat.factorial 2) +
      x ^ 3 * (↑3 + 1) / (↑(Nat.factorial 3) * ↑3) ≤
    1 + x + x ^ 2
state_after: x : ℝ
h1 : 0 < x
h2 : x < 1
H : 0 < 1 - (1 + x + x ^ 2) * (1 - x)
⊢ ∑ x_1 ∈ range 0, x ^ x_1 / ↑x_1.factorial + x ^ 0 / ↑(Nat.factorial 0) + x ^ 1 / ↑(Nat.factorial 1) +
        x ^ 2 / ↑(Nat.factorial 2) +
      x ^ 3 * (↑3 + 1) / (↑(Nat.factorial 3) * ↑3) ≤
    1 + x + x ^ 2

tactic: rw [lt_div_iff] <;> nlinarith
state_before: x : ℝ
h1 : 0 < x
h2 : x < 1
H : 0 < 1 - (1 + x + x ^ 2) * (1 - x)
⊢ 1 + x + x ^ 2 < 1 / (1 - x)
state_after: no goals
Theorem: Ideal.snd_comp_quotientInfEquivQuotientProd
File: Mathlib/RingTheory/Ideal/QuotientOperations.lean

tactic: apply Quotient.ringHom_ext
state_before: R : Type u
S : Type v
F : Type w
inst✝¹ : CommRing R
inst✝ : Semiring S
ι : Type u_1
I J : Ideal R
coprime : IsCoprime I J
⊢ (snd (R ⧸ I) (R ⧸ J)).comp ↑(I.quotientInfEquivQuotientProd J coprime) = factor (I ⊓ J) J ⋯
state_after: case h
R : Type u
S : Type v
F : Type w
inst✝¹ : CommRing R
inst✝ : Semiring S
ι : Type u_1
I J : Ideal R
coprime : IsCoprime I J
⊢ ((snd (R ⧸ I) (R ⧸ J)).comp ↑(I.quotientInfEquivQuotientProd J coprime)).comp (Quotient.mk (I ⊓ J)) =
    (factor (I ⊓ J) J ⋯).comp (Quotient.mk (I ⊓ J))

tactic: ext
state_before: case h
R : Type u
S : Type v
F : Type w
inst✝¹ : CommRing R
inst✝ : Semiring S
ι : Type u_1
I J : Ideal R
coprime : IsCoprime I J
⊢ ((snd (R ⧸ I) (R ⧸ J)).comp ↑(I.quotientInfEquivQuotientProd J coprime)).comp (Quotient.mk (I ⊓ J)) =
    (factor (I ⊓ J) J ⋯).comp (Quotient.mk (I ⊓ J))
state_after: case h.a
R : Type u
S : Type v
F : Type w
inst✝¹ : CommRing R
inst✝ : Semiring S
ι : Type u_1
I J : Ideal R
coprime : IsCoprime I J
x✝ : R
⊢ (((snd (R ⧸ I) (R ⧸ J)).comp ↑(I.quotientInfEquivQuotientProd J coprime)).comp (Quotient.mk (I ⊓ J))) x✝ =
    ((factor (I ⊓ J) J ⋯).comp (Quotient.mk (I ⊓ J))) x✝

tactic: rfl
state_before: case h.a
R : Type u
S : Type v
F : Type w
inst✝¹ : CommRing R
inst✝ : Semiring S
ι : Type u_1
I J : Ideal R
coprime : IsCoprime I J
x✝ : R
⊢ (((snd (R ⧸ I) (R ⧸ J)).comp ↑(I.quotientInfEquivQuotientProd J coprime)).comp (Quotient.mk (I ⊓ J))) x✝ =
    ((factor (I ⊓ J) J ⋯).comp (Quotient.mk (I ⊓ J))) x✝
state_after: no goals
Theorem: Behrend.four_zero_nine_six_lt_exp_sixteen
File: Mathlib/Combinatorics/Additive/AP/Three/Behrend.lean

tactic: rw [← log_lt_iff_lt_exp (show (0 : ℝ) < 4096 by norm_num), show (4096 : ℝ) = 2 ^ 12 by norm_cast,
  ← rpow_natCast, log_rpow zero_lt_two, cast_ofNat]
state_before: α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
⊢ 4096 < rexp 16
state_after: α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
⊢ 12 * log 2 < 16

tactic: have : 12 * (0.6931471808 : ℝ) < 16 := by norm_num
state_before: α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
⊢ 12 * log 2 < 16
state_after: α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
this : 12 * 0.6931471808 < 16
⊢ 12 * log 2 < 16

tactic: linarith [log_two_lt_d9]
state_before: α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
this : 12 * 0.6931471808 < 16
⊢ 12 * log 2 < 16
state_after: no goals

tactic: norm_num
state_before: α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
⊢ 0 < 4096
state_after: no goals

tactic: norm_cast
state_before: α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
⊢ 4096 = 2 ^ 12
state_after: no goals

tactic: norm_num
state_before: α : Type u_1
β : Type u_2
n d k N : ℕ
x : Fin n → ℕ
⊢ 12 * 0.6931471808 < 16
state_after: no goals
Theorem: nhdsWithin_le_nhds
File: Mathlib/Topology/ContinuousOn.lean

tactic: rw [← nhdsWithin_univ]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : TopologicalSpace α
a : α
s : Set α
⊢ 𝓝[s] a ≤ 𝓝 a
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : TopologicalSpace α
a : α
s : Set α
⊢ 𝓝[s] a ≤ 𝓝[univ] a

tactic: apply nhdsWithin_le_of_mem
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : TopologicalSpace α
a : α
s : Set α
⊢ 𝓝[s] a ≤ 𝓝[univ] a
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : TopologicalSpace α
a : α
s : Set α
⊢ univ ∈ 𝓝[s] a

tactic: exact univ_mem
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : TopologicalSpace α
a : α
s : Set α
⊢ univ ∈ 𝓝[s] a
state_after: no goals
Theorem: GaussianInt.norm_pos
File: Mathlib/NumberTheory/Zsqrtd/GaussianInt.lean

tactic: rw [lt_iff_le_and_ne, Ne, eq_comm, norm_eq_zero]
state_before: x : ℤ[i]
⊢ 0 < norm x ↔ x ≠ 0
state_after: x : ℤ[i]
⊢ 0 ≤ norm x ∧ ¬x = 0 ↔ x ≠ 0

tactic: simp [norm_nonneg]
state_before: x : ℤ[i]
⊢ 0 ≤ norm x ∧ ¬x = 0 ↔ x ≠ 0
state_after: no goals
Theorem: MeasureTheory.snorm_neg
File: Mathlib/MeasureTheory/Function/LpSeminorm/Basic.lean

tactic: by_cases h0 : p = 0
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
⊢ snorm (-f) p μ = snorm f p μ
state_after: case pos
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
h0 : p = 0
⊢ snorm (-f) p μ = snorm f p μ

case neg
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
h0 : ¬p = 0
⊢ snorm (-f) p μ = snorm f p μ

tactic: by_cases h_top : p = ∞
state_before: case neg
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
h0 : ¬p = 0
⊢ snorm (-f) p μ = snorm f p μ
state_after: case pos
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
h0 : ¬p = 0
h_top : p = ⊤
⊢ snorm (-f) p μ = snorm f p μ

case neg
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
h0 : ¬p = 0
h_top : ¬p = ⊤
⊢ snorm (-f) p μ = snorm f p μ

tactic: simp [snorm_eq_snorm' h0 h_top]
state_before: case neg
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
h0 : ¬p = 0
h_top : ¬p = ⊤
⊢ snorm (-f) p μ = snorm f p μ
state_after: no goals

tactic: simp [h0]
state_before: case pos
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
h0 : p = 0
⊢ snorm (-f) p μ = snorm f p μ
state_after: no goals

tactic: simp [h_top, snormEssSup]
state_before: case pos
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
h0 : ¬p = 0
h_top : p = ⊤
⊢ snorm (-f) p μ = snorm f p μ
state_after: no goals
Theorem: Finsupp.mem_supported'
File: Mathlib/LinearAlgebra/Finsupp.lean

tactic: haveI := Classical.decPred fun x : α => x ∈ s
state_before: α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
s : Set α
p : α →₀ M
⊢ p ∈ supported M R s ↔ ∀ x ∉ s, p x = 0
state_after: α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
s : Set α
p : α →₀ M
this : DecidablePred fun x => x ∈ s
⊢ p ∈ supported M R s ↔ ∀ x ∉ s, p x = 0

tactic: simp [mem_supported, Set.subset_def, not_imp_comm]
state_before: α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
s : Set α
p : α →₀ M
this : DecidablePred fun x => x ∈ s
⊢ p ∈ supported M R s ↔ ∀ x ∉ s, p x = 0
state_after: no goals
Theorem: List.toFinset_replicate_of_ne_zero
File: Mathlib/Data/Finset/Basic.lean

tactic: ext x
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
l l' : List α
a : α
n : ℕ
hn : n ≠ 0
⊢ (replicate n a).toFinset = {a}
state_after: case a
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
l l' : List α
a : α
n : ℕ
hn : n ≠ 0
x : α
⊢ x ∈ (replicate n a).toFinset ↔ x ∈ {a}

tactic: simp [hn, List.mem_replicate]
state_before: case a
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
l l' : List α
a : α
n : ℕ
hn : n ≠ 0
x : α
⊢ x ∈ (replicate n a).toFinset ↔ x ∈ {a}
state_after: no goals
Theorem: Polynomial.toFinsupp_mul
File: Mathlib/Algebra/Polynomial/Basic.lean

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

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

tactic: rw [← ofFinsupp_mul]
state_before: case ofFinsupp.ofFinsupp
R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
p q : R[X]
toFinsupp✝¹ toFinsupp✝ : R[ℕ]
⊢ ({ toFinsupp := toFinsupp✝¹ } * { toFinsupp := toFinsupp✝ }).toFinsupp =
    { toFinsupp := toFinsupp✝¹ }.toFinsupp * { toFinsupp := toFinsupp✝ }.toFinsupp
state_after: no goals
Theorem: Polynomial.aeval_eq_sum_range'
File: Mathlib/Algebra/Polynomial/AlgebraMap.lean

tactic: simp_rw [Algebra.smul_def]
state_before: R : Type u
S : Type v
T : Type w
A : Type z
A' : Type u_1
B : Type u_2
a b : R
n✝ : ℕ
inst✝⁸ : CommSemiring R
inst✝⁷ : Semiring A
inst✝⁶ : CommSemiring A'
inst✝⁵ : Semiring B
inst✝⁴ : Algebra R A
inst✝³ : Algebra R A'
inst✝² : Algebra R B
p✝ q : R[X]
x✝ : A
inst✝¹ : Semiring S
f : R →+* S
inst✝ : Algebra R S
p : R[X]
n : ℕ
hn : p.natDegree < n
x : S
⊢ (aeval x) p = ∑ i ∈ range n, p.coeff i • x ^ i
state_after: R : Type u
S : Type v
T : Type w
A : Type z
A' : Type u_1
B : Type u_2
a b : R
n✝ : ℕ
inst✝⁸ : CommSemiring R
inst✝⁷ : Semiring A
inst✝⁶ : CommSemiring A'
inst✝⁵ : Semiring B
inst✝⁴ : Algebra R A
inst✝³ : Algebra R A'
inst✝² : Algebra R B
p✝ q : R[X]
x✝ : A
inst✝¹ : Semiring S
f : R →+* S
inst✝ : Algebra R S
p : R[X]
n : ℕ
hn : p.natDegree < n
x : S
⊢ (aeval x) p = ∑ x_1 ∈ range n, (algebraMap R S) (p.coeff x_1) * x ^ x_1

tactic: exact eval₂_eq_sum_range' (algebraMap R S) hn x
state_before: R : Type u
S : Type v
T : Type w
A : Type z
A' : Type u_1
B : Type u_2
a b : R
n✝ : ℕ
inst✝⁸ : CommSemiring R
inst✝⁷ : Semiring A
inst✝⁶ : CommSemiring A'
inst✝⁵ : Semiring B
inst✝⁴ : Algebra R A
inst✝³ : Algebra R A'
inst✝² : Algebra R B
p✝ q : R[X]
x✝ : A
inst✝¹ : Semiring S
f : R →+* S
inst✝ : Algebra R S
p : R[X]
n : ℕ
hn : p.natDegree < n
x : S
⊢ (aeval x) p = ∑ x_1 ∈ range n, (algebraMap R S) (p.coeff x_1) * x ^ x_1
state_after: no goals
Theorem: IsSelfAdjoint.neg
File: Mathlib/Algebra/Star/SelfAdjoint.lean

tactic: simp only [isSelfAdjoint_iff, star_neg, hx.star_eq]
state_before: R : Type u_1
A : Type u_2
inst✝¹ : AddGroup R
inst✝ : StarAddMonoid R
x : R
hx : IsSelfAdjoint x
⊢ IsSelfAdjoint (-x)
state_after: no goals
Theorem: DirichletCharacter.Odd.eval_neg
File: Mathlib/NumberTheory/DirichletCharacter/Basic.lean

tactic: rw [Odd] at hψ
state_before: R : Type u_1
inst✝¹ : CommMonoidWithZero R
n : ℕ
χ : DirichletCharacter R n
S : Type
inst✝ : CommRing S
m : ℕ
ψ : DirichletCharacter S m
x : ZMod m
hψ : ψ.Odd
⊢ ψ (-x) = -ψ x
state_after: R : Type u_1
inst✝¹ : CommMonoidWithZero R
n : ℕ
χ : DirichletCharacter R n
S : Type
inst✝ : CommRing S
m : ℕ
ψ : DirichletCharacter S m
x : ZMod m
hψ : ψ (-1) = -1
⊢ ψ (-x) = -ψ x

tactic: rw [← neg_one_mul, map_mul]
state_before: R : Type u_1
inst✝¹ : CommMonoidWithZero R
n : ℕ
χ : DirichletCharacter R n
S : Type
inst✝ : CommRing S
m : ℕ
ψ : DirichletCharacter S m
x : ZMod m
hψ : ψ (-1) = -1
⊢ ψ (-x) = -ψ x
state_after: R : Type u_1
inst✝¹ : CommMonoidWithZero R
n : ℕ
χ : DirichletCharacter R n
S : Type
inst✝ : CommRing S
m : ℕ
ψ : DirichletCharacter S m
x : ZMod m
hψ : ψ (-1) = -1
⊢ ψ (-1) * ψ x = -ψ x

tactic: simp [hψ]
state_before: R : Type u_1
inst✝¹ : CommMonoidWithZero R
n : ℕ
χ : DirichletCharacter R n
S : Type
inst✝ : CommRing S
m : ℕ
ψ : DirichletCharacter S m
x : ZMod m
hψ : ψ (-1) = -1
⊢ ψ (-1) * ψ x = -ψ x
state_after: no goals
Theorem: Mathlib.Meta.Positivity.log_pos_of_isRat
File: Mathlib/Analysis/SpecialFunctions/Log/Basic.lean

tactic: rw [eq, invOf_eq_inv, ← div_eq_mul_inv]
state_before: e : ℝ
d : ℕ
n : ℤ
inv : Invertible ↑d
eq : e = ↑n * ⅟↑d
h : decide (1 < ↑n / ↑d) = true
⊢ 0 < Real.log e
state_after: e : ℝ
d : ℕ
n : ℤ
inv : Invertible ↑d
eq : e = ↑n * ⅟↑d
h : decide (1 < ↑n / ↑d) = true
⊢ 0 < Real.log (↑n / ↑d)

tactic: have : 1 < (n : ℝ) / d := by exact_mod_cast of_decide_eq_true h
state_before: e : ℝ
d : ℕ
n : ℤ
inv : Invertible ↑d
eq : e = ↑n * ⅟↑d
h : decide (1 < ↑n / ↑d) = true
⊢ 0 < Real.log (↑n / ↑d)
state_after: e : ℝ
d : ℕ
n : ℤ
inv : Invertible ↑d
eq : e = ↑n * ⅟↑d
h : decide (1 < ↑n / ↑d) = true
this : 1 < ↑n / ↑d
⊢ 0 < Real.log (↑n / ↑d)

tactic: exact Real.log_pos this
state_before: e : ℝ
d : ℕ
n : ℤ
inv : Invertible ↑d
eq : e = ↑n * ⅟↑d
h : decide (1 < ↑n / ↑d) = true
this : 1 < ↑n / ↑d
⊢ 0 < Real.log (↑n / ↑d)
state_after: no goals

tactic: exact_mod_cast of_decide_eq_true h
state_before: e : ℝ
d : ℕ
n : ℤ
inv : Invertible ↑d
eq : e = ↑n * ⅟↑d
h : decide (1 < ↑n / ↑d) = true
⊢ 1 < ↑n / ↑d
state_after: no goals
Theorem: Fintype.sum_pow
File: Mathlib/Algebra/BigOperators/Ring.lean

tactic: simp [sum_pow']
state_before: ι✝ : Type u_1
α✝ : Type u_2
β : Type u_3
γ : Type u_4
κ✝ : ι✝ → Type u_5
s s₁ s₂ : Finset ι✝
i : ι✝
a : α✝
f✝ g : ι✝ → α✝
ι : Type u_6
κ : Type u_7
α : Type u_8
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
inst✝¹ : Fintype κ
inst✝ : CommSemiring α
f : ι → α
n : ℕ
⊢ (∑ a : ι, f a) ^ n = ∑ p : Fin n → ι, ∏ i : Fin n, f (p i)
state_after: no goals
Theorem: Inducing.isLindelof_iff
File: Mathlib/Topology/Compactness/Lindelof.lean

tactic: refine ⟨fun hs => hs.image hf.continuous, fun hs F F_ne_bot _ F_le => ?_⟩
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
f : X → Y
hf : Inducing f
⊢ IsLindelof s ↔ IsLindelof (f '' s)
state_after: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
f : X → Y
hf : Inducing f
hs : IsLindelof (f '' s)
F : Filter X
F_ne_bot : F.NeBot
x✝ : CountableInterFilter F
F_le : F ≤ 𝓟 s
⊢ ∃ x ∈ s, ClusterPt x F

tactic: obtain ⟨_, ⟨x, x_in : x ∈ s, rfl⟩, hx : ClusterPt (f x) (map f F)⟩ :=
  hs ((map_mono F_le).trans_eq map_principal)
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
f : X → Y
hf : Inducing f
hs : IsLindelof (f '' s)
F : Filter X
F_ne_bot : F.NeBot
x✝ : CountableInterFilter F
F_le : F ≤ 𝓟 s
⊢ ∃ x ∈ s, ClusterPt x F
state_after: case intro.intro.intro.intro
X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
f : X → Y
hf : Inducing f
hs : IsLindelof (f '' s)
F : Filter X
F_ne_bot : F.NeBot
x✝ : CountableInterFilter F
F_le : F ≤ 𝓟 s
x : X
x_in : x ∈ s
hx : ClusterPt (f x) (map f F)
⊢ ∃ x ∈ s, ClusterPt x F

tactic: exact ⟨x, x_in, hf.mapClusterPt_iff.1 hx⟩
state_before: case intro.intro.intro.intro
X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
f : X → Y
hf : Inducing f
hs : IsLindelof (f '' s)
F : Filter X
F_ne_bot : F.NeBot
x✝ : CountableInterFilter F
F_le : F ≤ 𝓟 s
x : X
x_in : x ∈ s
hx : ClusterPt (f x) (map f F)
⊢ ∃ x ∈ s, ClusterPt x F
state_after: no goals
Theorem: AlgebraicGeometry.quasiSeparated_over_affine_iff
File: Mathlib/AlgebraicGeometry/Morphisms/QuasiSeparated.lean

tactic: rw [quasiSeparated_eq_affineProperty,
  QuasiSeparated.affineProperty_isLocal.affine_target_iff f, QuasiSeparated.affineProperty]
state_before: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
f : X ⟶ Y
inst✝ : IsAffine Y
⊢ QuasiSeparated f ↔ QuasiSeparatedSpace ↑↑X.toPresheafedSpace
state_after: no goals
Theorem: Commute.sum_right
File: Mathlib/Algebra/BigOperators/Ring.lean

tactic: obtain ⟨i, hi, rfl⟩ := Multiset.mem_map.mp hb
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
κ : ι → Type u_5
s✝ s₁ s₂ : Finset ι
i : ι
a : α
f✝ g : ι → α
inst✝¹ inst✝ : NonUnitalNonAssocSemiring α
s : Finset ι
f : ι → α
b✝ : α
h : ∀ i ∈ s, Commute b✝ (f i)
b : α
hb : b ∈ Multiset.map (fun i => f i) s.val
⊢ Commute b✝ b
state_after: case intro.intro
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
κ : ι → Type u_5
s✝ s₁ s₂ : Finset ι
i✝ : ι
a : α
f✝ g : ι → α
inst✝¹ inst✝ : NonUnitalNonAssocSemiring α
s : Finset ι
f : ι → α
b : α
h : ∀ i ∈ s, Commute b (f i)
i : ι
hi : i ∈ s.val
hb : f i ∈ Multiset.map (fun i => f i) s.val
⊢ Commute b (f i)

tactic: exact h _ hi
state_before: case intro.intro
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
κ : ι → Type u_5
s✝ s₁ s₂ : Finset ι
i✝ : ι
a : α
f✝ g : ι → α
inst✝¹ inst✝ : NonUnitalNonAssocSemiring α
s : Finset ι
f : ι → α
b : α
h : ∀ i ∈ s, Commute b (f i)
i : ι
hi : i ∈ s.val
hb : f i ∈ Multiset.map (fun i => f i) s.val
⊢ Commute b (f i)
state_after: no goals
Theorem: Set.WellFoundedOn.mono
File: Mathlib/Order/WellFoundedSet.lean

tactic: rw [wellFoundedOn_iff] at *
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
r r' : α → α → Prop
f : β → α
s t : Set α
x y : α
h : t.WellFoundedOn r'
hle : r ≤ r'
hst : s ⊆ t
⊢ s.WellFoundedOn r
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
r r' : α → α → Prop
f : β → α
s t : Set α
x y : α
h : WellFounded fun a b => r' a b ∧ a ∈ t ∧ b ∈ t
hle : r ≤ r'
hst : s ⊆ t
⊢ WellFounded fun a b => r a b ∧ a ∈ s ∧ b ∈ s

tactic: exact Subrelation.wf (fun xy => ⟨hle _ _ xy.1, hst xy.2.1, hst xy.2.2⟩) h
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
r r' : α → α → Prop
f : β → α
s t : Set α
x y : α
h : WellFounded fun a b => r' a b ∧ a ∈ t ∧ b ∈ t
hle : r ≤ r'
hst : s ⊆ t
⊢ WellFounded fun a b => r a b ∧ a ∈ s ∧ b ∈ s
state_after: no goals