1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: gauge_lt_eq
File: Mathlib/Analysis/Convex/Gauge.lean

tactic: ext
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
x : E
a✝ : ℝ
absorbs : Absorbent ℝ s
a : ℝ
⊢ {x | gauge s x < a} = ⋃ r ∈ Ioo 0 a, r • s
state_after: case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
x : E
a✝ : ℝ
absorbs : Absorbent ℝ s
a : ℝ
x✝ : E
⊢ x✝ ∈ {x | gauge s x < a} ↔ x✝ ∈ ⋃ r ∈ Ioo 0 a, r • s

tactic: simp_rw [mem_setOf, mem_iUnion, exists_prop, mem_Ioo, and_assoc]
state_before: case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
x : E
a✝ : ℝ
absorbs : Absorbent ℝ s
a : ℝ
x✝ : E
⊢ x✝ ∈ {x | gauge s x < a} ↔ x✝ ∈ ⋃ r ∈ Ioo 0 a, r • s
state_after: case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
x : E
a✝ : ℝ
absorbs : Absorbent ℝ s
a : ℝ
x✝ : E
⊢ gauge s x✝ < a ↔ ∃ i, 0 < i ∧ i < a ∧ x✝ ∈ i • s

tactic: exact
  ⟨exists_lt_of_gauge_lt absorbs, fun ⟨r, hr₀, hr₁, hx⟩ =>
    (gauge_le_of_mem hr₀.le hx).trans_lt hr₁⟩
state_before: case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
x : E
a✝ : ℝ
absorbs : Absorbent ℝ s
a : ℝ
x✝ : E
⊢ gauge s x✝ < a ↔ ∃ i, 0 < i ∧ i < a ∧ x✝ ∈ i • s
state_after: no goals
Theorem: Nat.sum_div
File: Mathlib/Algebra/BigOperators/Ring.lean

tactic: obtain rfl | hn := n.eq_zero_or_pos
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
s : Finset ι
f : ι → ℕ
n : ℕ
hf : ∀ i ∈ s, n ∣ f i
⊢ (∑ i ∈ s, f i) / n = ∑ i ∈ s, f i / n
state_after: case inl
ι✝ : 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
s : Finset ι
f : ι → ℕ
hf : ∀ i ∈ s, 0 ∣ f i
⊢ (∑ i ∈ s, f i) / 0 = ∑ i ∈ s, f i / 0

case inr
ι✝ : 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
s : Finset ι
f : ι → ℕ
n : ℕ
hf : ∀ i ∈ s, n ∣ f i
hn : n > 0
⊢ (∑ i ∈ s, f i) / n = ∑ i ∈ s, f i / n

tactic: rw [Nat.div_eq_iff_eq_mul_left hn (dvd_sum hf), sum_mul]
state_before: case inr
ι✝ : 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
s : Finset ι
f : ι → ℕ
n : ℕ
hf : ∀ i ∈ s, n ∣ f i
hn : n > 0
⊢ (∑ i ∈ s, f i) / n = ∑ i ∈ s, f i / n
state_after: case inr
ι✝ : 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
s : Finset ι
f : ι → ℕ
n : ℕ
hf : ∀ i ∈ s, n ∣ f i
hn : n > 0
⊢ ∑ i ∈ s, f i = ∑ i ∈ s, f i / n * n

tactic: refine sum_congr rfl fun s hs ↦ ?_
state_before: case inr
ι✝ : 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
s : Finset ι
f : ι → ℕ
n : ℕ
hf : ∀ i ∈ s, n ∣ f i
hn : n > 0
⊢ ∑ i ∈ s, f i = ∑ i ∈ s, f i / n * n
state_after: case inr
ι✝ : 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
s✝ : Finset ι
f : ι → ℕ
n : ℕ
hf : ∀ i ∈ s✝, n ∣ f i
hn : n > 0
s : ι
hs : s ∈ s✝
⊢ f s = f s / n * n

tactic: rw [Nat.div_mul_cancel (hf _ hs)]
state_before: case inr
ι✝ : 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
s✝ : Finset ι
f : ι → ℕ
n : ℕ
hf : ∀ i ∈ s✝, n ∣ f i
hn : n > 0
s : ι
hs : s ∈ s✝
⊢ f s = f s / n * n
state_after: no goals

