ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: dite_smul
File: Mathlib/Algebra/Group/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝¹ : Pow α β
p : Prop
inst✝ : Decidable p
a : α
b : p → β
c : ¬p → β
⊢ (a ^ if h : p then b h else c h) = if h : p then a ^ b h else a ^ c h
state_after: no goals
tactic: split_ifs <;> rfl
Theorem: CategoryTheory.NatIso.cancel_natIso_inv_right
File: Mathlib/CategoryTheory/NatIso.lean

Proof steps:
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u₃
inst✝ : Category.{v₃, u₃} E
F G : C ⥤ D
α : F ≅ G
X : D
Y : C
f f' : X ⟶ G.obj Y
⊢ f ≫ α.inv.app Y = f' ≫ α.inv.app Y ↔ f = f'
state_after: no goals
tactic: simp only [cancel_mono, refl]
Theorem: Zsqrtd.smul_val
File: Mathlib/NumberTheory/Zsqrtd/Basic.lean

Proof steps:
state_before: d n x y : ℤ
⊢ ↑n * { re := x, im := y } = { re := n * x, im := n * y }
state_after: no goals
tactic: ext <;> simp
Theorem: Matrix.fromBlocks_smul
File: Mathlib/Data/Matrix/Block.lean

Proof steps:
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝ : SMul R α
x : R
A : Matrix n l α
B : Matrix n m α
C : Matrix o l α
D : Matrix o m α
⊢ x • fromBlocks A B C D = fromBlocks (x • A) (x • B) (x • C) (x • D)
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝ : SMul R α
x : R
A : Matrix n l α
B : Matrix n m α
C : Matrix o l α
D : Matrix o m α
i : n ⊕ o
j : l ⊕ m
⊢ (x • fromBlocks A B C D) i j = fromBlocks (x • A) (x • B) (x • C) (x • D) i j
tactic: ext i j
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝ : SMul R α
x : R
A : Matrix n l α
B : Matrix n m α
C : Matrix o l α
D : Matrix o m α
i : n ⊕ o
j : l ⊕ m
⊢ (x • fromBlocks A B C D) i j = fromBlocks (x • A) (x • B) (x • C) (x • D) i j
state_after: no goals
tactic: rcases i with ⟨⟩ <;> rcases j with ⟨⟩ <;> simp [fromBlocks]
Theorem: Basis.baseChange_apply
File: Mathlib/LinearAlgebra/TensorProduct/Basis.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
M : Type u_3
N : Type u_4
ι : Type u_5
κ : Type u_6
inst✝⁸ : CommSemiring R
inst✝⁷ : Semiring S
inst✝⁶ : Algebra R S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : Module S M
inst✝² : IsScalarTower R S M
inst✝¹ : AddCommMonoid N
inst✝ : Module R N
b : Basis ι R M
i : ι
⊢ (baseChange S b) i = 1 ⊗ₜ[R] b i
state_after: no goals
tactic: simp [Basis.baseChange, Basis.tensorProduct]
Theorem: geom_sum_Ico'
File: Mathlib/Algebra/GeomSum.lean

Proof steps:
state_before: α : Type u
inst✝ : DivisionRing α
x : α
hx : x ≠ 1
m n : ℕ
hmn : m ≤ n
⊢ ∑ i ∈ Ico m n, x ^ i = (x ^ m - x ^ n) / (1 - x)
state_after: α : Type u
inst✝ : DivisionRing α
x : α
hx : x ≠ 1
m n : ℕ
hmn : m ≤ n
⊢ (x ^ n - x ^ m) / (x - 1) = (x ^ m - x ^ n) / (1 - x)
tactic: simp only [geom_sum_Ico hx hmn]
state_before: α : Type u
inst✝ : DivisionRing α
x : α
hx : x ≠ 1
m n : ℕ
hmn : m ≤ n
⊢ (x ^ n - x ^ m) / (x - 1) = (x ^ m - x ^ n) / (1 - x)
state_after: no goals
tactic: convert neg_div_neg_eq (x ^ m - x ^ n) (1 - x) using 2 <;> abel
Theorem: MulAction.IsBlock.subgroup
File: Mathlib/GroupTheory/GroupAction/Blocks.lean

