ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Algebra.FormallyUnramified.one_tmul_mul_elem
File: Mathlib/RingTheory/Unramified/Finite.lean

Proof steps:
state_before: R S : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : CommRing S
inst✝⁶ : Algebra R S
M : Type u_1
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Module S M
inst✝² : IsScalarTower R S M
inst✝¹ : FormallyUnramified R S
inst✝ : EssFiniteType R S
s : S
⊢ 1 ⊗ₜ[R] s * elem R S = s ⊗ₜ[R] 1 * elem R S
state_after: no goals
tactic: rw [← sub_eq_zero, ← sub_mul, one_tmul_sub_tmul_one_mul_elem]
Theorem: Matrix.one_mulVec
File: Mathlib/Data/Matrix/Basic.lean

Proof steps:
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝³ : NonAssocSemiring α
inst✝² : Fintype m
inst✝¹ : Fintype n
inst✝ : DecidableEq m
v : m → α
⊢ 1 *ᵥ v = v
state_after: case h
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝³ : NonAssocSemiring α
inst✝² : Fintype m
inst✝¹ : Fintype n
inst✝ : DecidableEq m
v : m → α
x✝ : m
⊢ (1 *ᵥ v) x✝ = v x✝
tactic: ext
state_before: case h
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝³ : NonAssocSemiring α
inst✝² : Fintype m
inst✝¹ : Fintype n
inst✝ : DecidableEq m
v : m → α
x✝ : m
⊢ (1 *ᵥ v) x✝ = v x✝
state_after: no goals
tactic: rw [← diagonal_one, mulVec_diagonal, one_mul]
Theorem: Composition.sizeUpTo_succ
File: Mathlib/Combinatorics/Enumerative/Composition.lean

Proof steps:
state_before: n : ℕ
c : Composition n
i : ℕ
h : i < c.length
⊢ c.sizeUpTo (i + 1) = c.sizeUpTo i + c.blocks[i]
state_after: n : ℕ
c : Composition n
i : ℕ
h : i < c.length
⊢ (take (i + 1) c.blocks).sum = (take i c.blocks).sum + c.blocks[i]
tactic: simp only [sizeUpTo]
state_before: n : ℕ
c : Composition n
i : ℕ
h : i < c.length
⊢ (take (i + 1) c.blocks).sum = (take i c.blocks).sum + c.blocks[i]
state_after: no goals
tactic: rw [sum_take_succ _ _ h]
Theorem: HasFDerivAt.unique
File: Mathlib/Analysis/Calculus/FDeriv/Basic.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
h₀ : HasFDerivAt f f₀' x
h₁ : HasFDerivAt f f₁' x
⊢ f₀' = f₁'
state_after: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
h₀ : HasFDerivWithinAt f f₀' univ x
h₁ : HasFDerivWithinAt f f₁' univ x
⊢ f₀' = f₁'
tactic: rw [← hasFDerivWithinAt_univ] at h₀ h₁
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
h₀ : HasFDerivWithinAt f f₀' univ x
h₁ : HasFDerivWithinAt f f₁' univ x
⊢ f₀' = f₁'
state_after: no goals
tactic: exact uniqueDiffWithinAt_univ.eq h₀ h₁
Theorem: LipschitzOnWith.prod
File: Mathlib/Topology/EMetricSpace/Lipschitz.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
K : ℝ≥0
s : Set α
f : α → β
g : α → γ
Kf Kg : ℝ≥0
hf : LipschitzOnWith Kf f s
hg : LipschitzOnWith Kg g s
⊢ LipschitzOnWith (max Kf Kg) (fun x => (f x, g x)) s
state_after: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
K : ℝ≥0
s : Set α
f : α → β
g : α → γ
Kf Kg : ℝ≥0
hf : LipschitzOnWith Kf f s
hg : LipschitzOnWith Kg g s
x✝ : α
hx : x✝ ∈ s
y✝ : α
hy : y✝ ∈ s
⊢ edist ((fun x => (f x, g x)) x✝) ((fun x => (f x, g x)) y✝) ≤ ↑(max Kf Kg) * edist x✝ y✝
tactic: intro _ hx _ hy
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
K : ℝ≥0
s : Set α
f : α → β
g : α → γ
Kf Kg : ℝ≥0
hf : LipschitzOnWith Kf f s
hg : LipschitzOnWith Kg g s
x✝ : α
hx : x✝ ∈ s
y✝ : α
hy : y✝ ∈ s
⊢ edist ((fun x => (f x, g x)) x✝) ((fun x => (f x, g x)) y✝) ≤ ↑(max Kf Kg) * edist x✝ y✝
state_after: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
K : ℝ≥0
s : Set α
f : α → β
g : α → γ
Kf Kg : ℝ≥0
hf : LipschitzOnWith Kf f s
hg : LipschitzOnWith Kg g s
x✝ : α
hx : x✝ ∈ s
y✝ : α
hy : y✝ ∈ s
⊢ max (edist ((fun x => (f x, g x)) x✝).1 ((fun x => (f x, g x)) y✝).1)
      (edist ((fun x => (f x, g x)) x✝).2 ((fun x => (f x, g x)) y✝).2) ≤
    max (↑Kf * edist x✝ y✝) (↑Kg * edist x✝ y✝)