tactic: simp
state_before: case inl
ι✝ : 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
s : Finset ι
f : ι → ℕ
hf : ∀ i ∈ s, 0 ∣ f i
⊢ (∑ i ∈ s, f i) / 0 = ∑ i ∈ s, f i / 0
state_after: no goals
Theorem: toZ_nonneg
File: Mathlib/Order/SuccPred/LinearLocallyFinite.lean

tactic: rw [toZ_of_ge hi]
state_before: ι : Type u_1
inst✝³ : LinearOrder ι
inst✝² : SuccOrder ι
inst✝¹ : IsSuccArchimedean ι
inst✝ : PredOrder ι
i0 i : ι
hi : i0 ≤ i
⊢ 0 ≤ toZ i0 i
state_after: ι : Type u_1
inst✝³ : LinearOrder ι
inst✝² : SuccOrder ι
inst✝¹ : IsSuccArchimedean ι
inst✝ : PredOrder ι
i0 i : ι
hi : i0 ≤ i
⊢ 0 ≤ ↑(Nat.find ⋯)

tactic: exact Int.natCast_nonneg _
state_before: ι : Type u_1
inst✝³ : LinearOrder ι
inst✝² : SuccOrder ι
inst✝¹ : IsSuccArchimedean ι
inst✝ : PredOrder ι
i0 i : ι
hi : i0 ≤ i
⊢ 0 ≤ ↑(Nat.find ⋯)
state_after: no goals
Theorem: Mathlib.Meta.NormNum.jacobiSymNat.qr₃
File: Mathlib/Tactic/NormNum/LegendreSymbol.lean

tactic: rwa [jacobiSymNat, jacobiSym.quadratic_reciprocity_three_mod_four ha hb, neg_inj]
state_before: a b : ℕ
r : ℤ
ha : a % 4 = 3
hb : b % 4 = 3
hr : jacobiSymNat b a = r
⊢ jacobiSymNat a b = -r
state_after: no goals
Theorem: List.range_sublist
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: simp only [range_eq_range', range'_sublist_right]
state_before: m n : Nat
⊢ range m <+ range n ↔ m ≤ n
state_after: no goals
Theorem: IsCoprime.exists_SL2_row
File: Mathlib/LinearAlgebra/Matrix/SpecialLinearGroup.lean

tactic: obtain ⟨u, v, h⟩ := hab
state_before: R : Type u_1
inst✝ : CommRing R
a b : R
hab : IsCoprime a b
i : Fin 2
⊢ ∃ g, ↑g i 0 = a ∧ ↑g i 1 = b
state_after: case intro.intro
R : Type u_1
inst✝ : CommRing R
a b : R
i : Fin 2
u v : R
h : u * a + v * b = 1
⊢ ∃ g, ↑g i 0 = a ∧ ↑g i 1 = b

tactic: rw [Matrix.det_fin_two_of, ← h]
state_before: case intro.intro.refine_2
R : Type u_1
inst✝ : CommRing R
a b : R
i : Fin 2
u v : R
h : u * a + v * b = 1
⊢ (of ![![v, -u], ![a, b]]).det = 1
state_after: case intro.intro.refine_2
R : Type u_1
inst✝ : CommRing R
a b : R
i : Fin 2
u v : R
h : u * a + v * b = 1
⊢ v * b - -u * a = u * a + v * b

tactic: ring
state_before: case intro.intro.refine_2
R : Type u_1
inst✝ : CommRing R
a b : R
i : Fin 2
u v : R
h : u * a + v * b = 1
⊢ v * b - -u * a = u * a + v * b
state_after: no goals
Theorem: expMapCircle_add
File: Mathlib/Analysis/Complex/Circle.lean

tactic: simp only [expMapCircle_apply, Submonoid.coe_mul, ofReal_add, add_mul, Complex.exp_add]
state_before: x y : ℝ
⊢ ↑(expMapCircle (x + y)) = ↑(expMapCircle x * expMapCircle y)
state_after: no goals
Theorem: EuclideanGeometry.inversion_self
File: Mathlib/Geometry/Euclidean/Inversion/Basic.lean

