ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: RatFunc.laurent_injective
File: Mathlib/FieldTheory/Laurent.lean

Proof steps:
state_before: R : Type u
inst✝ : CommRing R
hdomain : IsDomain R
r s : R
p q : R[X]
f x✝¹ x✝ : RatFunc R
h : (laurent r) x✝¹ = (laurent r) x✝
⊢ x✝¹ = x✝
state_after: no goals
tactic: simpa [laurent_laurent] using congr_arg (laurent (-r)) h
Theorem: IsIdempotentElem.pow
File: Mathlib/Algebra/Ring/Idempotents.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
S : Type u_3
M₀ : Type u_4
M₁ : Type u_5
R : Type u_6
G : Type u_7
G₀ : Type u_8
inst✝⁷ : Mul M
inst✝⁶ : Monoid N
inst✝⁵ : Semigroup S
inst✝⁴ : MulZeroClass M₀
inst✝³ : MulOneClass M₁
inst✝² : NonAssocRing R
inst✝¹ : Group G
inst✝ : CancelMonoidWithZero G₀
p : N
n✝ : ℕ
h : IsIdempotentElem p
n : ℕ
x✝ : IsIdempotentElem (p ^ n)
⊢ p ^ n.succ * p ^ n.succ = p ^ n.succ
state_after: M : Type u_1
N : Type u_2
S : Type u_3
M₀ : Type u_4
M₁ : Type u_5
R : Type u_6
G : Type u_7
G₀ : Type u_8
inst✝⁷ : Mul M
inst✝⁶ : Monoid N
inst✝⁵ : Semigroup S
inst✝⁴ : MulZeroClass M₀
inst✝³ : MulOneClass M₁
inst✝² : NonAssocRing R
inst✝¹ : Group G
inst✝ : CancelMonoidWithZero G₀
p : N
n✝ : ℕ
h : IsIdempotentElem p
n : ℕ
x✝ : IsIdempotentElem (p ^ n)
⊢ p ^ n.succ * p ^ n.succ = (p * p) ^ n.succ
tactic: conv_rhs => rw [← h.eq]
state_before: M : Type u_1
N : Type u_2
S : Type u_3
M₀ : Type u_4
M₁ : Type u_5
R : Type u_6
G : Type u_7
G₀ : Type u_8
inst✝⁷ : Mul M
inst✝⁶ : Monoid N
inst✝⁵ : Semigroup S
inst✝⁴ : MulZeroClass M₀
inst✝³ : MulOneClass M₁
inst✝² : NonAssocRing R
inst✝¹ : Group G
inst✝ : CancelMonoidWithZero G₀
p : N
n✝ : ℕ
h : IsIdempotentElem p
n : ℕ
x✝ : IsIdempotentElem (p ^ n)
⊢ p ^ n.succ * p ^ n.succ = (p * p) ^ n.succ
state_after: no goals
tactic: rw [← sq, ← sq, ← pow_mul, ← pow_mul']
Theorem: Multiset.count_replicate_self
File: Mathlib/Data/Multiset/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s : Multiset α
a : α
n : ℕ
⊢ count a (replicate n a) = n
state_after: case h.e'_2
α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s : Multiset α
a : α
n : ℕ
⊢ count a (replicate n a) = List.count a (List.replicate n a)
tactic: convert List.count_replicate_self a n
state_before: case h.e'_2
α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s : Multiset α
a : α
n : ℕ
⊢ count a (replicate n a) = List.count a (List.replicate n a)
state_after: no goals
tactic: rw [← coe_count, coe_replicate]
Theorem: Language.le_mul_congr
File: Mathlib/Computability/Language.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
l m : Language α
a b x : List α
l₁ l₂ m₁ m₂ : Language α
⊢ l₁ ≤ m₁ → l₂ ≤ m₂ → l₁ * l₂ ≤ m₁ * m₂
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
l m : Language α
a b x✝ : List α
l₁ l₂ m₁ m₂ : Language α
h₁ : l₁ ≤ m₁
h₂ : l₂ ≤ m₂
x : List α
hx : x ∈ l₁ * l₂
⊢ x ∈ m₁ * m₂
tactic: intro h₁ h₂ x hx
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
l m : Language α
a b x✝ : List α
l₁ l₂ m₁ m₂ : Language α
h₁ : l₁ ≤ m₁
h₂ : l₂ ≤ m₂
x : List α
hx : x ∈ l₁ * l₂
⊢ x ∈ m₁ * m₂
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
l m : Language α
a b x✝ : List α
l₁ l₂ m₁ m₂ : Language α
h₁ : l₁ ≤ m₁
h₂ : l₂ ≤ m₂
x : List α
hx : ∃ a ∈ l₁, ∃ b ∈ l₂, a ++ b = x
⊢ ∃ a ∈ m₁, ∃ b ∈ m₂, a ++ b = x
tactic: simp only [mul_def, exists_and_left, mem_image2, image_prod] at hx ⊢
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
l m : Language α
a b x✝ : List α
l₁ l₂ m₁ m₂ : Language α
h₁ : l₁ ≤ m₁
h₂ : l₂ ≤ m₂
x : List α
hx : ∃ a ∈ l₁, ∃ b ∈ l₂, a ++ b = x
⊢ ∃ a ∈ m₁, ∃ b ∈ m₂, a ++ b = x
state_after: no goals
tactic: tauto
Theorem: Int.eq_one_or_neg_one_of_mul_eq_one'
File: Mathlib/Algebra/Group/Int.lean

Proof steps:
state_before: u v : ℤ
h : u * v = 1
⊢ u = 1 ∧ v = 1 ∨ u = -1 ∧ v = -1
state_after: u v : ℤ
h : u * v = 1
h' : v * u = 1
⊢ u = 1 ∧ v = 1 ∨ u = -1 ∧ v = -1
tactic: have h' : v * u = 1 := mul_comm u v ▸ h
state_before: u v : ℤ
h : u * v = 1
h' : v * u = 1
⊢ u = 1 ∧ v = 1 ∨ u = -1 ∧ v = -1
state_after: no goals
tactic: obtain rfl | rfl := eq_one_or_neg_one_of_mul_eq_one h <;>
      obtain rfl | rfl := eq_one_or_neg_one_of_mul_eq_one h' <;> tauto
Theorem: ContinuousLinearMap.comp_cPolynomialOn
File: Mathlib/Analysis/Analytic/CPolynomial.lean

Proof steps:
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
f g✝ : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
n m : ℕ
s : Set E
g : F →L[𝕜] G
h : CPolynomialOn 𝕜 f s
⊢ CPolynomialOn 𝕜 (⇑g ∘ f) s
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
f g✝ : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x✝ : E
r r' : ℝ≥0∞
n m : ℕ
s : Set E
g : F →L[𝕜] G
h : CPolynomialOn 𝕜 f s
x : E
hx : x ∈ s
⊢ CPolynomialAt 𝕜 (⇑g ∘ f) x
tactic: rintro x hx
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
f g✝ : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x✝ : E
r r' : ℝ≥0∞
n m : ℕ
s : Set E
g : F →L[𝕜] G
h : CPolynomialOn 𝕜 f s
x : E
hx : x ∈ s
⊢ CPolynomialAt 𝕜 (⇑g ∘ f) x
state_after: case intro.intro.intro
𝕜 : 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
f g✝ : E → F
p✝ pf pg : FormalMultilinearSeries 𝕜 E F
x✝ : E
r✝ r' : ℝ≥0∞
n✝ m : ℕ
s : Set E
g : F →L[𝕜] G
h : CPolynomialOn 𝕜 f s
x : E
hx : x ∈ s
p : FormalMultilinearSeries 𝕜 E F
n : ℕ
r : ℝ≥0∞
hp : HasFiniteFPowerSeriesOnBall f p x n r
⊢ CPolynomialAt 𝕜 (⇑g ∘ f) x
tactic: rcases h x hx with ⟨p, n, r, hp⟩
state_before: case intro.intro.intro
𝕜 : 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
f g✝ : E → F
p✝ pf pg : FormalMultilinearSeries 𝕜 E F
x✝ : E
r✝ r' : ℝ≥0∞
n✝ m : ℕ
s : Set E
g : F →L[𝕜] G
h : CPolynomialOn 𝕜 f s
x : E
hx : x ∈ s
p : FormalMultilinearSeries 𝕜 E F
n : ℕ
r : ℝ≥0∞
hp : HasFiniteFPowerSeriesOnBall f p x n r
⊢ CPolynomialAt 𝕜 (⇑g ∘ f) x
state_after: no goals
tactic: exact ⟨g.compFormalMultilinearSeries p, n, r, g.comp_hasFiniteFPowerSeriesOnBall hp⟩
Theorem: TorusIntegrable.torusIntegrable_const
File: Mathlib/MeasureTheory/Integral/TorusIntegral.lean

Proof steps:
state_before: n : ℕ
E : Type u_1
inst✝ : NormedAddCommGroup E
f g : (Fin n → ℂ) → E
c✝ : Fin n → ℂ
R✝ : Fin n → ℝ
a : E
c : Fin n → ℂ
R : Fin n → ℝ
⊢ TorusIntegrable (fun x => a) c R
state_after: no goals
tactic: simp [TorusIntegrable, measure_Icc_lt_top]
Theorem: finsum_eq_sum_plift_of_support_toFinset_subset
File: Mathlib/Algebra/BigOperators/Finprod.lean

Proof steps:
state_before: G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
hf : (mulSupport (f ∘ PLift.down)).Finite
s : Finset (PLift α)
hs : hf.toFinset ⊆ s
⊢ ∏ᶠ (i : α), f i = ∏ i ∈ s, f i.down
state_after: G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
hf : (mulSupport (f ∘ PLift.down)).Finite
s : Finset (PLift α)
hs : hf.toFinset ⊆ s
⊢ ∏ i ∈ ?hc.toFinset, f i.down = ∏ i ∈ s, f i.down

case hc
G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
hf : (mulSupport (f ∘ PLift.down)).Finite
s : Finset (PLift α)
hs : hf.toFinset ⊆ s
⊢ (mulSupport ((fun i => f i) ∘ PLift.down)).Finite
tactic: rw [finprod, dif_pos]
state_before: G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
hf : (mulSupport (f ∘ PLift.down)).Finite
s : Finset (PLift α)
hs : hf.toFinset ⊆ s
⊢ ∏ i ∈ ?hc.toFinset, f i.down = ∏ i ∈ s, f i.down

case hc
G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
hf : (mulSupport (f ∘ PLift.down)).Finite
s : Finset (PLift α)
hs : hf.toFinset ⊆ s
⊢ (mulSupport ((fun i => f i) ∘ PLift.down)).Finite
state_after: G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
hf : (mulSupport (f ∘ PLift.down)).Finite
s : Finset (PLift α)
hs : hf.toFinset ⊆ s
x : PLift α
x✝ : x ∈ s
hxf : x ∉ hf.toFinset
⊢ f x.down = 1
tactic: refine Finset.prod_subset hs fun x _ hxf => ?_
state_before: G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
hf : (mulSupport (f ∘ PLift.down)).Finite
s : Finset (PLift α)
hs : hf.toFinset ⊆ s
x : PLift α
x✝ : x ∈ s
hxf : x ∉ hf.toFinset
⊢ f x.down = 1
state_after: no goals
tactic: rwa [hf.mem_toFinset, nmem_mulSupport] at hxf
Theorem: Ideal.jacobson_eq_iff_jacobson_quotient_eq_bot
File: Mathlib/RingTheory/JacobsonIdeal.lean

Proof steps:
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
I : Ideal R
⊢ I.jacobson = I ↔ ⊥.jacobson = ⊥
state_after: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
I : Ideal R
hf : Function.Surjective ⇑(Quotient.mk I)
⊢ I.jacobson = I ↔ ⊥.jacobson = ⊥
tactic: have hf : Function.Surjective (Ideal.Quotient.mk I) := Submodule.Quotient.mk_surjective I
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
I : Ideal R
hf : Function.Surjective ⇑(Quotient.mk I)
⊢ I.jacobson = I ↔ ⊥.jacobson = ⊥
state_after: case mp
R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
I : Ideal R
hf : Function.Surjective ⇑(Quotient.mk I)
⊢ I.jacobson = I → ⊥.jacobson = ⊥

case mpr
R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
I : Ideal R
hf : Function.Surjective ⇑(Quotient.mk I)
⊢ ⊥.jacobson = ⊥ → I.jacobson = I
tactic: constructor
Theorem: SimpleGraph.Colorable.chromaticNumber_le
File: Mathlib/Combinatorics/SimpleGraph/Coloring.lean

Proof steps:
state_before: V : Type u
G : SimpleGraph V
n✝ : ℕ
α : Type u_1
β : Type u_2
C : G.Coloring α
n : ℕ
hc : G.Colorable n
⊢ G.chromaticNumber ≤ ↑n
state_after: V : Type u
G : SimpleGraph V
n✝ : ℕ
α : Type u_1
β : Type u_2
C : G.Coloring α
n : ℕ
hc : G.Colorable n
⊢ ↑(sInf {n' | G.Colorable n'}) ≤ ↑n
tactic: rw [hc.chromaticNumber_eq_sInf]
state_before: V : Type u
G : SimpleGraph V
n✝ : ℕ
α : Type u_1
β : Type u_2
C : G.Coloring α
n : ℕ
hc : G.Colorable n
⊢ ↑(sInf {n' | G.Colorable n'}) ≤ ↑n
state_after: V : Type u
G : SimpleGraph V
n✝ : ℕ
α : Type u_1
β : Type u_2
C : G.Coloring α
n : ℕ
hc : G.Colorable n
⊢ sInf {n' | G.Colorable n'} ≤ n
tactic: norm_cast
state_before: V : Type u
G : SimpleGraph V
n✝ : ℕ
α : Type u_1
β : Type u_2
C : G.Coloring α
n : ℕ
hc : G.Colorable n
⊢ sInf {n' | G.Colorable n'} ≤ n
state_after: V : Type u
G : SimpleGraph V
n✝ : ℕ
α : Type u_1
β : Type u_2
C : G.Coloring α
n : ℕ
hc : G.Colorable n
⊢ n ∈ {n | G.Colorable n}
tactic: apply csInf_le chromaticNumber_bddBelow
state_before: V : Type u
G : SimpleGraph V
n✝ : ℕ
α : Type u_1
β : Type u_2
C : G.Coloring α
n : ℕ
hc : G.Colorable n
⊢ n ∈ {n | G.Colorable n}
state_after: no goals
tactic: exact hc
Theorem: finsum_of_isEmpty
File: Mathlib/Algebra/BigOperators/Finprod.lean

Proof steps:
state_before: G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
inst✝ : IsEmpty α
f : α → M
⊢ ∏ᶠ (i : α), f i = 1
state_after: G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
inst✝ : IsEmpty α
f : α → M
⊢ ∏ᶠ (i : α), f i = ∏ᶠ (x : ?m.12512), 1

G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
inst✝ : IsEmpty α
f : α → M
⊢ Sort ?u.12509
tactic: rw [← finprod_one]
state_before: G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
inst✝ : IsEmpty α
f : α → M
⊢ ∏ᶠ (i : α), f i = ∏ᶠ (x : ?m.12512), 1

G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
inst✝ : IsEmpty α
f : α → M
⊢ Sort ?u.12509
state_after: case e_f
G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
inst✝ : IsEmpty α
f : α → M
⊢ (fun i => f i) = fun x => 1
tactic: congr
state_before: case e_f
G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
inst✝ : IsEmpty α
f : α → M
⊢ (fun i => f i) = fun x => 1
state_after: no goals
tactic: simp [eq_iff_true_of_subsingleton]
Theorem: Complex.UnitDisc.normSq_lt_one
File: Mathlib/Analysis/Complex/UnitDisc/Basic.lean

Proof steps:
state_before: z : 𝔻
⊢ normSq ↑z < 1
state_after: case h.e'_4
z : 𝔻
⊢ 1 = 1 ^ 2
tactic: convert (Real.sqrt_lt' one_pos).1 z.abs_lt_one
state_before: case h.e'_4
z : 𝔻
⊢ 1 = 1 ^ 2
state_after: no goals
tactic: exact (one_pow 2).symm
Theorem: Ideal.torsionOf_eq_top_iff
File: Mathlib/Algebra/Module/Torsion.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
m : M
⊢ torsionOf R M m = ⊤ ↔ m = 0
state_after: R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
m : M
h : torsionOf R M m = ⊤
⊢ m = 0
tactic: refine ⟨fun h => ?_, fun h => by simp [h]⟩
state_before: R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
m : M
h : torsionOf R M m = ⊤
⊢ m = 0
state_after: R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
m : M
h : torsionOf R M m = ⊤
⊢ 1 ∈ ⊤
tactic: rw [← one_smul R m, ← mem_torsionOf_iff m (1 : R), h]
state_before: R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
m : M
h : torsionOf R M m = ⊤
⊢ 1 ∈ ⊤
state_after: no goals
tactic: exact Submodule.mem_top
Theorem: Finset.map_noncommProd
File: Mathlib/Data/Finset/NoncommProd.lean

Proof steps:
state_before: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
f✝ : α → β → β
op : α → α → α
inst✝³ : Monoid β
inst✝² : Monoid γ
inst✝¹ : FunLike F β γ
inst✝ : MonoidHomClass F β γ
s : Finset α
f : α → β
comm : (↑s).Pairwise fun a b => Commute (f a) (f b)
g : F
⊢ g (s.noncommProd f comm) = s.noncommProd (fun i => g (f i)) ⋯
state_after: no goals
tactic: simp [noncommProd, Multiset.map_noncommProd]
Theorem: Ordinal.brange_const
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{u_4}
ho : o ≠ 0
c : α
⊢ (o.brange fun x x => c) = {c}
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{u_4}
ho : o ≠ 0
c : α
⊢ range (o.familyOfBFamily fun x x => c) = {c}
tactic: rw [← range_familyOfBFamily]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{u_4}
ho : o ≠ 0
c : α
⊢ range (o.familyOfBFamily fun x x => c) = {c}
state_after: no goals
tactic: exact @Set.range_const _ o.out.α (out_nonempty_iff_ne_zero.2 ho) c
Theorem: Nat.odd_sub'
File: Mathlib/Algebra/Ring/Parity.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
m n : ℕ
h : n ≤ m
⊢ Odd (m - n) ↔ (Odd n ↔ Even m)
state_after: no goals
tactic: rw [odd_iff_not_even, even_sub h, not_iff, not_iff_comm, odd_iff_not_even]
Theorem: Finset.affineCombination_map
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

Proof steps:
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
e : ι₂ ↪ ι
w : ι → k
p : ι → P
⊢ (affineCombination k (map e s₂) p) w = (affineCombination k s₂ (p ∘ ⇑e)) (w ∘ ⇑e)
state_after: no goals
tactic: simp_rw [affineCombination_apply, weightedVSubOfPoint_map]
Theorem: MeasureTheory.eLpNorm'_congr_nnnorm_ae
File: Mathlib/MeasureTheory/Function/LpSeminorm/Basic.lean

Proof steps:
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 g : α → F
hfg : ∀ᵐ (x : α) ∂μ, ‖f x‖₊ = ‖g x‖₊
⊢ eLpNorm' f q μ = eLpNorm' g q μ
state_after: α : 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 g : α → F
hfg : ∀ᵐ (x : α) ∂μ, ‖f x‖₊ = ‖g x‖₊
this : (fun x => ↑‖f x‖₊ ^ q) =ᶠ[ae μ] fun x => ↑‖g x‖₊ ^ q
⊢ eLpNorm' f q μ = eLpNorm' g q μ
tactic: have : (fun x => (‖f x‖₊ : ℝ≥0∞) ^ q) =ᵐ[μ] fun x => (‖g x‖₊ : ℝ≥0∞) ^ q :=
    hfg.mono fun x hx => by simp_rw [hx]
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 g : α → F
hfg : ∀ᵐ (x : α) ∂μ, ‖f x‖₊ = ‖g x‖₊
this : (fun x => ↑‖f x‖₊ ^ q) =ᶠ[ae μ] fun x => ↑‖g x‖₊ ^ q
⊢ eLpNorm' f q μ = eLpNorm' g q μ
state_after: no goals
tactic: simp only [eLpNorm', lintegral_congr_ae this]
Theorem: CategoryTheory.ShortComplex.leftHomologyMap_op
File: Mathlib/Algebra/Homology/ShortComplex/RightHomology.lean

Proof steps:
state_before: C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
inst✝¹ : S₁.HasLeftHomology
inst✝ : S₂.HasLeftHomology
⊢ (leftHomologyMap φ).op = S₂.rightHomologyOpIso.inv ≫ rightHomologyMap (opMap φ) ≫ S₁.rightHomologyOpIso.hom
state_after: C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
inst✝¹ : S₁.HasLeftHomology
inst✝ : S₂.HasLeftHomology
⊢ (leftHomologyMap' φ S₁.leftHomologyData S₂.leftHomologyData).op =
    rightHomologyMap' (𝟙 S₂.op) S₂.leftHomologyData.op S₂.op.rightHomologyData ≫
      rightHomologyMap' (opMap φ) S₂.op.rightHomologyData S₁.op.rightHomologyData ≫
        rightHomologyMap' (𝟙 S₁.op) S₁.op.rightHomologyData S₁.leftHomologyData.op
tactic: dsimp [rightHomologyOpIso, RightHomologyData.rightHomologyIso, rightHomologyMap,
    leftHomologyMap]
state_before: C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
inst✝¹ : S₁.HasLeftHomology
inst✝ : S₂.HasLeftHomology
⊢ (leftHomologyMap' φ S₁.leftHomologyData S₂.leftHomologyData).op =
    rightHomologyMap' (𝟙 S₂.op) S₂.leftHomologyData.op S₂.op.rightHomologyData ≫
      rightHomologyMap' (opMap φ) S₂.op.rightHomologyData S₁.op.rightHomologyData ≫
        rightHomologyMap' (𝟙 S₁.op) S₁.op.rightHomologyData S₁.leftHomologyData.op
state_after: no goals
tactic: simp only [← rightHomologyMap'_comp, comp_id, id_comp, leftHomologyMap'_op]
Theorem: Bornology.isVonNBounded_vadd
File: Mathlib/Analysis/LocallyConvex/Bounded.lean

Proof steps:
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousSMul 𝕜 E
inst✝ : ContinuousAdd E
s t : Set E
x : E
h : IsVonNBounded 𝕜 (x +ᵥ s)
⊢ IsVonNBounded 𝕜 s
state_after: no goals
tactic: simpa using h.vadd (-x)
Theorem: PNat.gcdB'_coe
File: Mathlib/Data/PNat/Xgcd.lean

Proof steps:
state_before: a b : ℕ+
⊢ ↑(a.gcdB' b) = a.gcdY b + ↑(a.gcdZ b)
state_after: a b : ℕ+
⊢ (a.xgcd b).y + (a.xgcd b).zp + 1 = (a.xgcd b).y + ((a.xgcd b).zp + 1)
tactic: dsimp [gcdB', gcdY, gcdZ, XgcdType.z]
state_before: a b : ℕ+
⊢ (a.xgcd b).y + (a.xgcd b).zp + 1 = (a.xgcd b).y + ((a.xgcd b).zp + 1)
state_after: no goals
tactic: rw [add_assoc]
Theorem: List.inter_nil'
File: Mathlib/Data/List/Lattice.lean

Proof steps:
state_before: α : Type u_1
l✝ l₁ l₂ : List α
p : α → Prop
a : α
inst✝ : DecidableEq α
l : List α
⊢ l ∩ [] = []
state_after: no goals
tactic: induction l with
  | nil => rfl
  | cons x xs ih => by_cases x ∈ xs <;> simp [ih]
Theorem: affineSpan_pair_le_of_mem_of_mem
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

Proof steps:
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
p₁ p₂ : P
s : AffineSubspace k P
hp₁ : p₁ ∈ s
hp₂ : p₂ ∈ s
⊢ affineSpan k {p₁, p₂} ≤ s
state_after: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
p₁ p₂ : P
s : AffineSubspace k P
hp₁ : p₁ ∈ s
hp₂ : p₂ ∈ s
⊢ p₁ ∈ ↑s ∧ p₂ ∈ ↑s
tactic: rw [affineSpan_le, Set.insert_subset_iff, Set.singleton_subset_iff]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
p₁ p₂ : P
s : AffineSubspace k P
hp₁ : p₁ ∈ s
hp₂ : p₂ ∈ s
⊢ p₁ ∈ ↑s ∧ p₂ ∈ ↑s
state_after: no goals
tactic: exact ⟨hp₁, hp₂⟩
Theorem: Nat.factorization_choose_le_log
File: Mathlib/Data/Nat/Choose/Factorization.lean

Proof steps:
state_before: p n k : ℕ
⊢ (n.choose k).factorization p ≤ log p n
state_after: case pos
p n k : ℕ
h : (n.choose k).factorization p = 0
⊢ (n.choose k).factorization p ≤ log p n

case neg
p n k : ℕ
h : ¬(n.choose k).factorization p = 0
⊢ (n.choose k).factorization p ≤ log p n
tactic: by_cases h : (choose n k).factorization p = 0
state_before: case neg
p n k : ℕ
h : ¬(n.choose k).factorization p = 0
⊢ (n.choose k).factorization p ≤ log p n
state_after: case neg
p n k : ℕ
h : ¬(n.choose k).factorization p = 0
hp : Prime p
⊢ (n.choose k).factorization p ≤ log p n
tactic: have hp : p.Prime := Not.imp_symm (choose n k).factorization_eq_zero_of_non_prime h
state_before: case neg
p n k : ℕ
h : ¬(n.choose k).factorization p = 0
hp : Prime p
⊢ (n.choose k).factorization p ≤ log p n
state_after: case neg
p n k : ℕ
h : ¬(n.choose k).factorization p = 0
hp : Prime p
hkn : k ≤ n
⊢ (n.choose k).factorization p ≤ log p n
tactic: have hkn : k ≤ n := by
    refine le_of_not_lt fun hnk => h ?_
    simp [choose_eq_zero_of_lt hnk]
state_before: case neg
p n k : ℕ
h : ¬(n.choose k).factorization p = 0
hp : Prime p
hkn : k ≤ n
⊢ (n.choose k).factorization p ≤ log p n
state_after: case neg
p n k : ℕ
h : ¬(n.choose k).factorization p = 0
hp : Prime p
hkn : k ≤ n
⊢ (multiplicity p (n.choose k)).get ⋯ ≤ log p n
tactic: rw [factorization_def _ hp, @padicValNat_def _ ⟨hp⟩ _ (choose_pos hkn)]
state_before: case neg
p n k : ℕ
h : ¬(n.choose k).factorization p = 0
hp : Prime p
hkn : k ≤ n
⊢ (multiplicity p (n.choose k)).get ⋯ ≤ log p n
state_after: case neg
p n k : ℕ
h : ¬(n.choose k).factorization p = 0
hp : Prime p
hkn : k ≤ n
⊢ (Finset.filter (fun i => p ^ i ≤ k % p ^ i + (n - k) % p ^ i) (Finset.Ico 1 (log p n + 1))).card ≤ log p n
tactic: simp only [hp.multiplicity_choose hkn (lt_add_one _), PartENat.get_natCast]
state_before: case neg
p n k : ℕ
h : ¬(n.choose k).factorization p = 0
hp : Prime p
hkn : k ≤ n
⊢ (Finset.filter (fun i => p ^ i ≤ k % p ^ i + (n - k) % p ^ i) (Finset.Ico 1 (log p n + 1))).card ≤ log p n
state_after: no goals
tactic: exact (Finset.card_filter_le _ _).trans (le_of_eq (Nat.card_Ico _ _))