Proof steps:
state_before: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
H : Subgroup G
B : Set X
hfB : IsBlock G B
⊢ IsBlock (↥H) B
state_after: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
H : Subgroup G
B : Set X
hfB : IsBlock G B
⊢ ∀ (g : ↥H), g • B = B ∨ Disjoint (g • B) B
tactic: rw [IsBlock.def_one]
state_before: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
H : Subgroup G
B : Set X
hfB : IsBlock G B
⊢ ∀ (g : ↥H), g • B = B ∨ Disjoint (g • B) B
state_after: case mk
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
H : Subgroup G
B : Set X
hfB : IsBlock G B
g : G
property✝ : g ∈ H
⊢ ⟨g, property✝⟩ • B = B ∨ Disjoint (⟨g, property✝⟩ • B) B
tactic: rintro ⟨g, _⟩
state_before: case mk
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
H : Subgroup G
B : Set X
hfB : IsBlock G B
g : G
property✝ : g ∈ H
⊢ ⟨g, property✝⟩ • B = B ∨ Disjoint (⟨g, property✝⟩ • B) B
state_after: no goals
tactic: simpa only using hfB.smul_eq_or_disjoint g
Theorem: Nat.findGreatest_eq_zero_iff
File: Mathlib/Data/Nat/Find.lean

Proof steps:
state_before: a b c d m n✝ k : ℕ
p q P Q : ℕ → Prop
inst✝ : DecidablePred P
n : ℕ
⊢ findGreatest P k = 0 ↔ ∀ ⦃n : ℕ⦄, 0 < n → n ≤ k → ¬P n
state_after: no goals
tactic: simp [findGreatest_eq_iff]
Theorem: sup_sup_distrib_right
File: Mathlib/Order/Lattice.lean

Proof steps:
state_before: α : Type u
β : Type v
inst✝ : SemilatticeSup α
a✝ b✝ c✝ d a b c : α
⊢ a ⊔ b ⊔ c = a ⊔ c ⊔ (b ⊔ c)
state_after: no goals
tactic: rw [sup_sup_sup_comm, sup_idem]
Theorem: MeasureTheory.Measure.toSignedMeasure_toMeasureOfZeroLE
File: Mathlib/MeasureTheory/Measure/VectorMeasure.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : IsFiniteMeasure μ
⊢ μ.toSignedMeasure.toMeasureOfZeroLE univ ⋯ ⋯ = μ
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : IsFiniteMeasure μ
i : Set α
hi : MeasurableSet i
⊢ (μ.toSignedMeasure.toMeasureOfZeroLE univ ⋯ ⋯) i = μ i
tactic: refine Measure.ext fun i hi => ?_
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : IsFiniteMeasure μ
i : Set α
hi : MeasurableSet i
⊢ (μ.toSignedMeasure.toMeasureOfZeroLE univ ⋯ ⋯) i = μ i
state_after: case intro
α : Type u_1
β : Type u_2
m✝ : MeasurableSpace α
μ : Measure α
inst✝ : IsFiniteMeasure μ
i : Set α
hi : MeasurableSet i
m : ℝ≥0
hm : ↑m = μ i
⊢ (μ.toSignedMeasure.toMeasureOfZeroLE univ ⋯ ⋯) i = ↑m
tactic: lift μ i to ℝ≥0 using (measure_lt_top _ _).ne with m hm
state_before: case intro
α : Type u_1
β : Type u_2
m✝ : MeasurableSpace α
μ : Measure α
inst✝ : IsFiniteMeasure μ
i : Set α
hi : MeasurableSet i
m : ℝ≥0
hm : ↑m = μ i
⊢ (μ.toSignedMeasure.toMeasureOfZeroLE univ ⋯ ⋯) i = ↑m
state_after: case intro
α : Type u_1
β : Type u_2
m✝ : MeasurableSpace α
μ : Measure α
inst✝ : IsFiniteMeasure μ
i : Set α
hi : MeasurableSet i
m : ℝ≥0
hm : ↑m = μ i
⊢ ⟨↑μ.toSignedMeasure (univ ∩ i), ⋯⟩ = m
tactic: rw [SignedMeasure.toMeasureOfZeroLE_apply _ _ _ hi, ENNReal.coe_inj]
state_before: case intro
α : Type u_1
β : Type u_2
m✝ : MeasurableSpace α
μ : Measure α
inst✝ : IsFiniteMeasure μ
i : Set α
hi : MeasurableSet i
m : ℝ≥0
hm : ↑m = μ i
⊢ ⟨↑μ.toSignedMeasure (univ ∩ i), ⋯⟩ = m
state_after: case intro.e_val
α : Type u_1
β : Type u_2
m✝ : MeasurableSpace α
μ : Measure α
inst✝ : IsFiniteMeasure μ
i : Set α
hi : MeasurableSet i
m : ℝ≥0
hm : ↑m = μ i
⊢ ↑μ.toSignedMeasure (univ ∩ i) = ↑m
tactic: congr
state_before: case intro.e_val
α : Type u_1
β : Type u_2
m✝ : MeasurableSpace α
μ : Measure α
inst✝ : IsFiniteMeasure μ
i : Set α
hi : MeasurableSet i
m : ℝ≥0
hm : ↑m = μ i
⊢ ↑μ.toSignedMeasure (univ ∩ i) = ↑m
state_after: no goals
tactic: simp [hi, ← hm]
Theorem: Set.disjoint_toFinset
File: Mathlib/Data/Fintype/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s t : Set α
inst✝¹ : Fintype ↑s
inst✝ : Fintype ↑t
⊢ Disjoint s.toFinset t.toFinset ↔ Disjoint s t
state_after: no goals
tactic: simp only [← disjoint_coe, coe_toFinset]
Theorem: List.kreplace_self
File: Mathlib/Data/List/Sigma.lean