tactic: simp [inversion]
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
a b c✝ d x y z : P
r R✝ : ℝ
c : P
R : ℝ
⊢ inversion c R c = c
state_after: no goals
Theorem: Cardinal.power_le_power_left
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: rintro ⟨α⟩ ⟨β⟩ ⟨γ⟩ hα ⟨e⟩
state_before: α β : Type u
⊢ ∀ {a b c : Cardinal.{u_1}}, a ≠ 0 → b ≤ c → a ^ b ≤ a ^ c
state_after: case mk.mk.mk.intro
α✝ β✝ : Type u
a✝ : Cardinal.{u_1}
α : Type u_1
b✝ : Cardinal.{u_1}
β : Type u_1
c✝ : Cardinal.{u_1}
γ : Type u_1
hα : Quot.mk Setoid.r α ≠ 0
e : β ↪ γ
⊢ Quot.mk Setoid.r α ^ Quot.mk Setoid.r β ≤ Quot.mk Setoid.r α ^ Quot.mk Setoid.r γ

tactic: let ⟨a⟩ := mk_ne_zero_iff.1 hα
state_before: case mk.mk.mk.intro
α✝ β✝ : Type u
a✝ : Cardinal.{u_1}
α : Type u_1
b✝ : Cardinal.{u_1}
β : Type u_1
c✝ : Cardinal.{u_1}
γ : Type u_1
hα : Quot.mk Setoid.r α ≠ 0
e : β ↪ γ
⊢ Quot.mk Setoid.r α ^ Quot.mk Setoid.r β ≤ Quot.mk Setoid.r α ^ Quot.mk Setoid.r γ
state_after: case mk.mk.mk.intro
α✝ β✝ : Type u
a✝ : Cardinal.{u_1}
α : Type u_1
b✝ : Cardinal.{u_1}
β : Type u_1
c✝ : Cardinal.{u_1}
γ : Type u_1
hα : Quot.mk Setoid.r α ≠ 0
e : β ↪ γ
a : α
⊢ Quot.mk Setoid.r α ^ Quot.mk Setoid.r β ≤ Quot.mk Setoid.r α ^ Quot.mk Setoid.r γ

tactic: exact ⟨@Function.Embedding.arrowCongrLeft _ _ _ ⟨a⟩ e⟩
state_before: case mk.mk.mk.intro
α✝ β✝ : Type u
a✝ : Cardinal.{u_1}
α : Type u_1
b✝ : Cardinal.{u_1}
β : Type u_1
c✝ : Cardinal.{u_1}
γ : Type u_1
hα : Quot.mk Setoid.r α ≠ 0
e : β ↪ γ
a : α
⊢ Quot.mk Setoid.r α ^ Quot.mk Setoid.r β ≤ Quot.mk Setoid.r α ^ Quot.mk Setoid.r γ
state_after: no goals
Theorem: CategoryTheory.Sheaf.Subcanonical.of_yoneda_isSheaf
File: Mathlib/CategoryTheory/Sites/Canonical.lean

tactic: rintro P ⟨X, rfl⟩
state_before: C : Type u
inst✝ : Category.{v, u} C
P : Cᵒᵖ ⥤ Type v
X Y : C
S : Sieve X
R : Presieve X
J✝ J₂ J : GrothendieckTopology C
h : ∀ (X : C), Presieve.IsSheaf J (yoneda.obj X)
⊢ ∀ P ∈ Set.range yoneda.obj, Presieve.IsSheaf J P
state_after: case intro
C : Type u
inst✝ : Category.{v, u} C
P : Cᵒᵖ ⥤ Type v
X✝ Y : C
S : Sieve X✝
R : Presieve X✝
J✝ J₂ J : GrothendieckTopology C
h : ∀ (X : C), Presieve.IsSheaf J (yoneda.obj X)
X : C
⊢ Presieve.IsSheaf J (yoneda.obj X)

