ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Finset.affineCombination_affineCombinationSingleWeights
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 ι₂
inst✝ : DecidableEq ι
p : ι → P
i : ι
hi : i ∈ s
⊢ (affineCombination k s p) (affineCombinationSingleWeights k i) = p i
state_after: 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 ι₂
inst✝ : DecidableEq ι
p : ι → P
i : ι
hi : i ∈ s
⊢ ∀ i2 ∈ s, i2 ≠ i → affineCombinationSingleWeights k i i2 = 0
tactic: refine s.affineCombination_of_eq_one_of_eq_zero _ _ hi (by simp) ?_
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 ι₂
inst✝ : DecidableEq ι
p : ι → P
i : ι
hi : i ∈ s
⊢ ∀ i2 ∈ s, i2 ≠ i → affineCombinationSingleWeights k i i2 = 0
state_after: 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 ι₂
inst✝ : DecidableEq ι
p : ι → P
i : ι
hi : i ∈ s
j : ι
hj : j ≠ i
⊢ affineCombinationSingleWeights k i j = 0
tactic: rintro j - hj
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 ι₂
inst✝ : DecidableEq ι
p : ι → P
i : ι
hi : i ∈ s
j : ι
hj : j ≠ i
⊢ affineCombinationSingleWeights k i j = 0
state_after: no goals
tactic: simp [hj]
Theorem: Real.pi_lt_315
File: Mathlib/Data/Real/Pi/Bounds.lean

Proof steps:
state_before: ⊢ π < 3.15
state_after: no goals
tactic: pi_upper_bound [140 / 99, 279 / 151, 51 / 26, 412 / 207]
Theorem: Set.diff_singleton_sSubset
File: Mathlib/Data/Set/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
a✝ b : α
s✝ s₁ s₂ t t₁ t₂ u s : Set α
a : α
⊢ ¬Disjoint s {a} ↔ a ∈ s
state_after: no goals
tactic: simp
Theorem: Real.cos_sq_arctan
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Arctan.lean