Proof steps:
state_before: α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
b : β a
l : List (Sigma β)
nd : l.NodupKeys
h : ⟨a, b⟩ ∈ l
⊢ kreplace a b l = l
state_after: case refine_1
α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
b : β a
l : List (Sigma β)
nd : l.NodupKeys
h : ⟨a, b⟩ ∈ l
⊢ ∀ a_1 ∈ l, (if a = a_1.fst then some ⟨a, b⟩ else none) = Option.guard (fun s => a = s.fst) a_1

case refine_2
α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
b : β a
l : List (Sigma β)
nd : l.NodupKeys
h : ⟨a, b⟩ ∈ l
⊢ ∀ (a_1 b : Sigma β), b ∈ Option.guard (fun s => a = s.fst) a_1 → a_1 = b
tactic: refine (lookmap_congr ?_).trans (lookmap_id' (Option.guard fun (s : Sigma β) => a = s.1) ?_ _)
Theorem: Subgroup.Normal.conj_mem'
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

Proof steps:
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝³ : Group G
inst✝² : Group G'
inst✝¹ : Group G''
A : Type u_4
inst✝ : AddGroup A
H K : Subgroup G
nH : H.Normal
n : G
hn : n ∈ H
g : G
⊢ g⁻¹ * n * g ∈ H
state_after: case h.e'_4.h.e'_6
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝³ : Group G
inst✝² : Group G'
inst✝¹ : Group G''
A : Type u_4
inst✝ : AddGroup A
H K : Subgroup G
nH : H.Normal
n : G
hn : n ∈ H
g : G
⊢ g = g⁻¹⁻¹
tactic: convert nH.conj_mem n hn g⁻¹
state_before: case h.e'_4.h.e'_6
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝³ : Group G
inst✝² : Group G'
inst✝¹ : Group G''
A : Type u_4
inst✝ : AddGroup A
H K : Subgroup G
nH : H.Normal
n : G
hn : n ∈ H
g : G
⊢ g = g⁻¹⁻¹
state_after: no goals
tactic: rw [inv_inv]
Theorem: RCLike.neg_iff_exists_ofReal
File: Mathlib/Analysis/RCLike/Basic.lean

Proof steps:
state_before: K : Type u_1
E : Type u_2
inst✝ : RCLike K
z w : K
⊢ z < 0 ↔ ∃ x < 0, ↑x = z
state_after: K : Type u_1
E : Type u_2
inst✝ : RCLike K
z w : K
⊢ re z < 0 ∧ im z = 0 ↔ ∃ x < 0, re ↑x = re z ∧ im ↑x = im z
tactic: simp_rw [neg_iff (K := K), ext_iff (K := K)]
state_before: K : Type u_1
E : Type u_2
inst✝ : RCLike K
z w : K
⊢ re z < 0 ∧ im z = 0 ↔ ∃ x < 0, re ↑x = re z ∧ im ↑x = im z
state_after: no goals
tactic: aesop
Theorem: List.range'_sublist_right
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

Proof steps:
state_before: step s m n : Nat
h : range' s m step <+ range' s n step
⊢ m ≤ n
state_after: no goals
tactic: simpa only [length_range'] using h.length_le
state_before: step s m n : Nat
h : m ≤ n
⊢ range' s m step <+ range' s n step
state_after: step s m n : Nat
h : m ≤ n
⊢ range' s m step <+ range' s m step ++ range' (s + step * m) (n - m) step
tactic: rw [← Nat.sub_add_cancel h, ← range'_append]
state_before: step s m n : Nat
h : m ≤ n
⊢ range' s m step <+ range' s m step ++ range' (s + step * m) (n - m) step
state_after: no goals
tactic: apply sublist_append_left
Theorem: Path.Homotopic.projRight_prod
File: Mathlib/Topology/Homotopy/Product.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
a₁ a₂ a₃ : α
b₁ b₂ b₃ : β
p₁ p₁' : Path a₁ a₂
p₂ p₂' : Path b₁ b₂
q₁ : Homotopic.Quotient a₁ a₂
q₂ : Homotopic.Quotient b₁ b₂
r₁ : Homotopic.Quotient a₂ a₃
r₂ : Homotopic.Quotient b₂ b₃
c₁ c₂ : α × β
⊢ projRight (prod q₁ q₂) = q₂
state_after: case h
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
a₁ a₂ a₃ : α
b₁ b₂ b₃ : β
p₁ p₁' : Path a₁ a₂
p₂ p₂' : Path b₁ b₂
q₁ : Homotopic.Quotient a₁ a₂
q₂ : Homotopic.Quotient b₁ b₂
r₁ : Homotopic.Quotient a₂ a₃
r₂ : Homotopic.Quotient b₂ b₃
c₁ c₂ : α × β
a✝ : Path a₁ a₂
b✝ : Path b₁ b₂
⊢ projRight (prod ⟦a✝⟧ ⟦b✝⟧) = ⟦b✝⟧
tactic: induction q₁, q₂ using Quotient.inductionOn₂
state_before: case h
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
a₁ a₂ a₃ : α
b₁ b₂ b₃ : β
p₁ p₁' : Path a₁ a₂
p₂ p₂' : Path b₁ b₂
q₁ : Homotopic.Quotient a₁ a₂
q₂ : Homotopic.Quotient b₁ b₂
r₁ : Homotopic.Quotient a₂ a₃
r₂ : Homotopic.Quotient b₂ b₃
c₁ c₂ : α × β
a✝ : Path a₁ a₂
b✝ : Path b₁ b₂
⊢ projRight (prod ⟦a✝⟧ ⟦b✝⟧) = ⟦b✝⟧
state_after: case h
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
a₁ a₂ a₃ : α
b₁ b₂ b₃ : β
p₁ p₁' : Path a₁ a₂
p₂ p₂' : Path b₁ b₂
q₁ : Homotopic.Quotient a₁ a₂
q₂ : Homotopic.Quotient b₁ b₂
r₁ : Homotopic.Quotient a₂ a₃
r₂ : Homotopic.Quotient b₂ b₃
c₁ c₂ : α × β
a✝ : Path a₁ a₂
b✝ : Path b₁ b₂
⊢ ⟦(a✝.prod b✝).map ⋯⟧ = ⟦b✝⟧
tactic: rw [projRight, prod_lift, ← Path.Homotopic.map_lift]
state_before: case h
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
a₁ a₂ a₃ : α
b₁ b₂ b₃ : β
p₁ p₁' : Path a₁ a₂
p₂ p₂' : Path b₁ b₂
q₁ : Homotopic.Quotient a₁ a₂
q₂ : Homotopic.Quotient b₁ b₂
r₁ : Homotopic.Quotient a₂ a₃
r₂ : Homotopic.Quotient b₂ b₃
c₁ c₂ : α × β
a✝ : Path a₁ a₂
b✝ : Path b₁ b₂
⊢ ⟦(a✝.prod b✝).map ⋯⟧ = ⟦b✝⟧
state_after: no goals
tactic: congr
Theorem: Polynomial.dickson_one_one_eval_add_inv
File: Mathlib/RingTheory/Polynomial/Dickson.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
k : ℕ
a x y : R
h : x * y = 1
⊢ eval (x + y) (dickson 1 1 0) = x ^ 0 + y ^ 0
state_after: R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
k : ℕ
a x y : R
h : x * y = 1
⊢ eval (x + y) (3 - ↑1) = 1 + 1
tactic: simp only [eval_one, eval_add, pow_zero, dickson_zero]
state_before: R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
k : ℕ
a x y : R
h : x * y = 1
⊢ eval (x + y) (3 - ↑1) = 1 + 1
state_after: no goals
tactic: norm_num
state_before: R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
k : ℕ
a x y : R
h : x * y = 1
⊢ eval (x + y) (dickson 1 1 1) = x ^ 1 + y ^ 1
state_after: no goals
tactic: simp only [eval_X, dickson_one, pow_one]
state_before: R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
k : ℕ
a x y : R
h : x * y = 1
n : ℕ
⊢ eval (x + y) (dickson 1 1 (n + 2)) = x ^ (n + 2) + y ^ (n + 2)
state_after: R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
k : ℕ
a x y : R
h : x * y = 1
n : ℕ
⊢ (x + y) * (x ^ (n + 1) + y ^ (n + 1)) - 1 * (x ^ n + y ^ n) = x ^ (n + 2) + y ^ (n + 2)
tactic: simp only [eval_sub, eval_mul, dickson_one_one_eval_add_inv x y h _, eval_X, dickson_add_two,
      C_1, eval_one]
state_before: R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
k : ℕ
a x y : R
h : x * y = 1
n : ℕ
⊢ (x + y) * (x ^ (n + 1) + y ^ (n + 1)) - 1 * (x ^ n + y ^ n) = x ^ (n + 2) + y ^ (n + 2)
state_after: R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
k : ℕ
a x y : R
h : x * y = 1
n : ℕ
⊢ x * x * x ^ n + x ^ n + (y ^ n + y * y * y ^ n) - (x ^ n + y ^ n) = x ^ (n + 2) + y ^ (n + 2)
tactic: conv_lhs => simp only [pow_succ', add_mul, mul_add, h, ← mul_assoc, mul_comm y x, one_mul]
state_before: R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
k : ℕ
a x y : R
h : x * y = 1
n : ℕ
⊢ x * x * x ^ n + x ^ n + (y ^ n + y * y * y ^ n) - (x ^ n + y ^ n) = x ^ (n + 2) + y ^ (n + 2)
state_after: no goals
tactic: ring
Theorem: Nat.add_sub_sub_cancel
File: Mathlib/Data/Nat/Defs.lean

Proof steps:
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
h : c ≤ a
⊢ a + b - (a - c) = b + c
state_after: no goals
tactic: omega
Theorem: AffineIsometryEquiv.dist_pointReflection_self_real
File: Mathlib/Analysis/NormedSpace/AffineIsometry.lean

Proof steps:
state_before: 𝕜 : Type u_1
V : Type u_2
V₁ : Type u_3
V₁' : Type u_4
V₂ : Type u_5
V₃ : Type u_6
V₄ : Type u_7
P₁ : Type u_8
P₁' : Type u_9
P : Type u_10
P₂ : Type u_11
P₃ : Type u_12
P₄ : Type u_13
inst✝²⁶ : NormedField 𝕜
inst✝²⁵ : SeminormedAddCommGroup V
inst✝²⁴ : NormedSpace 𝕜 V
inst✝²³ : PseudoMetricSpace P
inst✝²² : NormedAddTorsor V P
inst✝²¹ : SeminormedAddCommGroup V₁
inst✝²⁰ : NormedSpace 𝕜 V₁
inst✝¹⁹ : PseudoMetricSpace P₁
inst✝¹⁸ : NormedAddTorsor V₁ P₁
inst✝¹⁷ : SeminormedAddCommGroup V₁'
inst✝¹⁶ : NormedSpace 𝕜 V₁'
inst✝¹⁵ : MetricSpace P₁'
inst✝¹⁴ : NormedAddTorsor V₁' P₁'
inst✝¹³ : SeminormedAddCommGroup V₂
inst✝¹² : NormedSpace 𝕜 V₂
inst✝¹¹ : PseudoMetricSpace P₂
inst✝¹⁰ : NormedAddTorsor V₂ P₂
inst✝⁹ : SeminormedAddCommGroup V₃
inst✝⁸ : NormedSpace 𝕜 V₃
inst✝⁷ : PseudoMetricSpace P₃
inst✝⁶ : NormedAddTorsor V₃ P₃
inst✝⁵ : SeminormedAddCommGroup V₄
inst✝⁴ : NormedSpace 𝕜 V₄
inst✝³ : PseudoMetricSpace P₄
inst✝² : NormedAddTorsor V₄ P₄
e : P ≃ᵃⁱ[𝕜] P₂
α : Type u_14
inst✝¹ : TopologicalSpace α
inst✝ : NormedSpace ℝ V
x y : P
⊢ dist ((pointReflection ℝ x) y) y = 2 * dist x y
state_after: no goals
tactic: rw [dist_pointReflection_self, Real.norm_two]
Theorem: NNReal.summable_sigma
File: Mathlib/Topology/Instances/ENNReal.lean

Proof steps:
state_before: α : Type u_1
β✝ : Type u_2
γ : Type u_3
β : α → Type u_4
f : (x : α) × β x → ℝ≥0
⊢ Summable f ↔ (∀ (x : α), Summable fun y => f ⟨x, y⟩) ∧ Summable fun x => ∑' (y : β x), f ⟨x, y⟩
state_after: case mp
α : Type u_1
β✝ : Type u_2
γ : Type u_3
β : α → Type u_4
f : (x : α) × β x → ℝ≥0
⊢ Summable f → (∀ (x : α), Summable fun y => f ⟨x, y⟩) ∧ Summable fun x => ∑' (y : β x), f ⟨x, y⟩

case mpr
α : Type u_1
β✝ : Type u_2
γ : Type u_3
β : α → Type u_4
f : (x : α) × β x → ℝ≥0
⊢ ((∀ (x : α), Summable fun y => f ⟨x, y⟩) ∧ Summable fun x => ∑' (y : β x), f ⟨x, y⟩) → Summable f
tactic: constructor
Theorem: Finset.sum_pow_eq_sum_piAntidiag
File: Mathlib/Data/Nat/Choose/Multinomial.lean

Proof steps:
state_before: α : Type u_1
R : Type u_2
inst✝¹ : DecidableEq α
inst✝ : CommSemiring R
f✝ : α → R
s✝ s : Finset α
f : α → R
n : ℕ
⊢ (∑ i ∈ s, f i) ^ n = ∑ k ∈ s.piAntidiag n, ↑(multinomial s k) * ∏ i ∈ s, f i ^ k i
state_after: α : Type u_1
R : Type u_2
inst✝¹ : DecidableEq α
inst✝ : CommSemiring R
f✝ : α → R
s✝ s : Finset α
f : α → R
n : ℕ
⊢ (∑ i ∈ s, f i) ^ n = ∑ x ∈ s.piAntidiag n, ↑(multinomial s x) * s.noncommProd (fun i => f i ^ x i) ⋯
tactic: simp_rw [← noncommProd_eq_prod]
state_before: α : Type u_1
R : Type u_2
inst✝¹ : DecidableEq α
inst✝ : CommSemiring R
f✝ : α → R
s✝ s : Finset α
f : α → R
n : ℕ
⊢ (∑ i ∈ s, f i) ^ n = ∑ x ∈ s.piAntidiag n, ↑(multinomial s x) * s.noncommProd (fun i => f i ^ x i) ⋯
state_after: no goals
tactic: rw [← sum_pow_eq_sum_piAntidiag_of_commute _ _ fun _ _ _ _ _ ↦ Commute.all ..]
Theorem: MultilinearMap.alternatization_apply
File: Mathlib/LinearAlgebra/Alternating/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝¹² : Semiring R
M : Type u_2
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
N : Type u_3
inst✝⁹ : AddCommMonoid N
inst✝⁸ : Module R N
P : Type u_4
inst✝⁷ : AddCommMonoid P
inst✝⁶ : Module R P
M' : Type u_5
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
N' : Type u_6
inst✝³ : AddCommGroup N'
inst✝² : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
m : MultilinearMap R (fun x => M) N'
v : ι → M
⊢ (alternatization m) v = ∑ σ : Perm ι, Perm.sign σ • (domDomCongr σ m) v
state_after: no goals
tactic: simp only [alternatization_def, smul_apply, sum_apply]
Theorem: Module.AEval.mapSubmodule_comapSubmodule
File: Mathlib/Algebra/Polynomial/Module/AEval.lean

Proof steps:
state_before: R : Type u_2
A : Type u_3
M : Type u_1
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring A
a : A
inst✝⁴ : Algebra R A
inst✝³ : AddCommMonoid M
inst✝² : Module A M
inst✝¹ : Module R M
inst✝ : IsScalarTower R A M
p : Submodule R M
hp : p ≤ Submodule.comap ((Algebra.lsmul R R M) a) p
q : Submodule R[X] (AEval R M a)
h : optParam ((comapSubmodule R M a) q ≤ Submodule.comap ((Algebra.lsmul R R M) a) ((comapSubmodule R M a) q)) ⋯
⊢ mapSubmodule a h = q
state_after: case h
R : Type u_2
A : Type u_3
M : Type u_1
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring A
a : A
inst✝⁴ : Algebra R A
inst✝³ : AddCommMonoid M
inst✝² : Module A M
inst✝¹ : Module R M
inst✝ : IsScalarTower R A M
p : Submodule R M
hp : p ≤ Submodule.comap ((Algebra.lsmul R R M) a) p
q : Submodule R[X] (AEval R M a)
h : optParam ((comapSubmodule R M a) q ≤ Submodule.comap ((Algebra.lsmul R R M) a) ((comapSubmodule R M a) q)) ⋯
x✝ : AEval R M a
⊢ x✝ ∈ mapSubmodule a h ↔ x✝ ∈ q
tactic: ext
state_before: case h
R : Type u_2
A : Type u_3
M : Type u_1
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring A
a : A
inst✝⁴ : Algebra R A
inst✝³ : AddCommMonoid M
inst✝² : Module A M
inst✝¹ : Module R M
inst✝ : IsScalarTower R A M
p : Submodule R M
hp : p ≤ Submodule.comap ((Algebra.lsmul R R M) a) p
q : Submodule R[X] (AEval R M a)
h : optParam ((comapSubmodule R M a) q ≤ Submodule.comap ((Algebra.lsmul R R M) a) ((comapSubmodule R M a) q)) ⋯
x✝ : AEval R M a
⊢ x✝ ∈ mapSubmodule a h ↔ x✝ ∈ q
state_after: no goals
tactic: simp
Theorem: CategoryTheory.preserves_desc_mapCocone
File: Mathlib/CategoryTheory/Limits/Preserves/Limits.lean

Proof steps:
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
G : C ⥤ D
J : Type w
inst✝¹ : Category.{w', w} J
F : J ⥤ C
inst✝ : PreservesColimit F G
c₁ c₂ : Cocone F
t : IsColimit c₁
⊢ ∀ (j : J), (G.mapCocone c₁).ι.app j ≫ G.map (t.desc c₂) = (G.mapCocone c₂).ι.app j
state_after: no goals
tactic: simp [← G.map_comp]
Theorem: Equiv.Perm.SameCycle.symm
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
p : α → Prop
x y z : α
x✝ : f.SameCycle x y
i : ℤ
hi : (f ^ i) x = y
⊢ (f ^ (-i)) y = x
state_after: no goals
tactic: rw [zpow_neg, ← hi, inv_apply_self]
Theorem: Seminorm.cont_normedSpace_to_withSeminorms
File: Mathlib/Analysis/LocallyConvex/WithSeminorms.lean

Proof steps:
state_before: 𝕜 : Type u_1
𝕜₂ : Type u_2
𝕝 : Type u_3
𝕝₂ : Type u_4
E✝ : Type u_5
F : Type u_6
G : Type u_7
ι : Type u_8
ι' : Type u_9
inst✝¹⁶ : NontriviallyNormedField 𝕜
inst✝¹⁵ : AddCommGroup E✝
inst✝¹⁴ : Module 𝕜 E✝
inst✝¹³ : NormedField 𝕝
inst✝¹² : Module 𝕝 E✝
inst✝¹¹ : NontriviallyNormedField 𝕜₂
inst✝¹⁰ : AddCommGroup F
inst✝⁹ : Module 𝕜₂ F
inst✝⁸ : NormedField 𝕝₂
inst✝⁷ : Module 𝕝₂ F
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝⁶ : RingHomIsometric σ₁₂
τ₁₂ : 𝕝 →+* 𝕝₂
inst✝⁵ : RingHomIsometric τ₁₂
inst✝⁴ : Nonempty ι
inst✝³ : Nonempty ι'
E : Type u_10
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕝 E
inst✝ : TopologicalSpace F
q : ι → Seminorm 𝕝₂ F
hq : WithSeminorms q
f : E →ₛₗ[τ₁₂] F
hf : ∀ (i : ι), ∃ C, (q i).comp f ≤ C • normSeminorm 𝕝 E
⊢ Continuous ⇑f
state_after: 𝕜 : Type u_1
𝕜₂ : Type u_2
𝕝 : Type u_3
𝕝₂ : Type u_4
E✝ : Type u_5
F : Type u_6
G : Type u_7
ι : Type u_8
ι' : Type u_9
inst✝¹⁶ : NontriviallyNormedField 𝕜
inst✝¹⁵ : AddCommGroup E✝
inst✝¹⁴ : Module 𝕜 E✝
inst✝¹³ : NormedField 𝕝
inst✝¹² : Module 𝕝 E✝
inst✝¹¹ : NontriviallyNormedField 𝕜₂
inst✝¹⁰ : AddCommGroup F
inst✝⁹ : Module 𝕜₂ F
inst✝⁸ : NormedField 𝕝₂
inst✝⁷ : Module 𝕝₂ F
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝⁶ : RingHomIsometric σ₁₂
τ₁₂ : 𝕝 →+* 𝕝₂
inst✝⁵ : RingHomIsometric τ₁₂
inst✝⁴ : Nonempty ι
inst✝³ : Nonempty ι'
E : Type u_10
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕝 E
inst✝ : TopologicalSpace F
q : ι → Seminorm 𝕝₂ F
hq : WithSeminorms q
f : E →ₛₗ[τ₁₂] F
hf : IsBounded (fun x => normSeminorm 𝕝 E) q f
⊢ Continuous ⇑f
tactic: rw [← Seminorm.const_isBounded (Fin 1)] at hf
state_before: 𝕜 : Type u_1
𝕜₂ : Type u_2
𝕝 : Type u_3
𝕝₂ : Type u_4
E✝ : Type u_5
F : Type u_6
G : Type u_7
ι : Type u_8
ι' : Type u_9
inst✝¹⁶ : NontriviallyNormedField 𝕜
inst✝¹⁵ : AddCommGroup E✝
inst✝¹⁴ : Module 𝕜 E✝
inst✝¹³ : NormedField 𝕝
inst✝¹² : Module 𝕝 E✝
inst✝¹¹ : NontriviallyNormedField 𝕜₂
inst✝¹⁰ : AddCommGroup F
inst✝⁹ : Module 𝕜₂ F
inst✝⁸ : NormedField 𝕝₂
inst✝⁷ : Module 𝕝₂ F
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝⁶ : RingHomIsometric σ₁₂
τ₁₂ : 𝕝 →+* 𝕝₂
inst✝⁵ : RingHomIsometric τ₁₂
inst✝⁴ : Nonempty ι
inst✝³ : Nonempty ι'
E : Type u_10
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕝 E
inst✝ : TopologicalSpace F
q : ι → Seminorm 𝕝₂ F
hq : WithSeminorms q
f : E →ₛₗ[τ₁₂] F
hf : IsBounded (fun x => normSeminorm 𝕝 E) q f
⊢ Continuous ⇑f
state_after: no goals
tactic: exact continuous_from_bounded (norm_withSeminorms 𝕝 E) hq f hf