tactic: rw [ENNReal.coe_mono.map_max, Prod.edist_eq, ENNReal.max_mul]
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
K : ℝ≥0
s : Set α
f : α → β
g : α → γ
Kf Kg : ℝ≥0
hf : LipschitzOnWith Kf f s
hg : LipschitzOnWith Kg g s
x✝ : α
hx : x✝ ∈ s
y✝ : α
hy : y✝ ∈ s
⊢ max (edist ((fun x => (f x, g x)) x✝).1 ((fun x => (f x, g x)) y✝).1)
      (edist ((fun x => (f x, g x)) x✝).2 ((fun x => (f x, g x)) y✝).2) ≤
    max (↑Kf * edist x✝ y✝) (↑Kg * edist x✝ y✝)
state_after: no goals
tactic: exact max_le_max (hf hx hy) (hg hx hy)
Theorem: zsmul_sub
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✝ : DivisionCommMonoid α
a✝ b✝ c d a b : α
n : ℤ
⊢ (a / b) ^ n = a ^ n / b ^ n
state_after: no goals
tactic: simp only [div_eq_mul_inv, mul_zpow, inv_zpow]
Theorem: Nat.totient_mul_of_prime_of_not_dvd
File: Mathlib/Data/Nat/Totient.lean

Proof steps:
state_before: p n : ℕ
hp : Prime p
h : ¬p ∣ n
⊢ φ (p * n) = (p - 1) * φ n
state_after: p n : ℕ
hp : Prime p
h : ¬p ∣ n
⊢ p.Coprime n
tactic: rw [totient_mul _, totient_prime hp]
state_before: p n : ℕ
hp : Prime p
h : ¬p ∣ n
⊢ p.Coprime n
state_after: no goals
tactic: simpa [h] using coprime_or_dvd_of_prime hp n
Theorem: Function.LeftInverse.map_nhds_eq
File: Mathlib/Topology/ContinuousOn.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁴ : TopologicalSpace α
ι : Type u_5
π : ι → Type u_6
inst✝³ : (i : ι) → TopologicalSpace (π i)
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α → β
g : β → α
x : β
h : LeftInverse f g
hf : ContinuousWithinAt f (range g) (g x)
hg : ContinuousAt g x
⊢ map g (𝓝 x) = 𝓝[range g] g x
state_after: no goals
tactic: simpa only [nhdsWithin_univ, image_univ] using
    (h.leftInvOn univ).map_nhdsWithin_eq (h x) (by rwa [image_univ]) hg.continuousWithinAt
Theorem: CategoryTheory.Functor.FullyFaithful.isoEquiv_apply
File: Mathlib/CategoryTheory/Functor/FullyFaithful.lean