Proof steps:
state_before: x : ℝ
⊢ cos (arctan x) ^ 2 = 1 / (1 + x ^ 2)
state_after: no goals
tactic: rw_mod_cast [one_div, ← inv_one_add_tan_sq (cos_arctan_pos x).ne', tan_arctan]
Theorem: Mathlib.Vector.cons_head_tail
File: Mathlib/Data/Vector/Defs.lean

Proof steps:
state_before: α : Type u
β : Type v
φ : Type w
n : ℕ
h : [].length = n.succ
⊢ cons (head ⟨[], h⟩) (tail ⟨[], h⟩) = ⟨[], h⟩
state_after: no goals
tactic: contradiction
Theorem: infEdist_inv
File: Mathlib/Analysis/Normed/Group/Pointwise.lean

Proof steps:
state_before: E : Type u_1
inst✝ : SeminormedCommGroup E
ε δ : ℝ
s✝ t : Set E
x✝ y x : E
s : Set E
⊢ infEdist x⁻¹ s = infEdist x s⁻¹
state_after: no goals
tactic: rw [← infEdist_inv_inv, inv_inv]
Theorem: CategoryTheory.Free.lift_map_single
File: Mathlib/Algebra/Category/ModuleCat/Adjunctions.lean

Proof steps:
state_before: R : Type u_1
inst✝⁴ : CommRing R
C : Type u
inst✝³ : Category.{v, u} C
D : Type u
inst✝² : Category.{v, u} D
inst✝¹ : Preadditive D
inst✝ : Linear R D
F : C ⥤ D
X Y : C
f : X ⟶ Y
r : R
⊢ (lift R F).map (single f r) = r • F.map f
state_after: no goals
tactic: simp
Theorem: Filter.lift'_iInf
File: Mathlib/Order/Filter/Lift.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
f✝ f₁ f₂ : Filter α
h h₁ h₂ : Set α → Set β
inst✝ : Nonempty ι
f : ι → Filter α
g : Set α → Set β
hg : ∀ (s t : Set α), g (s ∩ t) = g s ∩ g t
s t : Set α
⊢ (𝓟 ∘ g) (s ∩ t) = (𝓟 ∘ g) s ⊓ (𝓟 ∘ g) t
state_after: no goals
tactic: simp only [inf_principal, comp, hg]
Theorem: Mathlib.Meta.NormNum.isNat_natDiv
File: Mathlib/Tactic/NormNum/Basic.lean

Proof steps:
state_before: α : Type u
n✝¹ n✝ : ℕ
⊢ ↑n✝¹ / ↑n✝ = ↑(n✝¹.div n✝)
state_after: no goals
tactic: aesop
Theorem: MeasureTheory.Measure.integrable_compProd_iff
File: Mathlib/Probability/Kernel/MeasureCompProd.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
μ : Measure α
κ η : Kernel α β
inst✝² : SFinite μ
inst✝¹ : IsSFiniteKernel κ
E : Type u_3
inst✝ : NormedAddCommGroup E
f : α × β → E
hf : AEStronglyMeasurable f (μ ⊗ₘ κ)
⊢ Integrable f (μ ⊗ₘ κ) ↔
    (∀ᵐ (x : α) ∂μ, Integrable (fun y => f (x, y)) (κ x)) ∧ Integrable (fun x => ∫ (y : β), ‖f (x, y)‖ ∂κ x) μ
state_after: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
μ : Measure α
κ η : Kernel α β
inst✝² : SFinite μ
inst✝¹ : IsSFiniteKernel κ
E : Type u_3
inst✝ : NormedAddCommGroup E
f : α × β → E
hf : AEStronglyMeasurable f (μ ⊗ₘ κ)
⊢ (∀ᵐ (x : α) ∂(Kernel.const Unit μ) (), Integrable (fun y => f (x, y)) ((Kernel.prodMkLeft Unit κ) ((), x))) ∧
      Integrable (fun x => ∫ (y : β), ‖f (x, y)‖ ∂(Kernel.prodMkLeft Unit κ) ((), x)) ((Kernel.const Unit μ) ()) ↔
    (∀ᵐ (x : α) ∂μ, Integrable (fun y => f (x, y)) (κ x)) ∧ Integrable (fun x => ∫ (y : β), ‖f (x, y)‖ ∂κ x) μ
tactic: rw [Measure.compProd, ProbabilityTheory.integrable_compProd_iff hf]
state_before: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
μ : Measure α
κ η : Kernel α β
inst✝² : SFinite μ
inst✝¹ : IsSFiniteKernel κ
E : Type u_3
inst✝ : NormedAddCommGroup E
f : α × β → E
hf : AEStronglyMeasurable f (μ ⊗ₘ κ)
⊢ (∀ᵐ (x : α) ∂(Kernel.const Unit μ) (), Integrable (fun y => f (x, y)) ((Kernel.prodMkLeft Unit κ) ((), x))) ∧
      Integrable (fun x => ∫ (y : β), ‖f (x, y)‖ ∂(Kernel.prodMkLeft Unit κ) ((), x)) ((Kernel.const Unit μ) ()) ↔
    (∀ᵐ (x : α) ∂μ, Integrable (fun y => f (x, y)) (κ x)) ∧ Integrable (fun x => ∫ (y : β), ‖f (x, y)‖ ∂κ x) μ
state_after: no goals
tactic: rfl
Theorem: EReal.preimage_coe_Ico_top
File: Mathlib/Data/Real/EReal.lean

Proof steps:
state_before: x : ℝ
⊢ Real.toEReal ⁻¹' Ico ↑x ⊤ = Ici x
state_after: x : ℝ
⊢ Real.toEReal ⁻¹' (Ici ↑x ∩ Iio ⊤) = Ici x
tactic: rw [← Ici_inter_Iio]
state_before: x : ℝ
⊢ Real.toEReal ⁻¹' (Ici ↑x ∩ Iio ⊤) = Ici x
state_after: no goals
tactic: simp
Theorem: Complex.abs_intCast
File: Mathlib/Data/Complex/Abs.lean

Proof steps:
state_before: n : ℤ
⊢ abs ↑n = |↑n|
state_after: no goals
tactic: rw [← ofReal_intCast, abs_ofReal]
Theorem: Real.doublingGamma_add_one
File: Mathlib/Analysis/SpecialFunctions/Gamma/BohrMollerup.lean

Proof steps:
state_before: s : ℝ
hs : s ≠ 0
⊢ (s + 1).doublingGamma = s * s.doublingGamma
state_after: s : ℝ
hs : s ≠ 0
⊢ Gamma (s / 2 + 1 / 2) * (s / 2 * Gamma (s / 2)) * (2 ^ (s - 1) * 2) / √π =
    s * (Gamma (s / 2) * Gamma (s / 2 + 1 / 2) * 2 ^ (s - 1) / √π)
tactic: rw [doublingGamma, doublingGamma, (by abel : s + 1 - 1 = s - 1 + 1), add_div, add_assoc,
    add_halves (1 : ℝ), Gamma_add_one (div_ne_zero hs two_ne_zero), rpow_add two_pos, rpow_one]
state_before: s : ℝ
hs : s ≠ 0
⊢ Gamma (s / 2 + 1 / 2) * (s / 2 * Gamma (s / 2)) * (2 ^ (s - 1) * 2) / √π =
    s * (Gamma (s / 2) * Gamma (s / 2 + 1 / 2) * 2 ^ (s - 1) / √π)
state_after: no goals
tactic: ring
Theorem: CategoryTheory.Limits.IsInitial.isZero
File: Mathlib/CategoryTheory/Limits/Shapes/ZeroMorphisms.lean

Proof steps:
state_before: C : Type u
inst✝² : Category.{v, u} C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : HasZeroMorphisms C
X : C
hX : IsInitial X
⊢ IsZero X
state_after: C : Type u
inst✝² : Category.{v, u} C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : HasZeroMorphisms C
X : C
hX : IsInitial X
⊢ 𝟙 X = 0
tactic: rw [IsZero.iff_id_eq_zero]
state_before: C : Type u
inst✝² : Category.{v, u} C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : HasZeroMorphisms C
X : C
hX : IsInitial X
⊢ 𝟙 X = 0
state_after: no goals
tactic: apply hX.hom_ext
Theorem: Set.mulIndicator_compl'
File: Mathlib/Algebra/Group/Indicator.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
inst✝ : Group G
s✝ t : Set α
f✝ g : α → G
a : α
s : Set α
f : α → G
⊢ sᶜ.mulIndicator f = f / s.mulIndicator f
state_after: no goals
tactic: rw [div_eq_mul_inv, mulIndicator_compl]
Theorem: CategoryTheory.GradedObject.mapBifunctorRightUnitor_naturality
File: Mathlib/CategoryTheory/GradedObject/Unitor.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
I : Type u_3
J : Type u_4
inst✝⁷ : Category.{u_6, u_1} C
inst✝⁶ : Category.{u_5, u_2} D
inst✝⁵ : Zero I
inst✝⁴ : DecidableEq I
inst✝³ : HasInitial C
F : D ⥤ C ⥤ D
Y : C
e : F.flip.obj Y ≅ 𝟭 D
inst✝² : (X : D) → PreservesColimit (Functor.empty C) (F.obj X)
p : J × I → J
hp : ∀ (j : J), p (j, 0) = j
X X' : GradedObject J D
φ : X ⟶ X'
inst✝¹ : (((mapBifunctor F J I).obj X).obj ((single₀ I).obj Y)).HasMap p
inst✝ : (((mapBifunctor F J I).obj X').obj ((single₀ I).obj Y)).HasMap p
Y' : ?m.145927
⊢ mapBifunctorMapMap F p φ (𝟙 ((single₀ I).obj Y)) ≫ (mapBifunctorRightUnitor F Y e p hp X').hom =
    (mapBifunctorRightUnitor F Y e p hp X).hom ≫ φ
state_after: no goals
tactic: rw [← cancel_mono (mapBifunctorRightUnitor F Y e p hp X').inv, assoc, assoc, Iso.hom_inv_id,
    comp_id, mapBifunctorRightUnitor_inv_naturality, Iso.hom_inv_id_assoc]
Theorem: Complex.coe_realPart
File: Mathlib/Data/Complex/Module.lean

Proof steps:
state_before: A : Type u_1
inst✝³ : AddCommGroup A
inst✝² : Module ℂ A
inst✝¹ : StarAddMonoid A
inst✝ : StarModule ℂ A
z : ℂ
⊢ ↑(ℜ z) = ?m.419985
state_after: no goals
tactic: congrm (ℜ $((re_add_im z).symm))
state_before: A : Type u_1
inst✝³ : AddCommGroup A
inst✝² : Module ℂ A
inst✝¹ : StarAddMonoid A
inst✝ : StarModule ℂ A
z : ℂ
⊢ ↑(ℜ (↑z.re + ↑z.im * I)) = ↑z.re
state_after: A : Type u_1
inst✝³ : AddCommGroup A
inst✝² : Module ℂ A
inst✝¹ : StarAddMonoid A
inst✝ : StarModule ℂ A
z : ℂ
⊢ ↑(ℜ ↑z.re) + ↑(-ℑ ↑z.im) = ↑z.re
tactic: rw [map_add, AddSubmonoid.coe_add, mul_comm, ← smul_eq_mul, realPart_I_smul]
state_before: A : Type u_1
inst✝³ : AddCommGroup A
inst✝² : Module ℂ A
inst✝¹ : StarAddMonoid A
inst✝ : StarModule ℂ A
z : ℂ
⊢ ↑(ℜ ↑z.re) + ↑(-ℑ ↑z.im) = ↑z.re
state_after: no goals
tactic: simp [conj_ofReal, ← two_mul]
Theorem: PartialEquiv.isImage_source_target
File: Mathlib/Logic/Equiv/PartialEquiv.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
e : PartialEquiv α β
e' : PartialEquiv β γ
x : α
hx : x ∈ e.source
⊢ ↑e x ∈ e.target ↔ x ∈ e.source
state_after: no goals
tactic: simp [hx]
Theorem: Set.PairwiseDisjoint.image_finset_of_le
File: Mathlib/Data/Finset/Pairwise.lean

Proof steps:
state_before: α : Type u_1
ι : Type u_2
ι' : Type u_3
inst✝² : SemilatticeInf α
inst✝¹ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
inst✝ : DecidableEq ι
s : Finset ι
f : ι → α
hs : (↑s).PairwiseDisjoint f
g : ι → ι
hf : ∀ (a : ι), f (g a) ≤ f a
⊢ (↑(Finset.image g s)).PairwiseDisjoint f
state_after: α : Type u_1
ι : Type u_2
ι' : Type u_3
inst✝² : SemilatticeInf α
inst✝¹ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
inst✝ : DecidableEq ι
s : Finset ι
f : ι → α
hs : (↑s).PairwiseDisjoint f
g : ι → ι
hf : ∀ (a : ι), f (g a) ≤ f a
⊢ (g '' ↑s).PairwiseDisjoint f
tactic: rw [coe_image]
state_before: α : Type u_1
ι : Type u_2
ι' : Type u_3
inst✝² : SemilatticeInf α
inst✝¹ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
inst✝ : DecidableEq ι
s : Finset ι
f : ι → α
hs : (↑s).PairwiseDisjoint f
g : ι → ι
hf : ∀ (a : ι), f (g a) ≤ f a
⊢ (g '' ↑s).PairwiseDisjoint f
state_after: no goals
tactic: exact hs.image_of_le hf
Theorem: UniqueFactorizationMonoid.prime_of_factor
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : UniqueFactorizationMonoid α
a x : α
hx : x ∈ factors a
⊢ Prime x
state_after: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : UniqueFactorizationMonoid α
a x : α
hx : x ∈ factors a
ane0 : a ≠ 0
⊢ Prime x
tactic: have ane0 := ne_zero_of_mem_factors hx
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : UniqueFactorizationMonoid α
a x : α
hx : x ∈ factors a
ane0 : a ≠ 0
⊢ Prime x
state_after: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : UniqueFactorizationMonoid α
a x : α
ane0 : a ≠ 0
hx : x ∈ Classical.choose ⋯
⊢ Prime x
tactic: rw [factors, dif_neg ane0] at hx
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : UniqueFactorizationMonoid α
a x : α
ane0 : a ≠ 0
hx : x ∈ Classical.choose ⋯
⊢ Prime x
state_after: no goals
tactic: exact (Classical.choose_spec (UniqueFactorizationMonoid.exists_prime_factors a ane0)).1 x hx
Theorem: add_pow_eq_add_pow_mod_mul_pow_add_pow_div
File: Mathlib/Algebra/CharP/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝² : CommSemiring R
p : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : CharP R p
n : ℕ
x y : R
⊢ (x + y) ^ n = (x + y) ^ (n % p) * (x ^ p + y ^ p) ^ (n / p)
state_after: no goals
tactic: rw [← add_pow_char, ← pow_mul, ← pow_add, Nat.mod_add_div]
Theorem: eventually_closedBall_subset
File: Mathlib/Topology/MetricSpace/Pseudo/Lemmas.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
inst✝ : PseudoMetricSpace α
x : α
u : Set α
hu : u ∈ 𝓝 x
⊢ ∀ᶠ (r : ℝ) in 𝓝 0, closedBall x r ⊆ u
state_after: case intro.intro
ι : Type u_1
α : Type u_2
inst✝ : PseudoMetricSpace α
x : α
u : Set α
hu : u ∈ 𝓝 x
ε : ℝ
εpos : 0 < ε
hε : closedBall x ε ⊆ u
⊢ ∀ᶠ (r : ℝ) in 𝓝 0, closedBall x r ⊆ u
tactic: obtain ⟨ε, εpos, hε⟩ : ∃ ε, 0 < ε ∧ closedBall x ε ⊆ u := nhds_basis_closedBall.mem_iff.1 hu
state_before: case intro.intro
ι : Type u_1
α : Type u_2
inst✝ : PseudoMetricSpace α
x : α
u : Set α
hu : u ∈ 𝓝 x
ε : ℝ
εpos : 0 < ε
hε : closedBall x ε ⊆ u
⊢ ∀ᶠ (r : ℝ) in 𝓝 0, closedBall x r ⊆ u
state_after: case intro.intro
ι : Type u_1
α : Type u_2
inst✝ : PseudoMetricSpace α
x : α
u : Set α
hu : u ∈ 𝓝 x
ε : ℝ
εpos : 0 < ε
hε : closedBall x ε ⊆ u
this : Iic ε ∈ 𝓝 0
⊢ ∀ᶠ (r : ℝ) in 𝓝 0, closedBall x r ⊆ u
tactic: have : Iic ε ∈ 𝓝 (0 : ℝ) := Iic_mem_nhds εpos
state_before: case intro.intro
ι : Type u_1
α : Type u_2
inst✝ : PseudoMetricSpace α
x : α
u : Set α
hu : u ∈ 𝓝 x
ε : ℝ
εpos : 0 < ε
hε : closedBall x ε ⊆ u
this : Iic ε ∈ 𝓝 0
⊢ ∀ᶠ (r : ℝ) in 𝓝 0, closedBall x r ⊆ u
state_after: no goals
tactic: filter_upwards [this] with _ hr using Subset.trans (closedBall_subset_closedBall hr) hε
Theorem: MeasureTheory.setIntegral_tilted'
File: Mathlib/MeasureTheory/Measure/Tilted.lean

Proof steps:
state_before: α : Type u_1
mα : MeasurableSpace α
μ : Measure α
f✝ : α → ℝ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ
g : α → E
s : Set α
hs : MeasurableSet s
⊢ ∫ (x : α) in s, g x ∂μ.tilted f = ∫ (x : α) in s, (rexp (f x) / ∫ (x : α), rexp (f x) ∂μ) • g x ∂μ
state_after: case pos
α : Type u_1
mα : MeasurableSpace α
μ : Measure α
f✝ : α → ℝ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ
g : α → E
s : Set α
hs : MeasurableSet s
hf : AEMeasurable f μ
⊢ ∫ (x : α) in s, g x ∂μ.tilted f = ∫ (x : α) in s, (rexp (f x) / ∫ (x : α), rexp (f x) ∂μ) • g x ∂μ

case neg
α : Type u_1
mα : MeasurableSpace α
μ : Measure α
f✝ : α → ℝ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ
g : α → E
s : Set α
hs : MeasurableSet s
hf : ¬AEMeasurable f μ
⊢ ∫ (x : α) in s, g x ∂μ.tilted f = ∫ (x : α) in s, (rexp (f x) / ∫ (x : α), rexp (f x) ∂μ) • g x ∂μ
tactic: by_cases hf : AEMeasurable f μ
Theorem: Monoid.CoprodI.Word.prod_cons
File: Mathlib/GroupTheory/CoprodI.lean

Proof steps:
state_before: ι : Type u_1
M : ι → Type u_2
inst✝² : (i : ι) → Monoid (M i)
N : Type u_3
inst✝¹ : Monoid N
inst✝ : (i : ι) → DecidableEq (M i)
i : ι
m : M i
w : Word M
h1 : m ≠ 1
h2 : w.fstIdx ≠ some i
⊢ (cons m w h2 h1).prod = of m * w.prod
state_after: no goals
tactic: simp [cons, prod, List.map_cons, List.prod_cons]
Theorem: ENNReal.toNNReal_rpow
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

Proof steps:
state_before: x : ℝ≥0∞
z : ℝ
⊢ x.toNNReal ^ z = (x ^ z).toNNReal
state_after: case inl
x : ℝ≥0∞
z : ℝ
H : z < 0
⊢ x.toNNReal ^ z = (x ^ z).toNNReal

case inr.inl
x : ℝ≥0∞
z : ℝ
H : z = 0
⊢ x.toNNReal ^ z = (x ^ z).toNNReal

case inr.inr
x : ℝ≥0∞
z : ℝ
H : 0 < z
⊢ x.toNNReal ^ z = (x ^ z).toNNReal
tactic: rcases lt_trichotomy z 0 with (H | H | H)
Theorem: Matrix.transpose_nonsing_inv
File: Mathlib/LinearAlgebra/Matrix/NonsingularInverse.lean

Proof steps:
state_before: l : Type u_1
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A B : Matrix n n α
⊢ A⁻¹ᵀ = Aᵀ⁻¹
state_after: no goals
tactic: rw [inv_def, inv_def, transpose_smul, det_transpose, adjugate_transpose]
Theorem: PiTensorProduct.one_mul
File: Mathlib/RingTheory/PiTensorProduct.lean

Proof steps:
state_before: ι : Type u_1
R' : Type u_2
R : Type u_3
A : ι → Type u_4
inst✝⁴ : CommSemiring R
inst✝³ : (i : ι) → NonAssocSemiring (A i)
inst✝² : (i : ι) → Module R (A i)
inst✝¹ : ∀ (i : ι), SMulCommClass R (A i) (A i)
inst✝ : ∀ (i : ι), IsScalarTower R (A i) (A i)
x : ⨂[R] (i : ι), A i
⊢ (mul ((tprod R) 1)) x = x
state_after: no goals
tactic: induction x using PiTensorProduct.induction_on with
  | smul_tprod => simp
  | add _ _ h1 h2 => simp [map_add, h1, h2]
Theorem: Set.Icc_top
File: Mathlib/Order/Interval/Set/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : OrderTop α
a : α
⊢ Icc a ⊤ = Ici a
state_after: no goals
tactic: simp [← Ici_inter_Iic]
Theorem: Finset.pluennecke_ruzsa_inequality_nsmul_sub
File: Mathlib/Combinatorics/Additive/PluenneckeRuzsa.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : CommGroup α
inst✝ : DecidableEq α
A B✝ C : Finset α
hA : A.Nonempty
B : Finset α
n : ℕ
⊢ ↑(B ^ n).card ≤ (↑(A / B).card / ↑A.card) ^ n * ↑A.card
state_after: no goals
tactic: simpa only [_root_.pow_zero, div_one] using pluennecke_ruzsa_inequality_pow_div_pow_div hA _ _ 0
Theorem: Filter.limsup_const_bot
File: Mathlib/Order/LiminfLimsup.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : CompleteLattice α
f : Filter β
⊢ limsup (fun x => ⊥) f = ⊥
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : CompleteLattice α
f : Filter β
⊢ sInf {a | ∀ᶠ (n : β) in f, ⊥ ≤ a} ≤ ⊥
tactic: rw [limsup_eq, eq_bot_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : CompleteLattice α
f : Filter β
⊢ sInf {a | ∀ᶠ (n : β) in f, ⊥ ≤ a} ≤ ⊥
state_after: no goals
tactic: exact sInf_le (eventually_of_forall fun _ => le_rfl)
Theorem: Matrix.updateRow_eq_transvection
File: Mathlib/LinearAlgebra/Matrix/Transvection.lean

Proof steps:
state_before: n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝⁴ : Field 𝕜
inst✝³ : DecidableEq n
inst✝² : DecidableEq p
inst✝¹ : CommRing R
i j : n
inst✝ : Finite n
c : R
⊢ updateRow 1 i (1 i + c • 1 j) = transvection i j c
state_after: case intro
n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝⁴ : Field 𝕜
inst✝³ : DecidableEq n
inst✝² : DecidableEq p
inst✝¹ : CommRing R
i j : n
inst✝ : Finite n
c : R
val✝ : Fintype n
⊢ updateRow 1 i (1 i + c • 1 j) = transvection i j c
tactic: cases nonempty_fintype n
state_before: case intro
n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝⁴ : Field 𝕜
inst✝³ : DecidableEq n
inst✝² : DecidableEq p
inst✝¹ : CommRing R
i j : n
inst✝ : Finite n
c : R
val✝ : Fintype n
⊢ updateRow 1 i (1 i + c • 1 j) = transvection i j c
state_after: case intro.a
n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝⁴ : Field 𝕜
inst✝³ : DecidableEq n
inst✝² : DecidableEq p
inst✝¹ : CommRing R
i j : n
inst✝ : Finite n
c : R
val✝ : Fintype n
a b : n
⊢ updateRow 1 i (1 i + c • 1 j) a b = transvection i j c a b
tactic: ext a b
state_before: case intro.a
n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝⁴ : Field 𝕜
inst✝³ : DecidableEq n
inst✝² : DecidableEq p
inst✝¹ : CommRing R
i j : n
inst✝ : Finite n
c : R
val✝ : Fintype n
a b : n
⊢ updateRow 1 i (1 i + c • 1 j) a b = transvection i j c a b
state_after: case pos
n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝⁴ : Field 𝕜
inst✝³ : DecidableEq n
inst✝² : DecidableEq p
inst✝¹ : CommRing R
i j : n
inst✝ : Finite n
c : R
val✝ : Fintype n
a b : n
ha : i = a
⊢ updateRow 1 i (1 i + c • 1 j) a b = transvection i j c a b

case neg
n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝⁴ : Field 𝕜
inst✝³ : DecidableEq n
inst✝² : DecidableEq p
inst✝¹ : CommRing R
i j : n
inst✝ : Finite n
c : R
val✝ : Fintype n
a b : n
ha : ¬i = a
⊢ updateRow 1 i (1 i + c • 1 j) a b = transvection i j c a b
tactic: by_cases ha : i = a
Theorem: Real.strictConcaveOn_sqrt
File: Mathlib/Analysis/Convex/SpecificFunctions/Pow.lean

Proof steps:
state_before: ⊢ StrictConcaveOn ℝ (Ici 0) fun x => √x
state_after: ⊢ StrictConcaveOn ℝ (Ici 0) fun x => (fun x => x ^ (1 / 2)) x
tactic: rw [funext Real.sqrt_eq_rpow]
state_before: ⊢ StrictConcaveOn ℝ (Ici 0) fun x => (fun x => x ^ (1 / 2)) x
state_after: no goals
tactic: exact strictConcaveOn_rpow (by positivity) (by linarith)
Theorem: finprod_mem_inter_mulSupport
File: Mathlib/Algebra/BigOperators/Finprod.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
s : Set α
⊢ ∏ᶠ (i : α) (_ : i ∈ s ∩ mulSupport f), f i = ∏ᶠ (i : α) (_ : i ∈ s), f i
state_after: no goals
tactic: rw [finprod_mem_def, finprod_mem_def, mulIndicator_inter_mulSupport]
Theorem: HomologicalComplex.quasiIsoAt_map_iff_of_preservesHomology
File: Mathlib/Algebra/Homology/QuasiIso.lean

Proof steps:
state_before: ι : Type u_1
C : Type u
inst✝¹² : Category.{v, u} C
inst✝¹¹ : HasZeroMorphisms C
c : ComplexShape ι
K✝ L✝ M K' L' : HomologicalComplex C c
C₁ : Type u_2
C₂ : Type u_3
inst✝¹⁰ : Category.{u_4, u_2} C₁
inst✝⁹ : Category.{u_5, u_3} C₂
inst✝⁸ : Preadditive C₁
inst✝⁷ : Preadditive C₂
K L : HomologicalComplex C₁ c
φ : K ⟶ L
F : C₁ ⥤ C₂
inst✝⁶ : F.Additive
inst✝⁵ : F.PreservesHomology
i : ι
inst✝⁴ : K.HasHomology i
inst✝³ : L.HasHomology i
inst✝² : ((F.mapHomologicalComplex c).obj K).HasHomology i
inst✝¹ : ((F.mapHomologicalComplex c).obj L).HasHomology i
inst✝ : F.ReflectsIsomorphisms
⊢ QuasiIsoAt ((F.mapHomologicalComplex c).map φ) i ↔ QuasiIsoAt φ i
state_after: ι : Type u_1
C : Type u
inst✝¹² : Category.{v, u} C
inst✝¹¹ : HasZeroMorphisms C
c : ComplexShape ι
K✝ L✝ M K' L' : HomologicalComplex C c
C₁ : Type u_2
C₂ : Type u_3
inst✝¹⁰ : Category.{u_4, u_2} C₁
inst✝⁹ : Category.{u_5, u_3} C₂
inst✝⁸ : Preadditive C₁
inst✝⁷ : Preadditive C₂
K L : HomologicalComplex C₁ c
φ : K ⟶ L
F : C₁ ⥤ C₂
inst✝⁶ : F.Additive
inst✝⁵ : F.PreservesHomology
i : ι
inst✝⁴ : K.HasHomology i
inst✝³ : L.HasHomology i
inst✝² : ((F.mapHomologicalComplex c).obj K).HasHomology i
inst✝¹ : ((F.mapHomologicalComplex c).obj L).HasHomology i
inst✝ : F.ReflectsIsomorphisms
⊢ ShortComplex.QuasiIso ((shortComplexFunctor C₂ c i).map ((F.mapHomologicalComplex c).map φ)) ↔
    ShortComplex.QuasiIso ((shortComplexFunctor C₁ c i).map φ)
tactic: simp only [quasiIsoAt_iff]
state_before: ι : Type u_1
C : Type u
inst✝¹² : Category.{v, u} C
inst✝¹¹ : HasZeroMorphisms C
c : ComplexShape ι
K✝ L✝ M K' L' : HomologicalComplex C c
C₁ : Type u_2
C₂ : Type u_3
inst✝¹⁰ : Category.{u_4, u_2} C₁
inst✝⁹ : Category.{u_5, u_3} C₂
inst✝⁸ : Preadditive C₁
inst✝⁷ : Preadditive C₂
K L : HomologicalComplex C₁ c
φ : K ⟶ L
F : C₁ ⥤ C₂
inst✝⁶ : F.Additive
inst✝⁵ : F.PreservesHomology
i : ι
inst✝⁴ : K.HasHomology i
inst✝³ : L.HasHomology i
inst✝² : ((F.mapHomologicalComplex c).obj K).HasHomology i
inst✝¹ : ((F.mapHomologicalComplex c).obj L).HasHomology i
inst✝ : F.ReflectsIsomorphisms
⊢ ShortComplex.QuasiIso ((shortComplexFunctor C₂ c i).map ((F.mapHomologicalComplex c).map φ)) ↔
    ShortComplex.QuasiIso ((shortComplexFunctor C₁ c i).map φ)
state_after: no goals
tactic: exact ShortComplex.quasiIso_map_iff_of_preservesLeftHomology F
    ((shortComplexFunctor C₁ c i).map φ)
Theorem: Function.LeftInverse.comp
File: Mathlib/Logic/Function/Basic.lean

Proof steps:
state_before: α : Sort u_1
β : Sort u_2
γ : Sort u_3
f✝ f : α → β
g : β → α
h : β → γ
i : γ → β
hf : LeftInverse f g
hh : LeftInverse h i
a : γ
⊢ h (f (g (i a))) = a
state_after: no goals
tactic: rw [hf (i a), hh a]