tactic: apply h
state_before: case intro
C : Type u
inst✝ : Category.{v, u} C
P : Cᵒᵖ ⥤ Type v
X✝ Y : C
S : Sieve X✝
R : Presieve X✝
J✝ J₂ J : GrothendieckTopology C
h : ∀ (X : C), Presieve.IsSheaf J (yoneda.obj X)
X : C
⊢ Presieve.IsSheaf J (yoneda.obj X)
state_after: no goals
Theorem: Finset.prod_preimage
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: classical rw [prod_preimage', prod_filter_of_ne]; exact fun x hx ↦ Not.imp_symm (hg x hx)
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g✝ : α → β
inst✝ : CommMonoid β
f : ι → κ
s : Finset κ
hf : Set.InjOn f (f ⁻¹' ↑s)
g : κ → β
hg : ∀ x ∈ s, x ∉ Set.range f → g x = 1
⊢ ∏ x ∈ s.preimage f hf, g (f x) = ∏ x ∈ s, g x
state_after: no goals

tactic: rw [prod_preimage', prod_filter_of_ne]
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g✝ : α → β
inst✝ : CommMonoid β
f : ι → κ
s : Finset κ
hf : Set.InjOn f (f ⁻¹' ↑s)
g : κ → β
hg : ∀ x ∈ s, x ∉ Set.range f → g x = 1
⊢ ∏ x ∈ s.preimage f hf, g (f x) = ∏ x ∈ s, g x
state_after: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g✝ : α → β
inst✝ : CommMonoid β
f : ι → κ
s : Finset κ
hf : Set.InjOn f (f ⁻¹' ↑s)
g : κ → β
hg : ∀ x ∈ s, x ∉ Set.range f → g x = 1
⊢ ∀ x ∈ s, g x ≠ 1 → x ∈ Set.range f

tactic: exact fun x hx ↦ Not.imp_symm (hg x hx)
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g✝ : α → β
inst✝ : CommMonoid β
f : ι → κ
s : Finset κ
hf : Set.InjOn f (f ⁻¹' ↑s)
g : κ → β
hg : ∀ x ∈ s, x ∉ Set.range f → g x = 1
⊢ ∀ x ∈ s, g x ≠ 1 → x ∈ Set.range f
state_after: no goals
Theorem: Real.log_lt_iff_lt_exp
File: Mathlib/Analysis/SpecialFunctions/Log/Basic.lean

tactic: rw [← exp_lt_exp, exp_log hx]
state_before: x y : ℝ
hx : 0 < x
⊢ log x < y ↔ x < rexp y
state_after: no goals
Theorem: ENNReal.rpow_le_one_of_one_le_of_neg
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

tactic: cases x
state_before: x : ℝ≥0∞
z : ℝ
hx : 1 ≤ x
hz : z < 0
⊢ x ^ z ≤ 1
state_after: case top
z : ℝ
hz : z < 0
hx : 1 ≤ ⊤
⊢ ⊤ ^ z ≤ 1

case coe
z : ℝ
hz : z < 0
x✝ : ℝ≥0
hx : 1 ≤ ↑x✝
⊢ ↑x✝ ^ z ≤ 1

tactic: simp [top_rpow_of_neg hz, zero_lt_one]
state_before: case top
z : ℝ
hz : z < 0
hx : 1 ≤ ⊤
⊢ ⊤ ^ z ≤ 1
state_after: no goals

tactic: simp only [one_le_coe_iff, some_eq_coe] at hx
state_before: case coe
z : ℝ
hz : z < 0
x✝ : ℝ≥0
hx : 1 ≤ ↑x✝
⊢ ↑x✝ ^ z ≤ 1
state_after: case coe
z : ℝ
hz : z < 0
x✝ : ℝ≥0
hx : 1 ≤ x✝
⊢ ↑x✝ ^ z ≤ 1

tactic: simp [coe_rpow_of_ne_zero (ne_of_gt (lt_of_lt_of_le zero_lt_one hx)),
  NNReal.rpow_le_one_of_one_le_of_nonpos hx (le_of_lt hz)]
state_before: case coe
z : ℝ
hz : z < 0
x✝ : ℝ≥0
hx : 1 ≤ x✝
⊢ ↑x✝ ^ z ≤ 1
state_after: no goals
Theorem: Finsupp.single_apply_mem
File: Mathlib/Data/Finsupp/Defs.lean

tactic: rcases em (a = x) with (rfl | hx) <;> [simp; simp [single_eq_of_ne hx]]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : Zero M
a a' : α
b : M
x : α
⊢ (single a b) x ∈ {0, b}
state_after: no goals
Theorem: Finset.wellFoundedOn_bUnion
File: Mathlib/Order/WellFoundedSet.lean

tactic: simpa only [Finset.sup_eq_iSup] using s.wellFoundedOn_sup
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
π : ι → Type u_5
r : α → α → Prop
inst✝ : IsStrictOrder α r
s : Finset ι
f : ι → Set α
⊢ (⋃ i ∈ s, f i).WellFoundedOn r ↔ ∀ i ∈ s, (f i).WellFoundedOn r
state_after: no goals
Theorem: smul_coe_set
File: Mathlib/Algebra/Group/Subgroup/Pointwise.lean

tactic: ext
state_before: α : Type u_1
G : Type u_2
A : Type u_3
S : Type u_4
inst✝² : Group G
inst✝¹ : SetLike S G
inst✝ : SubgroupClass S G
s : S
a : G
ha : a ∈ s
⊢ a • ↑s = ↑s
state_after: case h
α : Type u_1
G : Type u_2
A : Type u_3
S : Type u_4
inst✝² : Group G
inst✝¹ : SetLike S G
inst✝ : SubgroupClass S G
s : S
a : G
ha : a ∈ s
x✝ : G
⊢ x✝ ∈ a • ↑s ↔ x✝ ∈ ↑s

tactic: simp [Set.mem_smul_set_iff_inv_smul_mem, mul_mem_cancel_left, ha]
state_before: case h
α : Type u_1
G : Type u_2
A : Type u_3
S : Type u_4
inst✝² : Group G
inst✝¹ : SetLike S G
inst✝ : SubgroupClass S G
s : S
a : G
ha : a ∈ s
x✝ : G
⊢ x✝ ∈ a • ↑s ↔ x✝ ∈ ↑s
state_after: no goals
Theorem: FormalMultilinearSeries.nnnorm_changeOriginSeries_apply_le_tsum
File: Mathlib/Analysis/Analytic/Basic.lean

tactic: rw [NNReal.tsum_mul_right, ← Fin.prod_const]
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
x✝ y : E
r R : ℝ≥0
k l : ℕ
x : E
⊢ ‖(p.changeOriginSeries k l) fun x_1 => x‖₊ ≤ ∑' (x_1 : { s // s.card = l }), ‖p (k + l)‖₊ * ‖x‖₊ ^ l
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
x✝ y : E
r R : ℝ≥0
k l : ℕ
x : E
⊢ ‖(p.changeOriginSeries k l) fun x_1 => x‖₊ ≤ (∑' (x : { s // s.card = l }), ‖p (k + l)‖₊) * ∏ _i : Fin l, ‖x‖₊

tactic: exact (p.changeOriginSeries k l).le_of_opNNNorm_le _ (p.nnnorm_changeOriginSeries_le_tsum _ _)
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
x✝ y : E
r R : ℝ≥0
k l : ℕ
x : E
⊢ ‖(p.changeOriginSeries k l) fun x_1 => x‖₊ ≤ (∑' (x : { s // s.card = l }), ‖p (k + l)‖₊) * ∏ _i : Fin l, ‖x‖₊
state_after: no goals
Theorem: List.formPerm_apply_nthLe_length
File: Mathlib/GroupTheory/Perm/List.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l : List α
x✝ x : α
xs : List α
⊢ xs.length < (x :: xs).length
state_after: no goals

tactic: apply formPerm_apply_get_length
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l : List α
x✝ x : α
xs : List α
⊢ (x :: xs).formPerm ((x :: xs).nthLe xs.length ⋯) = x
state_after: no goals
Theorem: HurwitzKernelBounds.F_int_eq_of_mem_Icc
File: Mathlib/NumberTheory/ModularForms/JacobiTheta/Bounds.lean

tactic: simp only [F_int, F_nat, Function.Periodic.lift_coe]
state_before: k : ℕ
a : ℝ
ha : a ∈ Icc 0 1
t : ℝ
ht : 0 < t
⊢ F_int k (↑a) t = F_nat k a t + F_nat k (1 - a) t
state_after: k : ℕ
a : ℝ
ha : a ∈ Icc 0 1
t : ℝ
ht : 0 < t
⊢ ∑' (n : ℤ), f_int k a t n = ∑' (n : ℕ), f_nat k a t n + ∑' (n : ℕ), f_nat k (1 - a) t n

tactic: convert ((summable_f_nat k a ht).hasSum.int_rec (summable_f_nat k (1 - a) ht).hasSum).tsum_eq
  using 3 with n
state_before: k : ℕ
a : ℝ
ha : a ∈ Icc 0 1
t : ℝ
ht : 0 < t
⊢ ∑' (n : ℤ), f_int k a t n = ∑' (n : ℕ), f_nat k a t n + ∑' (n : ℕ), f_nat k (1 - a) t n
state_after: case h.e'_2.h.e'_5.h
k : ℕ
a : ℝ
ha : a ∈ Icc 0 1
t : ℝ
ht : 0 < t
n : ℤ
⊢ f_int k a t n = Int.rec (f_nat k a t) (f_nat k (1 - a) t) n

tactic: cases' n with m m
state_before: case h.e'_2.h.e'_5.h
k : ℕ
a : ℝ
ha : a ∈ Icc 0 1
t : ℝ
ht : 0 < t
n : ℤ
⊢ f_int k a t n = Int.rec (f_nat k a t) (f_nat k (1 - a) t) n
state_after: case h.e'_2.h.e'_5.h.ofNat
k : ℕ
a : ℝ
ha : a ∈ Icc 0 1
t : ℝ
ht : 0 < t
m : ℕ
⊢ f_int k a t (Int.ofNat m) = Int.rec (f_nat k a t) (f_nat k (1 - a) t) (Int.ofNat m)

case h.e'_2.h.e'_5.h.negSucc
k : ℕ
a : ℝ
ha : a ∈ Icc 0 1
t : ℝ
ht : 0 < t
m : ℕ
⊢ f_int k a t (Int.negSucc m) = Int.rec (f_nat k a t) (f_nat k (1 - a) t) (Int.negSucc m)

tactic: rw [f_int_ofNat _ ha.1]
state_before: case h.e'_2.h.e'_5.h.ofNat
k : ℕ
a : ℝ
ha : a ∈ Icc 0 1
t : ℝ
ht : 0 < t
m : ℕ
⊢ f_int k a t (Int.ofNat m) = Int.rec (f_nat k a t) (f_nat k (1 - a) t) (Int.ofNat m)
state_after: no goals

tactic: rw [f_int_negSucc _ ha.2]
state_before: case h.e'_2.h.e'_5.h.negSucc
k : ℕ
a : ℝ
ha : a ∈ Icc 0 1
t : ℝ
ht : 0 < t
m : ℕ
⊢ f_int k a t (Int.negSucc m) = Int.rec (f_nat k a t) (f_nat k (1 - a) t) (Int.negSucc m)
state_after: no goals
Theorem: openSegment_subset_iff_segment_subset
File: Mathlib/Analysis/Convex/Segment.lean

tactic: simp only [← insert_endpoints_openSegment, insert_subset_iff, *, true_and_iff]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝² : OrderedSemiring 𝕜
inst✝¹ : AddCommMonoid E
inst✝ : Module 𝕜 E
s : Set E
x y z : E
hx : x ∈ s
hy : y ∈ s
⊢ openSegment 𝕜 x y ⊆ s ↔ [x-[𝕜]y] ⊆ s
state_after: no goals
Theorem: Polynomial.subsingleton_iff_subsingleton
File: Mathlib/Algebra/Polynomial/Basic.lean

tactic: intro
state_before: R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
p q : R[X]
⊢ Subsingleton R → Subsingleton R[X]
state_after: R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
p q : R[X]
a✝ : Subsingleton R
⊢ Subsingleton R[X]

tactic: infer_instance
state_before: R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
p q : R[X]
a✝ : Subsingleton R
⊢ Subsingleton R[X]
state_after: no goals
Theorem: Nat.factorizationLCMLeft_zero_left
File: Mathlib/Data/Nat/Factorization/Basic.lean

tactic: simp [factorizationLCMLeft]
state_before: a b m n p : ℕ
⊢ factorizationLCMLeft 0 b = 1
state_after: no goals
Theorem: TensorProduct.finsuppScalarLeft_apply_tmul
File: Mathlib/LinearAlgebra/DirectSum/Finsupp.lean

tactic: ext i
state_before: R : Type u_1
inst✝⁹ : CommSemiring R
M : Type u_2
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
N : Type u_3
inst✝⁶ : AddCommMonoid N
inst✝⁵ : Module R N
ι : Type u_4
inst✝⁴ : DecidableEq ι
S : Type u_5
inst✝³ : CommSemiring S
inst✝² : Algebra R S
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
p : ι →₀ R
n : N
⊢ (finsuppScalarLeft R N ι) (p ⊗ₜ[R] n) = p.sum fun i m => Finsupp.single i (m • n)
state_after: case h
R : Type u_1
inst✝⁹ : CommSemiring R
M : Type u_2
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
N : Type u_3
inst✝⁶ : AddCommMonoid N
inst✝⁵ : Module R N
ι : Type u_4
inst✝⁴ : DecidableEq ι
S : Type u_5
inst✝³ : CommSemiring S
inst✝² : Algebra R S
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
p : ι →₀ R
n : N
i : ι
⊢ ((finsuppScalarLeft R N ι) (p ⊗ₜ[R] n)) i = (p.sum fun i m => Finsupp.single i (m • n)) i

tactic: rw [finsuppScalarLeft_apply_tmul_apply, Finsupp.sum_apply,
  Finsupp.sum_eq_single i (fun _ _ ↦ Finsupp.single_eq_of_ne) (by simp), Finsupp.single_eq_same]
state_before: case h
R : Type u_1
inst✝⁹ : CommSemiring R
M : Type u_2
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
N : Type u_3
inst✝⁶ : AddCommMonoid N
inst✝⁵ : Module R N
ι : Type u_4
inst✝⁴ : DecidableEq ι
S : Type u_5
inst✝³ : CommSemiring S
inst✝² : Algebra R S
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
p : ι →₀ R
n : N
i : ι
⊢ ((finsuppScalarLeft R N ι) (p ⊗ₜ[R] n)) i = (p.sum fun i m => Finsupp.single i (m • n)) i
state_after: no goals

tactic: simp
state_before: R : Type u_1
inst✝⁹ : CommSemiring R
M : Type u_2
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
N : Type u_3
inst✝⁶ : AddCommMonoid N
inst✝⁵ : Module R N
ι : Type u_4
inst✝⁴ : DecidableEq ι
S : Type u_5
inst✝³ : CommSemiring S
inst✝² : Algebra R S
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
p : ι →₀ R
n : N
i : ι
⊢ p i = 0 → (Finsupp.single i (0 • n)) i = 0
state_after: no goals
Theorem: ProbabilityTheory.kernel.comapRight_apply'
File: Mathlib/Probability/Kernel/Basic.lean

tactic: rw [comapRight_apply,
  Measure.comap_apply _ hf.injective (fun s => hf.measurableSet_image.mpr) _ ht]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ✝ : ↥(kernel α β)
γ : Type u_4
mγ : MeasurableSpace γ
f : γ → β
κ : ↥(kernel α β)
hf : MeasurableEmbedding f
a : α
t : Set γ
ht : MeasurableSet t
⊢ ((comapRight κ hf) a) t = (κ a) (f '' t)
state_after: no goals
Theorem: nnnorm_norm
File: Mathlib/Analysis/Normed/Field/Basic.lean

tactic: rw [Real.nnnorm_of_nonneg (norm_nonneg a)]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝ : SeminormedAddCommGroup α
a : α
⊢ ‖‖a‖‖₊ = ‖a‖₊
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝ : SeminormedAddCommGroup α
a : α
⊢ ⟨‖a‖, ⋯⟩ = ‖a‖₊

tactic: rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝ : SeminormedAddCommGroup α
a : α
⊢ ⟨‖a‖, ⋯⟩ = ‖a‖₊
state_after: no goals
Theorem: abs_add'
File: Mathlib/Algebra/Order/Group/Abs.lean

tactic: simpa using abs_add (-b) (b + a)
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
a✝ b✝ c d a b : α
⊢ |a| ≤ |b| + |b + a|
state_after: no goals
Theorem: associated_isUnit_mul_left_iff
File: Mathlib/Algebra/Associated.lean

tactic: rw [mul_comm]
state_before: α : Type u_1
β✝ : Type u_2
γ : Type u_3
δ : Type u_4
β : Type u_5
inst✝ : CommMonoid β
u a b : β
hu : IsUnit u
⊢ u * a ~ᵤ b ↔ a ~ᵤ b
state_after: α : Type u_1
β✝ : Type u_2
γ : Type u_3
δ : Type u_4
β : Type u_5
inst✝ : CommMonoid β
u a b : β
hu : IsUnit u
⊢ a * u ~ᵤ b ↔ a ~ᵤ b

tactic: exact associated_mul_isUnit_left_iff hu
state_before: α : Type u_1
β✝ : Type u_2
γ : Type u_3
δ : Type u_4
β : Type u_5
inst✝ : CommMonoid β
u a b : β
hu : IsUnit u
⊢ a * u ~ᵤ b ↔ a ~ᵤ b
state_after: no goals
Theorem: WittVector.out_truncateFun
File: Mathlib/RingTheory/WittVector/Truncated.lean

tactic: ext i
state_before: p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝ : CommRing R
x : 𝕎 R
⊢ (truncateFun n x).out = init n x
state_after: case h
p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝ : CommRing R
x : 𝕎 R
i : ℕ
⊢ (truncateFun n x).out.coeff i = (init n x).coeff i

tactic: dsimp [TruncatedWittVector.out, init, select, coeff_mk]
state_before: case h
p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝ : CommRing R
x : 𝕎 R
i : ℕ
⊢ (truncateFun n x).out.coeff i = (init n x).coeff i
state_after: case h
p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝ : CommRing R
x : 𝕎 R
i : ℕ
⊢ (if h : i < n then TruncatedWittVector.coeff ⟨i, h⟩ (truncateFun n x) else 0) = if i < n then x.coeff i else 0

tactic: split_ifs with hi
state_before: case h
p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝ : CommRing R
x : 𝕎 R
i : ℕ
⊢ (if h : i < n then TruncatedWittVector.coeff ⟨i, h⟩ (truncateFun n x) else 0) = if i < n then x.coeff i else 0
state_after: case pos
p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝ : CommRing R
x : 𝕎 R
i : ℕ
hi : i < n
⊢ TruncatedWittVector.coeff ⟨i, hi⟩ (truncateFun n x) = x.coeff i

case neg
p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝ : CommRing R
x : 𝕎 R
i : ℕ
hi : ¬i < n
⊢ 0 = 0

tactic: swap
state_before: case pos
p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝ : CommRing R
x : 𝕎 R
i : ℕ
hi : i < n
⊢ TruncatedWittVector.coeff ⟨i, hi⟩ (truncateFun n x) = x.coeff i

case neg
p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝ : CommRing R
x : 𝕎 R
i : ℕ
hi : ¬i < n
⊢ 0 = 0
state_after: case neg
p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝ : CommRing R
x : 𝕎 R
i : ℕ
hi : ¬i < n
⊢ 0 = 0

case pos
p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝ : CommRing R
x : 𝕎 R
i : ℕ
hi : i < n
⊢ TruncatedWittVector.coeff ⟨i, hi⟩ (truncateFun n x) = x.coeff i

tactic: rw [coeff_truncateFun, Fin.val_mk]
state_before: case pos
p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝ : CommRing R
x : 𝕎 R
i : ℕ
hi : i < n
⊢ TruncatedWittVector.coeff ⟨i, hi⟩ (truncateFun n x) = x.coeff i
state_after: no goals

tactic: rfl
state_before: case neg
p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝ : CommRing R
x : 𝕎 R
i : ℕ
hi : ¬i < n
⊢ 0 = 0
state_after: no goals