Proof steps:
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u_1
inst✝ : Category.{?u.11481, u_1} E
X✝¹ Y✝¹ : C
F : C ⥤ D
X✝ Y✝ Z : C
hF : F.FullyFaithful
X Y : C
⊢ Function.LeftInverse hF.preimageIso F.mapIso
state_after: no goals
tactic: aesop_cat
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u_1
inst✝ : Category.{?u.11481, u_1} E
X✝¹ Y✝¹ : C
F : C ⥤ D
X✝ Y✝ Z : C
hF : F.FullyFaithful
X Y : C
⊢ Function.RightInverse hF.preimageIso F.mapIso
state_after: no goals
tactic: aesop_cat
Theorem: stereographic_source
File: Mathlib/Geometry/Manifold/Instances/Sphere.lean

Proof steps:
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace ℝ E
v : E
hv : ‖v‖ = 1
⊢ v ∈ sphere 0 1
state_after: no goals
tactic: simp [hv]
Theorem: Filter.iSup_principal
File: Mathlib/Order/Filter/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι✝ : Sort x
f g : Filter α
s✝ t : Set α
ι : Sort w
s : ι → Set α
x : Set α
⊢ x ∈ ⨆ x, 𝓟 (s x) ↔ x ∈ 𝓟 (⋃ i, s i)
state_after: no goals
tactic: simp only [mem_iSup, mem_principal, iUnion_subset_iff]
Theorem: SimpleGraph.Subgraph.degree_eq_one_iff_unique_adj
File: Mathlib/Combinatorics/SimpleGraph/Subgraph.lean

Proof steps:
state_before: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G₁ G₂ : G.Subgraph
a b : V
G' : G.Subgraph
v : V
inst✝ : Fintype ↑(G'.neighborSet v)
⊢ G'.degree v = 1 ↔ ∃! w, G'.Adj v w
state_after: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G₁ G₂ : G.Subgraph
a b : V
G' : G.Subgraph
v : V
inst✝ : Fintype ↑(G'.neighborSet v)
⊢ (∃! a, a ∈ (G'.neighborSet v).toFinset) ↔ ∃! w, G'.Adj v w
tactic: rw [← finset_card_neighborSet_eq_degree, Finset.card_eq_one, Finset.singleton_iff_unique_mem]
state_before: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G₁ G₂ : G.Subgraph
a b : V
G' : G.Subgraph
v : V
inst✝ : Fintype ↑(G'.neighborSet v)
⊢ (∃! a, a ∈ (G'.neighborSet v).toFinset) ↔ ∃! w, G'.Adj v w
state_after: no goals
tactic: simp only [Set.mem_toFinset, mem_neighborSet]
Theorem: PFunctor.M.children_mk
File: Mathlib/Data/PFunctor/Univariate/M.lean

Proof steps:
state_before: F : PFunctor.{u}
X : Type u_1
f : X → ↑F X
a : F.A
x : F.B a → F.M
i : F.B (M.mk ⟨a, x⟩).head
⊢ F.B (M.mk ⟨a, x⟩).head = F.B a
state_after: no goals
tactic: rw [head_mk]
state_before: F : PFunctor.{u}
X : Type u_1
f : X → ↑F X
a : F.A
x : F.B a → F.M
i : F.B (M.mk ⟨a, x⟩).head
⊢ (M.mk ⟨a, x⟩).children i = x (cast ⋯ i)
state_after: case H
F : PFunctor.{u}
X : Type u_1
f : X → ↑F X
a : F.A
x : F.B a → F.M
i : F.B (M.mk ⟨a, x⟩).head
⊢ ∀ (i_1 : ℕ), ((M.mk ⟨a, x⟩).children i).approx i_1 = (x (cast ⋯ i)).approx i_1
tactic: apply ext'
state_before: case H
F : PFunctor.{u}
X : Type u_1
f : X → ↑F X
a : F.A
x : F.B a → F.M
i : F.B (M.mk ⟨a, x⟩).head
⊢ ∀ (i_1 : ℕ), ((M.mk ⟨a, x⟩).children i).approx i_1 = (x (cast ⋯ i)).approx i_1
state_after: case H
F : PFunctor.{u}
X : Type u_1
f : X → ↑F X
a : F.A
x : F.B a → F.M
i : F.B (M.mk ⟨a, x⟩).head
n : ℕ
⊢ ((M.mk ⟨a, x⟩).children i).approx n = (x (cast ⋯ i)).approx n
tactic: intro n
state_before: case H
F : PFunctor.{u}
X : Type u_1
f : X → ↑F X
a : F.A
x : F.B a → F.M
i : F.B (M.mk ⟨a, x⟩).head
n : ℕ
⊢ ((M.mk ⟨a, x⟩).children i).approx n = (x (cast ⋯ i)).approx n
state_after: no goals
tactic: rfl
Theorem: PiLp.aux_uniformity_eq
File: Mathlib/Analysis/Normed/Lp/PiLp.lean

Proof steps:
state_before: p : ℝ≥0∞
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β : ι → Type u_4
inst✝³ : Fact (1 ≤ p)
inst✝² : (i : ι) → PseudoMetricSpace (α i)
inst✝¹ : (i : ι) → PseudoEMetricSpace (β i)
inst✝ : Fintype ι
⊢ 𝓤 (PiLp p β) = 𝓤 ((i : ι) → β i)
state_after: p : ℝ≥0∞
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β : ι → Type u_4
inst✝³ : Fact (1 ≤ p)
inst✝² : (i : ι) → PseudoMetricSpace (α i)
inst✝¹ : (i : ι) → PseudoEMetricSpace (β i)
inst✝ : Fintype ι
A : UniformInducing ⇑(WithLp.equiv p ((i : ι) → β i))
⊢ 𝓤 (PiLp p β) = 𝓤 ((i : ι) → β i)
tactic: have A : UniformInducing (WithLp.equiv p (∀ i, β i)) :=
    (antilipschitzWith_equiv_aux p β).uniformInducing
      (lipschitzWith_equiv_aux p β).uniformContinuous
state_before: p : ℝ≥0∞
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β : ι → Type u_4
inst✝³ : Fact (1 ≤ p)
inst✝² : (i : ι) → PseudoMetricSpace (α i)
inst✝¹ : (i : ι) → PseudoEMetricSpace (β i)
inst✝ : Fintype ι
A : UniformInducing ⇑(WithLp.equiv p ((i : ι) → β i))
⊢ 𝓤 (PiLp p β) = 𝓤 ((i : ι) → β i)
state_after: p : ℝ≥0∞
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β : ι → Type u_4
inst✝³ : Fact (1 ≤ p)
inst✝² : (i : ι) → PseudoMetricSpace (α i)
inst✝¹ : (i : ι) → PseudoEMetricSpace (β i)
inst✝ : Fintype ι
A : UniformInducing ⇑(WithLp.equiv p ((i : ι) → β i))
this : (fun x => ((WithLp.equiv p ((i : ι) → β i)) x.1, (WithLp.equiv p ((i : ι) → β i)) x.2)) = id
⊢ 𝓤 (PiLp p β) = 𝓤 ((i : ι) → β i)
tactic: have : (fun x : PiLp p β × PiLp p β => (WithLp.equiv p _ x.fst, WithLp.equiv p _ x.snd)) = id :=
    by ext i <;> rfl
state_before: p : ℝ≥0∞
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β : ι → Type u_4
inst✝³ : Fact (1 ≤ p)
inst✝² : (i : ι) → PseudoMetricSpace (α i)
inst✝¹ : (i : ι) → PseudoEMetricSpace (β i)
inst✝ : Fintype ι
A : UniformInducing ⇑(WithLp.equiv p ((i : ι) → β i))
this : (fun x => ((WithLp.equiv p ((i : ι) → β i)) x.1, (WithLp.equiv p ((i : ι) → β i)) x.2)) = id
⊢ 𝓤 (PiLp p β) = 𝓤 ((i : ι) → β i)
state_after: no goals
tactic: rw [← A.comap_uniformity, this, comap_id]
Theorem: expMapCircle_eq_expMapCircle
File: Mathlib/Analysis/SpecialFunctions/Complex/Circle.lean

Proof steps:
state_before: x y : ℝ
⊢ expMapCircle x = expMapCircle y ↔ ∃ m, x = y + ↑m * (2 * π)
state_after: x y : ℝ
⊢ (∃ n, ↑x * I = ↑y * I + ↑n * (2 * ↑π * I)) ↔ ∃ m, x = y + ↑m * (2 * π)
tactic: rw [Subtype.ext_iff, expMapCircle_apply, expMapCircle_apply, exp_eq_exp_iff_exists_int]
state_before: x y : ℝ
⊢ (∃ n, ↑x * I = ↑y * I + ↑n * (2 * ↑π * I)) ↔ ∃ m, x = y + ↑m * (2 * π)
state_after: x y : ℝ
n : ℤ
⊢ ↑x * I = ↑y * I + ↑n * (2 * ↑π * I) ↔ x = y + ↑n * (2 * π)
tactic: refine exists_congr fun n => ?_
state_before: x y : ℝ
n : ℤ
⊢ ↑x * I = ↑y * I + ↑n * (2 * ↑π * I) ↔ x = y + ↑n * (2 * π)
state_after: x y : ℝ
n : ℤ
⊢ ↑x = ↑y + ↑n * (2 * ↑π) ↔ x = y + ↑n * (2 * π)
tactic: rw [← mul_assoc, ← add_mul, mul_left_inj' I_ne_zero]
state_before: x y : ℝ
n : ℤ
⊢ ↑x = ↑y + ↑n * (2 * ↑π) ↔ x = y + ↑n * (2 * π)
state_after: no goals
tactic: norm_cast
Theorem: DFinsupp.support_monotone
File: Mathlib/Data/DFinsupp/Order.lean

Proof steps:
state_before: ι : Type u_1
α : ι → Type u_2
inst✝² : (i : ι) → CanonicallyOrderedAddCommMonoid (α i)
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → (x : α i) → Decidable (x ≠ 0)
f✝ g✝ : Π₀ (i : ι), α i
s : Finset ι
f g : Π₀ (i : ι), α i
h : f ≤ g
a : ι
ha : a ∈ f.support
⊢ a ∈ g.support
state_after: ι : Type u_1
α : ι → Type u_2
inst✝² : (i : ι) → CanonicallyOrderedAddCommMonoid (α i)
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → (x : α i) → Decidable (x ≠ 0)
f✝ g✝ : Π₀ (i : ι), α i
s : Finset ι
f g : Π₀ (i : ι), α i
h : f ≤ g
a : ι
ha : 0 < f a
⊢ 0 < g a
tactic: rw [mem_support_iff, ← pos_iff_ne_zero] at ha ⊢
state_before: ι : Type u_1
α : ι → Type u_2
inst✝² : (i : ι) → CanonicallyOrderedAddCommMonoid (α i)
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → (x : α i) → Decidable (x ≠ 0)
f✝ g✝ : Π₀ (i : ι), α i
s : Finset ι
f g : Π₀ (i : ι), α i
h : f ≤ g
a : ι
ha : 0 < f a
⊢ 0 < g a
state_after: no goals
tactic: exact ha.trans_le (h _)
Theorem: Complex.natCast_cpow_natCast_mul
File: Mathlib/Analysis/SpecialFunctions/Pow/Complex.lean

Proof steps:
state_before: n m : ℕ
z : ℂ
⊢ ↑n ^ (↑m * z) = (↑n ^ m) ^ z
state_after: case refine_1
n m : ℕ
z : ℂ
⊢ -π < ↑m * (↑n).arg

case refine_2
n m : ℕ
z : ℂ
⊢ ↑m * (↑n).arg ≤ π
tactic: refine cpow_nat_mul' (x := n) (n := m) ?_ ?_ z
Theorem: Function.IsPeriodicPt.comp
File: Mathlib/Dynamics/PeriodicPts.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
f fa : α → α
fb : β → β
x y : α
m n : ℕ
g : α → α
hco : Function.Commute f g
hf : IsPeriodicPt f n x
hg : IsPeriodicPt g n x
⊢ IsPeriodicPt (f ∘ g) n x
state_after: α : Type u_1
β : Type u_2
f fa : α → α
fb : β → β
x y : α
m n : ℕ
g : α → α
hco : Function.Commute f g
hf : IsPeriodicPt f n x
hg : IsPeriodicPt g n x
⊢ IsFixedPt (f^[n] ∘ g^[n]) x
tactic: rw [IsPeriodicPt, hco.comp_iterate]
state_before: α : Type u_1
β : Type u_2
f fa : α → α
fb : β → β
x y : α
m n : ℕ
g : α → α
hco : Function.Commute f g
hf : IsPeriodicPt f n x
hg : IsPeriodicPt g n x
⊢ IsFixedPt (f^[n] ∘ g^[n]) x
state_after: no goals
tactic: exact IsFixedPt.comp hf hg
Theorem: List.forall_map_iff
File: Mathlib/Data/List/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
p✝ q : α → Prop
l : List α
p : β → Prop
f : α → β
⊢ Forall p (map f l) ↔ Forall (p ∘ f) l
state_after: no goals
tactic: induction l <;> simp [*]
Theorem: HomologicalComplex₂.totalAux.d₂_eq'
File: Mathlib/Algebra/Homology/TotalComplex.lean

Proof steps:
state_before: C : Type u_1
inst✝⁴ : Category.{u_5, u_1} C
inst✝³ : Preadditive C
I₁ : Type u_2
I₂ : Type u_3
I₁₂ : Type u_4
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
K L M : HomologicalComplex₂ C c₁ c₂
φ : K ⟶ L
e : K ≅ L
ψ : L ⟶ M
c₁₂ : ComplexShape I₁₂
inst✝² : DecidableEq I₁₂
inst✝¹ : TotalComplexShape c₁ c₂ c₁₂
inst✝ : K.HasTotal c₁₂
i₁ : I₁
i₂ i₂' : I₂
h : c₂.Rel i₂ i₂'
i₁₂ : I₁₂
⊢ K.d₂ c₁₂ i₁ i₂ i₁₂ =
    c₁.ε₂ c₂ c₁₂ (i₁, i₂) • (K.X i₁).d i₂ i₂' ≫ K.toGradedObject.ιMapObjOrZero (c₁.π c₂ c₁₂) (i₁, i₂') i₁₂
state_after: C : Type u_1
inst✝⁴ : Category.{u_5, u_1} C
inst✝³ : Preadditive C
I₁ : Type u_2
I₂ : Type u_3
I₁₂ : Type u_4
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
K L M : HomologicalComplex₂ C c₁ c₂
φ : K ⟶ L
e : K ≅ L
ψ : L ⟶ M
c₁₂ : ComplexShape I₁₂
inst✝² : DecidableEq I₁₂
inst✝¹ : TotalComplexShape c₁ c₂ c₁₂
inst✝ : K.HasTotal c₁₂
i₁ : I₁
i₂ : I₂
i₁₂ : I₁₂
h : c₂.Rel i₂ (c₂.next i₂)
⊢ K.d₂ c₁₂ i₁ i₂ i₁₂ =
    c₁.ε₂ c₂ c₁₂ (i₁, i₂) •
      (K.X i₁).d i₂ (c₂.next i₂) ≫ K.toGradedObject.ιMapObjOrZero (c₁.π c₂ c₁₂) (i₁, c₂.next i₂) i₁₂
tactic: obtain rfl := c₂.next_eq' h
state_before: C : Type u_1
inst✝⁴ : Category.{u_5, u_1} C
inst✝³ : Preadditive C
I₁ : Type u_2
I₂ : Type u_3
I₁₂ : Type u_4
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
K L M : HomologicalComplex₂ C c₁ c₂
φ : K ⟶ L
e : K ≅ L
ψ : L ⟶ M
c₁₂ : ComplexShape I₁₂
inst✝² : DecidableEq I₁₂
inst✝¹ : TotalComplexShape c₁ c₂ c₁₂
inst✝ : K.HasTotal c₁₂
i₁ : I₁
i₂ : I₂
i₁₂ : I₁₂
h : c₂.Rel i₂ (c₂.next i₂)
⊢ K.d₂ c₁₂ i₁ i₂ i₁₂ =
    c₁.ε₂ c₂ c₁₂ (i₁, i₂) •
      (K.X i₁).d i₂ (c₂.next i₂) ≫ K.toGradedObject.ιMapObjOrZero (c₁.π c₂ c₁₂) (i₁, c₂.next i₂) i₁₂
state_after: no goals
tactic: rfl
Theorem: Matrix.rank_diagonal
File: Mathlib/Data/Matrix/Rank.lean

Proof steps:
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
inst✝⁵ : Fintype n
inst✝⁴ : Fintype o
inst✝³ : Field R
inst✝² : Fintype m
inst✝¹ : DecidableEq m
inst✝ : DecidableEq R
w : m → R
⊢ (diagonal w).rank = Fintype.card { i // w i ≠ 0 }
state_after: no goals
tactic: rw [Matrix.rank, ← Matrix.toLin'_apply', FiniteDimensional.finrank, ← LinearMap.rank,
    LinearMap.rank_diagonal, Cardinal.toNat_natCast]
Theorem: TypeVec.prod_map_id
File: Mathlib/Data/TypeVec.lean

Proof steps:
state_before: n : ℕ
α β : TypeVec.{u_1} n
⊢ (id ⊗' id) = id
state_after: case a.h
n : ℕ
α β : TypeVec.{u_1} n
i : Fin2 n
x : (α ⊗ β) i
⊢ (id ⊗' id) i x = id i x
tactic: ext i x : 2
state_before: case a.h
n : ℕ
α β : TypeVec.{u_1} n
i : Fin2 n
x : (α ⊗ β) i
⊢ (id ⊗' id) i x = id i x
state_after: case a.h.fz
n n✝ : ℕ
α β : TypeVec.{u_1} (n✝ + 1)
x : (α ⊗ β) Fin2.fz
⊢ (id Fin2.fz x.1, id Fin2.fz x.2) = id Fin2.fz x

case a.h.fs
n n✝ : ℕ
a✝ : Fin2 n✝
a_ih✝ : ∀ {α β : TypeVec.{u_1} n✝} (x : (α ⊗ β) a✝), (id ⊗' id) a✝ x = id a✝ x
α β : TypeVec.{u_1} (n✝ + 1)
x : (α ⊗ β) a✝.fs
⊢ id a✝ x = id a✝.fs x
tactic: induction i <;> simp only [TypeVec.prod.map, *, dropFun_id]
state_before: case a.h.fz
n n✝ : ℕ
α β : TypeVec.{u_1} (n✝ + 1)
x : (α ⊗ β) Fin2.fz
⊢ (id Fin2.fz x.1, id Fin2.fz x.2) = id Fin2.fz x

case a.h.fs
n n✝ : ℕ
a✝ : Fin2 n✝
a_ih✝ : ∀ {α β : TypeVec.{u_1} n✝} (x : (α ⊗ β) a✝), (id ⊗' id) a✝ x = id a✝ x
α β : TypeVec.{u_1} (n✝ + 1)
x : (α ⊗ β) a✝.fs
⊢ id a✝ x = id a✝.fs x
state_after: case a.h.fz.mk
n n✝ : ℕ
α β : TypeVec.{u_1} (n✝ + 1)
fst✝ : α.last
snd✝ : β.last
⊢ (id Fin2.fz (fst✝, snd✝).1, id Fin2.fz (fst✝, snd✝).2) = id Fin2.fz (fst✝, snd✝)

case a.h.fs
n n✝ : ℕ
a✝ : Fin2 n✝
a_ih✝ : ∀ {α β : TypeVec.{u_1} n✝} (x : (α ⊗ β) a✝), (id ⊗' id) a✝ x = id a✝ x
α β : TypeVec.{u_1} (n✝ + 1)
x : (α ⊗ β) a✝.fs
⊢ id a✝ x = id a✝.fs x
tactic: cases x
Theorem: Codisjoint.map
File: Mathlib/Order/Hom/Lattice.lean

Proof steps:
state_before: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
δ : Type u_6
inst✝⁵ : Lattice α
inst✝⁴ : BoundedOrder α
inst✝³ : Lattice β
inst✝² : BoundedOrder β
inst✝¹ : FunLike F α β
inst✝ : BoundedLatticeHomClass F α β
f : F
a b : α
h : Codisjoint a b
⊢ Codisjoint (f a) (f b)
state_after: no goals
tactic: rw [codisjoint_iff, ← map_sup, h.eq_top, map_top]
Theorem: CategoryTheory.ComposableArrows.Precomp.map_one_succ
File: Mathlib/CategoryTheory/ComposableArrows.lean

Proof steps:
state_before: C : Type u_1
inst✝ : Category.{?u.101182, u_1} C
n m : ℕ
F G : ComposableArrows C n
X : C
f : X ⟶ F.left
j : ℕ
hj : j + 1 < n + 1 + 1
⊢ 1 ≤ ⟨j + 1, hj⟩
state_after: no goals
tactic: simp [Fin.le_def]
Theorem: String.toList_nonempty
File: Mathlib/Data/String/Basic.lean

Proof steps:
state_before: s : List Char
h : { data := s } ≠ ""
⊢ { data := s }.toList = { data := s }.head :: ({ data := s }.drop 1).toList
state_after: no goals
tactic: cases s with
    | nil => simp at h
    | cons c cs =>
      simp only [toList, data_drop, List.drop_succ_cons, List.drop_zero, List.cons.injEq, and_true]
      rfl
Theorem: sub_one_dvd_pow_sub_one
File: Mathlib/Algebra/GeomSum.lean

Proof steps:
state_before: α : Type u
inst✝ : Ring α
x : α
n : ℕ
⊢ x - 1 ∣ x ^ n - 1
state_after: α : Type u
inst✝ : Ring α
x : α
n : ℕ
⊢ x - 1 ∣ x ^ n - 1 ^ n
tactic: conv_rhs => rw [← one_pow n]
state_before: α : Type u
inst✝ : Ring α
x : α
n : ℕ
⊢ x - 1 ∣ x ^ n - 1 ^ n
state_after: no goals
tactic: exact (Commute.one_right x).sub_dvd_pow_sub_pow n
Theorem: MulChar.ringHomComp_one
File: Mathlib/NumberTheory/MulChar/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝² : CommMonoid R
R' : Type u_2
inst✝¹ : CommRing R'
R'' : Type u_3
inst✝ : CommRing R''
f : R' →+* R''
⊢ ringHomComp 1 f = 1
state_after: case h
R : Type u_1
inst✝² : CommMonoid R
R' : Type u_2
inst✝¹ : CommRing R'
R'' : Type u_3
inst✝ : CommRing R''
f : R' →+* R''
a✝ : Rˣ
⊢ (ringHomComp 1 f) ↑a✝ = 1 ↑a✝
tactic: ext1
state_before: case h
R : Type u_1
inst✝² : CommMonoid R
R' : Type u_2
inst✝¹ : CommRing R'
R'' : Type u_3
inst✝ : CommRing R''
f : R' →+* R''
a✝ : Rˣ
⊢ (ringHomComp 1 f) ↑a✝ = 1 ↑a✝
state_after: no goals
tactic: simp only [MulChar.ringHomComp_apply, MulChar.one_apply_coe, map_one]
Theorem: Real.geom_mean_le_arith_mean_weighted
File: Mathlib/Analysis/MeanInequalities.lean

Proof steps:
state_before: ι : Type u
s : Finset ι
w z : ι → ℝ
hw : ∀ i ∈ s, 0 ≤ w i
hw' : ∑ i ∈ s, w i = 1
hz : ∀ i ∈ s, 0 ≤ z i
⊢ ∏ i ∈ s, z i ^ w i ≤ ∑ i ∈ s, w i * z i
state_after: case pos
ι : Type u
s : Finset ι
w z : ι → ℝ
hw : ∀ i ∈ s, 0 ≤ w i
hw' : ∑ i ∈ s, w i = 1
hz : ∀ i ∈ s, 0 ≤ z i
A : ∃ i ∈ s, z i = 0 ∧ w i ≠ 0
⊢ ∏ i ∈ s, z i ^ w i ≤ ∑ i ∈ s, w i * z i

case neg
ι : Type u
s : Finset ι
w z : ι → ℝ
hw : ∀ i ∈ s, 0 ≤ w i
hw' : ∑ i ∈ s, w i = 1
hz : ∀ i ∈ s, 0 ≤ z i
A : ¬∃ i ∈ s, z i = 0 ∧ w i ≠ 0
⊢ ∏ i ∈ s, z i ^ w i ≤ ∑ i ∈ s, w i * z i
tactic: by_cases A : ∃ i ∈ s, z i = 0 ∧ w i ≠ 0