ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: LieModuleHom.ext_iff
File: Mathlib/Algebra/Lie/Basic.lean

Proof steps:
state_before: R : Type u
L : Type v
M : Type w
N : Type w₁
P : Type w₂
inst✝¹⁴ : CommRing R
inst✝¹³ : LieRing L
inst✝¹² : LieAlgebra R L
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup N
inst✝⁹ : AddCommGroup P
inst✝⁸ : Module R M
inst✝⁷ : Module R N
inst✝⁶ : Module R P
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieRingModule L N
inst✝³ : LieRingModule L P
inst✝² : LieModule R L M
inst✝¹ : LieModule R L N
inst✝ : LieModule R L P
f g : M →ₗ⁅R,L⁆ N
⊢ f = g → ∀ (m : M), f m = g m
state_after: R : Type u
L : Type v
M : Type w
N : Type w₁
P : Type w₂
inst✝¹⁴ : CommRing R
inst✝¹³ : LieRing L
inst✝¹² : LieAlgebra R L
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup N
inst✝⁹ : AddCommGroup P
inst✝⁸ : Module R M
inst✝⁷ : Module R N
inst✝⁶ : Module R P
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieRingModule L N
inst✝³ : LieRingModule L P
inst✝² : LieModule R L M
inst✝¹ : LieModule R L N
inst✝ : LieModule R L P
f : M →ₗ⁅R,L⁆ N
m : M
⊢ f m = f m
tactic: rintro rfl m
state_before: R : Type u
L : Type v
M : Type w
N : Type w₁
P : Type w₂
inst✝¹⁴ : CommRing R
inst✝¹³ : LieRing L
inst✝¹² : LieAlgebra R L
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup N
inst✝⁹ : AddCommGroup P
inst✝⁸ : Module R M
inst✝⁷ : Module R N
inst✝⁶ : Module R P
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieRingModule L N
inst✝³ : LieRingModule L P
inst✝² : LieModule R L M
inst✝¹ : LieModule R L N
inst✝ : LieModule R L P
f : M →ₗ⁅R,L⁆ N
m : M
⊢ f m = f m
state_after: no goals
tactic: rfl
Theorem: Polynomial.mkDerivation_one_eq_derivative
File: Mathlib/Algebra/Polynomial/Derivation.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid A
inst✝² : Module R A
inst✝¹ : Module R[X] A
inst✝ : IsScalarTower R R[X] A
f : R[X]
⊢ ((mkDerivation R) 1) f = derivative f
state_after: R : Type u_1
A : Type u_2
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid A
inst✝² : Module R A
inst✝¹ : Module R[X] A
inst✝ : IsScalarTower R R[X] A
f : R[X]
⊢ derivative' f = derivative f
tactic: rw [mkDerivation_one_eq_derivative']
state_before: R : Type u_1
A : Type u_2
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid A
inst✝² : Module R A
inst✝¹ : Module R[X] A
inst✝ : IsScalarTower R R[X] A
f : R[X]
⊢ derivative' f = derivative f
state_after: no goals
tactic: rfl
Theorem: R1Space.sInf
File: Mathlib/Topology/Separation.lean

Proof steps:
state_before: X✝ : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X✝
inst✝¹ : FirstCountableTopology X✝
inst✝ : R1Space X✝
x y : X✝
X : Type u_3
T : Set (TopologicalSpace X)
hT : ∀ t ∈ T, R1Space X
⊢ R1Space X
state_after: X✝ : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X✝
inst✝¹ : FirstCountableTopology X✝
inst✝ : R1Space X✝
x y : X✝
X : Type u_3
T : Set (TopologicalSpace X)
hT : ∀ t ∈ T, R1Space X
x✝ : TopologicalSpace X := sInf T
⊢ R1Space X
tactic: let _ := sInf T
state_before: X✝ : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X✝
inst✝¹ : FirstCountableTopology X✝
inst✝ : R1Space X✝
x y : X✝
X : Type u_3
T : Set (TopologicalSpace X)
hT : ∀ t ∈ T, R1Space X
x✝ : TopologicalSpace X := sInf T
⊢ R1Space X
state_after: X✝ : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X✝
inst✝¹ : FirstCountableTopology X✝
inst✝ : R1Space X✝
x✝¹ y✝ : X✝
X : Type u_3
T : Set (TopologicalSpace X)
hT : ∀ t ∈ T, R1Space X
x✝ : TopologicalSpace X := sInf T
x y : X
⊢ x ⤳ y ∨ Disjoint (𝓝 x) (𝓝 y)
tactic: refine ⟨fun x y ↦ ?_⟩
state_before: X✝ : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X✝
inst✝¹ : FirstCountableTopology X✝
inst✝ : R1Space X✝
x✝¹ y✝ : X✝
X : Type u_3
T : Set (TopologicalSpace X)
hT : ∀ t ∈ T, R1Space X
x✝ : TopologicalSpace X := sInf T
x y : X
⊢ x ⤳ y ∨ Disjoint (𝓝 x) (𝓝 y)
state_after: X✝ : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X✝
inst✝¹ : FirstCountableTopology X✝
inst✝ : R1Space X✝
x✝¹ y✝ : X✝
X : Type u_3
T : Set (TopologicalSpace X)
hT : ∀ t ∈ T, R1Space X
x✝ : TopologicalSpace X := sInf T
x y : X
⊢ ⨅ t ∈ T, 𝓝 x ≤ ⨅ t ∈ T, 𝓝 y ∨ Disjoint (⨅ t ∈ T, 𝓝 x) (⨅ t ∈ T, 𝓝 y)
tactic: simp only [Specializes, nhds_sInf]
state_before: X✝ : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X✝
inst✝¹ : FirstCountableTopology X✝
inst✝ : R1Space X✝
x✝¹ y✝ : X✝
X : Type u_3
T : Set (TopologicalSpace X)
hT : ∀ t ∈ T, R1Space X
x✝ : TopologicalSpace X := sInf T
x y : X
⊢ ⨅ t ∈ T, 𝓝 x ≤ ⨅ t ∈ T, 𝓝 y ∨ Disjoint (⨅ t ∈ T, 𝓝 x) (⨅ t ∈ T, 𝓝 y)
state_after: case inl.intro.intro
X✝ : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X✝
inst✝¹ : FirstCountableTopology X✝
inst✝ : R1Space X✝
x✝¹ y✝ : X✝
X : Type u_3
T : Set (TopologicalSpace X)
hT : ∀ t ∈ T, R1Space X
x✝ : TopologicalSpace X := sInf T
x y : X
t : TopologicalSpace X
htT : t ∈ T
htd : Disjoint (𝓝 x) (𝓝 y)
⊢ ⨅ t ∈ T, 𝓝 x ≤ ⨅ t ∈ T, 𝓝 y ∨ Disjoint (⨅ t ∈ T, 𝓝 x) (⨅ t ∈ T, 𝓝 y)

case inr
X✝ : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X✝
inst✝¹ : FirstCountableTopology X✝
inst✝ : R1Space X✝
x✝¹ y✝ : X✝
X : Type u_3
T : Set (TopologicalSpace X)
hT : ∀ t ∈ T, R1Space X
x✝ : TopologicalSpace X := sInf T
x y : X
hTd : ¬∃ t ∈ T, Disjoint (𝓝 x) (𝓝 y)
⊢ ⨅ t ∈ T, 𝓝 x ≤ ⨅ t ∈ T, 𝓝 y ∨ Disjoint (⨅ t ∈ T, 𝓝 x) (⨅ t ∈ T, 𝓝 y)
tactic: rcases em (∃ t ∈ T, Disjoint (@nhds X t x) (@nhds X t y)) with ⟨t, htT, htd⟩ | hTd
Theorem: RingEquiv.symm_toRingHom_comp_toRingHom
File: Mathlib/Algebra/Ring/Equiv.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
S : Type u_5
S' : Type u_6
inst✝² : NonAssocSemiring R
inst✝¹ : NonAssocSemiring S
inst✝ : NonAssocSemiring S'
e : R ≃+* S
⊢ e.symm.toRingHom.comp e.toRingHom = RingHom.id R
state_after: case a
F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
S : Type u_5
S' : Type u_6
inst✝² : NonAssocSemiring R
inst✝¹ : NonAssocSemiring S
inst✝ : NonAssocSemiring S'
e : R ≃+* S
x✝ : R
⊢ (e.symm.toRingHom.comp e.toRingHom) x✝ = (RingHom.id R) x✝
tactic: ext
state_before: case a
F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
S : Type u_5
S' : Type u_6
inst✝² : NonAssocSemiring R
inst✝¹ : NonAssocSemiring S
inst✝ : NonAssocSemiring S'
e : R ≃+* S
x✝ : R
⊢ (e.symm.toRingHom.comp e.toRingHom) x✝ = (RingHom.id R) x✝
state_after: no goals
tactic: simp
Theorem: Asymptotics.isTheta_zero_left
File: Mathlib/Analysis/Asymptotics/Theta.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
G : Type u_5
E' : Type u_6
F' : Type u_7
G' : Type u_8
E'' : Type u_9
F'' : Type u_10
G'' : Type u_11
R : Type u_12
R' : Type u_13
𝕜 : Type u_14
𝕜' : Type u_15
inst✝¹² : Norm E
inst✝¹¹ : Norm F
inst✝¹⁰ : Norm G
inst✝⁹ : SeminormedAddCommGroup E'
inst✝⁸ : SeminormedAddCommGroup F'
inst✝⁷ : SeminormedAddCommGroup G'
inst✝⁶ : NormedAddCommGroup E''
inst✝⁵ : NormedAddCommGroup F''
inst✝⁴ : NormedAddCommGroup G''
inst✝³ : SeminormedRing R
inst✝² : SeminormedRing R'
inst✝¹ : NormedField 𝕜
inst✝ : NormedField 𝕜'
c c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
l l' : Filter α
⊢ (fun x => 0) =Θ[l] g'' ↔ g'' =ᶠ[l] 0
state_after: no goals
tactic: simp only [IsTheta, isBigO_zero, isBigO_zero_right_iff, true_and_iff]
Theorem: cardinal_mk_eq_cardinal_mk_field_pow_rank
File: Mathlib/LinearAlgebra/Dimension/FreeAndStrongRankCondition.lean

Proof steps:
state_before: K✝ : Type u
V✝ : Type v
inst✝⁹ : Ring K✝
inst✝⁸ : StrongRankCondition K✝
inst✝⁷ : AddCommGroup V✝
inst✝⁶ : Module K✝ V✝
K V : Type u
inst✝⁵ : Ring K
inst✝⁴ : StrongRankCondition K
inst✝³ : AddCommGroup V
inst✝² : Module K V
inst✝¹ : Module.Free K V
inst✝ : Module.Finite K V
⊢ #V = #K ^ Module.rank K V
state_after: no goals
tactic: simpa using lift_cardinal_mk_eq_lift_cardinal_mk_field_pow_lift_rank K V
Theorem: ProbabilityTheory.geometricPMFRealSum
File: Mathlib/Probability/Distributions/Geometric.lean

Proof steps:
state_before: p : ℝ
hp_pos : 0 < p
hp_le_one : p ≤ 1
⊢ HasSum (fun n => geometricPMFReal p n) 1
state_after: p : ℝ
hp_pos : 0 < p
hp_le_one : p ≤ 1
⊢ HasSum (fun n => (1 - p) ^ n * p) 1
tactic: unfold geometricPMFReal
state_before: p : ℝ
hp_pos : 0 < p
hp_le_one : p ≤ 1
⊢ HasSum (fun n => (1 - p) ^ n * p) 1
state_after: p : ℝ
hp_pos : 0 < p
hp_le_one : p ≤ 1
this : HasSum (fun n => (1 - p) ^ n) (1 - (1 - p))⁻¹
⊢ HasSum (fun n => (1 - p) ^ n * p) 1
tactic: have := hasSum_geometric_of_lt_one (sub_nonneg.mpr hp_le_one) (sub_lt_self 1 hp_pos)
state_before: p : ℝ
hp_pos : 0 < p
hp_le_one : p ≤ 1
this : HasSum (fun n => (1 - p) ^ n) (1 - (1 - p))⁻¹
⊢ HasSum (fun n => (1 - p) ^ n * p) 1
state_after: p : ℝ
hp_pos : 0 < p
hp_le_one : p ≤ 1
this : HasSum (fun i => (1 - p) ^ i * p) ((1 - (1 - p))⁻¹ * p)
⊢ HasSum (fun n => (1 - p) ^ n * p) 1
tactic: apply (hasSum_mul_right_iff (hp_pos.ne')).mpr at this
state_before: p : ℝ
hp_pos : 0 < p
hp_le_one : p ≤ 1
this : HasSum (fun i => (1 - p) ^ i * p) ((1 - (1 - p))⁻¹ * p)
⊢ HasSum (fun n => (1 - p) ^ n * p) 1
state_after: p : ℝ
hp_pos : 0 < p
hp_le_one : p ≤ 1
this : HasSum (fun i => (1 - p) ^ i * p) (p⁻¹ * p)
⊢ HasSum (fun n => (1 - p) ^ n * p) 1
tactic: simp only [sub_sub_cancel] at this
state_before: p : ℝ
hp_pos : 0 < p
hp_le_one : p ≤ 1
this : HasSum (fun i => (1 - p) ^ i * p) (p⁻¹ * p)
⊢ HasSum (fun n => (1 - p) ^ n * p) 1
state_after: p : ℝ
hp_pos : 0 < p
hp_le_one : p ≤ 1
this : HasSum (fun i => (1 - p) ^ i * p) 1
⊢ HasSum (fun n => (1 - p) ^ n * p) 1
tactic: rw [inv_mul_eq_div, div_self hp_pos.ne'] at this
state_before: p : ℝ
hp_pos : 0 < p
hp_le_one : p ≤ 1
this : HasSum (fun i => (1 - p) ^ i * p) 1
⊢ HasSum (fun n => (1 - p) ^ n * p) 1
state_after: no goals
tactic: exact this
Theorem: Fintype.prod_bijective
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

Proof steps:
state_before: ι✝ : Type u_1
κ✝ : Type u_2
α✝ : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α✝
a : α✝
f✝ g✝ : α✝ → β
ι : Type u_6
κ : Type u_7
α : Type u_8
inst✝² : Fintype ι
inst✝¹ : Fintype κ
inst✝ : CommMonoid α
e : ι → κ
he : Bijective e
f : ι → α
g : κ → α
h : ∀ (x : ι), f x = g (e x)
⊢ ∀ (i : ι), i ∈ univ ↔ (Equiv.ofBijective e he) i ∈ univ
state_after: no goals
tactic: simp
state_before: ι✝ : Type u_1
κ✝ : Type u_2
α✝ : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α✝
a : α✝
f✝ g✝ : α✝ → β
ι : Type u_6
κ : Type u_7
α : Type u_8
inst✝² : Fintype ι
inst✝¹ : Fintype κ
inst✝ : CommMonoid α
e : ι → κ
he : Bijective e
f : ι → α
g : κ → α
h : ∀ (x : ι), f x = g (e x)
⊢ ∀ i ∈ univ, f i = g ((Equiv.ofBijective e he) i)
state_after: no goals
tactic: simp [h]
Theorem: CategoryTheory.Limits.Multicofork.ofπ_pt
File: Mathlib/CategoryTheory/Limits/Shapes/Multiequalizer.lean

Proof steps:
state_before: C : Type u
inst✝ : Category.{v, u} C
I✝ : MultispanIndex C
K : Multicofork I✝
I : MultispanIndex C
P : C
π : (b : I.R) → I.right b ⟶ P
w : ∀ (a : I.L), I.fst a ≫ π (I.fstFrom a) = I.snd a ≫ π (I.sndFrom a)
⊢ ∀ ⦃X Y : WalkingMultispan I.fstFrom I.sndFrom⦄ (f : X ⟶ Y),
    I.multispan.map f ≫
        (fun x =>
            match x with
            | WalkingMultispan.left a => I.fst a ≫ π (I.fstFrom a)
            | WalkingMultispan.right b => π b)
          Y =
      (fun x =>
            match x with
            | WalkingMultispan.left a => I.fst a ≫ π (I.fstFrom a)
            | WalkingMultispan.right b => π b)
          X ≫
        ((Functor.const (WalkingMultispan I.fstFrom I.sndFrom)).obj P).map f
state_after: case left.right.snd
C : Type u
inst✝ : Category.{v, u} C
I✝ : MultispanIndex C
K : Multicofork I✝
I : MultispanIndex C
P : C
π : (b : I.R) → I.right b ⟶ P
w : ∀ (a : I.L), I.fst a ≫ π (I.fstFrom a) = I.snd a ≫ π (I.sndFrom a)
a✝ : I.L
⊢ I.snd a✝ ≫ π (I.sndFrom a✝) = I.fst a✝ ≫ π (I.fstFrom a✝)
tactic: rintro (_ | _) (_ | _) (_ | _ | _) <;> dsimp <;>
          simp only [Functor.map_id, MultispanIndex.multispan_obj_left,
            Category.id_comp, Category.comp_id, MultispanIndex.multispan_obj_right]
state_before: case left.right.snd
C : Type u
inst✝ : Category.{v, u} C
I✝ : MultispanIndex C
K : Multicofork I✝
I : MultispanIndex C
P : C
π : (b : I.R) → I.right b ⟶ P
w : ∀ (a : I.L), I.fst a ≫ π (I.fstFrom a) = I.snd a ≫ π (I.sndFrom a)
a✝ : I.L
⊢ I.snd a✝ ≫ π (I.sndFrom a✝) = I.fst a✝ ≫ π (I.fstFrom a✝)
state_after: case left.right.snd
C : Type u
inst✝ : Category.{v, u} C
I✝ : MultispanIndex C
K : Multicofork I✝
I : MultispanIndex C
P : C
π : (b : I.R) → I.right b ⟶ P
w : ∀ (a : I.L), I.fst a ≫ π (I.fstFrom a) = I.snd a ≫ π (I.sndFrom a)
a✝ : I.L
⊢ I.fst a✝ ≫ π (I.fstFrom a✝) = I.snd a✝ ≫ π (I.sndFrom a✝)
tactic: symm
state_before: case left.right.snd
C : Type u
inst✝ : Category.{v, u} C
I✝ : MultispanIndex C
K : Multicofork I✝
I : MultispanIndex C
P : C
π : (b : I.R) → I.right b ⟶ P
w : ∀ (a : I.L), I.fst a ≫ π (I.fstFrom a) = I.snd a ≫ π (I.sndFrom a)
a✝ : I.L
⊢ I.fst a✝ ≫ π (I.fstFrom a✝) = I.snd a✝ ≫ π (I.sndFrom a✝)
state_after: no goals
tactic: apply w
Theorem: AlgebraicGeometry.Scheme.OpenCover.gluedCover_V
File: Mathlib/AlgebraicGeometry/Gluing.lean

Proof steps:
state_before: X : Scheme
𝒰 : X.OpenCover
x : 𝒰.J
⊢ (fun x y => (pullbackSymmetry (𝒰.map x) (𝒰.map y)).hom) x x =
    𝟙
      ((fun x =>
          match x with
          | (x, y) => pullback (𝒰.map x) (𝒰.map y))
        (x, x))
state_after: no goals
tactic: simp
state_before: X : Scheme
𝒰 : X.OpenCover
x y z : 𝒰.J
⊢ (fun x y z => 𝒰.gluedCoverT' x y z) x y z ≫
      pullback.snd ((fun x y => pullback.fst (𝒰.map x) (𝒰.map y)) y z)
        ((fun x y => pullback.fst (𝒰.map x) (𝒰.map y)) y x) =
    pullback.fst ((fun x y => pullback.fst (𝒰.map x) (𝒰.map y)) x y)
        ((fun x y => pullback.fst (𝒰.map x) (𝒰.map y)) x z) ≫
      (fun x y => (pullbackSymmetry (𝒰.map x) (𝒰.map y)).hom) x y
state_after: no goals
tactic: apply pullback.hom_ext <;> simp
Theorem: CategoryTheory.Limits.diagramIsoParallelFamily_inv_app
File: Mathlib/CategoryTheory/Limits/Shapes/WideEqualizers.lean

Proof steps:
state_before: J : Type w
C : Type u
inst✝ : Category.{v, u} C
X Y : C
f : J → (X ⟶ Y)
F : WalkingParallelFamily J ⥤ C
j : WalkingParallelFamily J
⊢ F.obj j = (parallelFamily fun j => F.map (line j)).obj j
state_after: no goals
tactic: cases j <;> aesop_cat
state_before: J : Type w
C : Type u
inst✝ : Category.{v, u} C
X Y : C
f : J → (X ⟶ Y)
F : WalkingParallelFamily J ⥤ C
⊢ ∀ {X Y : WalkingParallelFamily J} (f : X ⟶ Y),
    F.map f ≫ ((fun j => eqToIso ⋯) Y).hom =
      ((fun j => eqToIso ⋯) X).hom ≫ (parallelFamily fun j => F.map (line j)).map f
state_after: no goals
tactic: rintro _ _ (_|_) <;> aesop_cat
Theorem: Stream'.dropLast_take
File: Mathlib/Data/Stream/Init.lean

Proof steps:
state_before: α : Type u
β : Type v
δ : Type w
n : ℕ
xs : Stream' α
⊢ (take n xs).dropLast = take (n - 1) xs
state_after: no goals
tactic: cases n with
  | zero => simp
  | succ n => rw [take_succ', List.dropLast_concat, Nat.add_one_sub_one]
Theorem: integral_rpow_mul_exp_neg_rpow
File: Mathlib/MeasureTheory/Integral/Gamma.lean

Proof steps:
state_before: p q : ℝ
hp : 0 < p
hq : -1 < q
⊢ ∫ (x : ℝ) in Ioi 0, x ^ q * rexp (-x ^ p) = 1 / p * Gamma ((q + 1) / p)
state_after: no goals
tactic: calc
    _ = ∫ (x : ℝ) in Ioi 0, (1 / p * x ^ (1 / p - 1)) • ((x ^ (1 / p)) ^ q * exp (-x)) := by
      rw [← integral_comp_rpow_Ioi _ (one_div_ne_zero (ne_of_gt hp)),
        abs_eq_self.mpr (le_of_lt (one_div_pos.mpr hp))]
      refine setIntegral_congr measurableSet_Ioi (fun _ hx => ?_)
      rw [← rpow_mul (le_of_lt hx) _ p, one_div_mul_cancel (ne_of_gt hp), rpow_one]
    _ = ∫ (x : ℝ) in Ioi 0, 1 / p * exp (-x) * x ^ (1 / p - 1 + q / p) := by
      simp_rw [smul_eq_mul, mul_assoc]
      refine setIntegral_congr measurableSet_Ioi (fun _ hx => ?_)
      rw [← rpow_mul (le_of_lt hx), div_mul_eq_mul_div, one_mul, rpow_add hx]
      ring_nf
    _ = (1 / p) * Gamma ((q + 1) / p) := by
      rw [Gamma_eq_integral (div_pos (neg_lt_iff_pos_add.mp hq) hp)]
      simp_rw [show 1 / p - 1 + q / p = (q + 1) / p - 1 by field_simp; ring, ← integral_mul_left,
        ← mul_assoc]
Theorem: PrimeSpectrum.zeroLocus_singleton_mul
File: Mathlib/RingTheory/PrimeSpectrum.lean

Proof steps:
state_before: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f g : R
x : PrimeSpectrum R
⊢ x ∈ zeroLocus {f * g} ↔ x ∈ zeroLocus {f} ∪ zeroLocus {g}
state_after: no goals
tactic: simpa using x.2.mul_mem_iff_mem_or_mem
Theorem: MonovaryOn.sum_comp_perm_smul_lt_sum_smul_iff
File: Mathlib/Algebra/Order/Rearrangement.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : LinearOrderedRing α
inst✝² : LinearOrderedAddCommGroup β
inst✝¹ : Module α β
inst✝ : OrderedSMul α β
s : Finset ι
σ : Perm ι
f : ι → α
g : ι → β
hfg : MonovaryOn f g ↑s
hσ : {x | σ x ≠ x} ⊆ ↑s
⊢ ∑ i ∈ s, f (σ i) • g i < ∑ i ∈ s, f i • g i ↔ ¬MonovaryOn (f ∘ ⇑σ) g ↑s
state_after: no goals
tactic: simp [← hfg.sum_comp_perm_smul_eq_sum_smul_iff hσ, lt_iff_le_and_ne,
    hfg.sum_comp_perm_smul_le_sum_smul hσ]
Theorem: CategoryTheory.ShortComplex.unop_g
File: Mathlib/Algebra/Homology/ShortComplex/Basic.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{?u.60429, u_1} C
inst✝² : Category.{?u.60433, u_2} D
inst✝¹ : HasZeroMorphisms C
S✝ S₁ S₂ S₃ : ShortComplex C
inst✝ : HasZeroMorphisms D
S : ShortComplex Cᵒᵖ
⊢ S.g.unop ≫ S.f.unop = 0
state_after: C : Type u_1
D : Type u_2
inst✝³ : Category.{?u.60429, u_1} C
inst✝² : Category.{?u.60433, u_2} D
inst✝¹ : HasZeroMorphisms C
S✝ S₁ S₂ S₃ : ShortComplex C
inst✝ : HasZeroMorphisms D
S : ShortComplex Cᵒᵖ
⊢ Quiver.Hom.unop 0 = 0
tactic: simp only [← unop_comp, S.zero]
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{?u.60429, u_1} C
inst✝² : Category.{?u.60433, u_2} D
inst✝¹ : HasZeroMorphisms C
S✝ S₁ S₂ S₃ : ShortComplex C
inst✝ : HasZeroMorphisms D
S : ShortComplex Cᵒᵖ
⊢ Quiver.Hom.unop 0 = 0
state_after: no goals
tactic: rfl
Theorem: StarConvex.mem_smul
File: Mathlib/Analysis/Convex/Star.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝² : LinearOrderedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
x : E
s : Set E
hs : StarConvex 𝕜 0 s
hx : x ∈ s
t : 𝕜
ht : 1 ≤ t
⊢ x ∈ t • s
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝² : LinearOrderedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
x : E
s : Set E
hs : StarConvex 𝕜 0 s
hx : x ∈ s
t : 𝕜
ht : 1 ≤ t
⊢ t⁻¹ • x ∈ s
tactic: rw [mem_smul_set_iff_inv_smul_mem₀ (zero_lt_one.trans_le ht).ne']
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝² : LinearOrderedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
x : E
s : Set E
hs : StarConvex 𝕜 0 s
hx : x ∈ s
t : 𝕜
ht : 1 ≤ t
⊢ t⁻¹ • x ∈ s
state_after: no goals
tactic: exact hs.smul_mem hx (by positivity) (inv_le_one ht)
Theorem: ZMod.natCast_toNat
File: Mathlib/Data/ZMod/Basic.lean

Proof steps:
state_before: m n✝ p n : ℕ
_h : 0 ≤ ↑n
⊢ ↑(↑n).toNat = ↑↑n
state_after: no goals
tactic: simp only [Int.cast_natCast, Int.toNat_natCast]
state_before: m n✝ p n : ℕ
h : 0 ≤ Int.negSucc n
⊢ ↑(Int.negSucc n).toNat = ↑(Int.negSucc n)
state_after: no goals
tactic: simp at h
Theorem: Matrix.lieConj_symm_apply
File: Mathlib/Algebra/Lie/Matrix.lean

Proof steps:
state_before: R : Type u
inst✝² : CommRing R
n : Type w
inst✝¹ : DecidableEq n
inst✝ : Fintype n
P A : Matrix n n R
h : Invertible P
⊢ (P.lieConj h).symm A = P⁻¹ * A * P
state_after: no goals
tactic: simp [LinearEquiv.symm_conj_apply, Matrix.lieConj, LinearMap.toMatrix'_comp,
    LinearMap.toMatrix'_toLin']
Theorem: SimpleGraph.right_nonuniformWitnesses_card
File: Mathlib/Combinatorics/SimpleGraph/Regularity/Uniform.lean

Proof steps:
state_before: α : Type u_1
𝕜 : Type u_2
inst✝¹ : LinearOrderedField 𝕜
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : 𝕜
s t : Finset α
a b : α
h : ¬G.IsUniform ε s t
⊢ ↑t.card * ε ≤ ↑(G.nonuniformWitnesses ε s t).2.card
state_after: α : Type u_1
𝕜 : Type u_2
inst✝¹ : LinearOrderedField 𝕜
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : 𝕜
s t : Finset α
a b : α
h : ¬G.IsUniform ε s t
⊢ ↑t.card * ε ≤ ↑(⋯.choose, ⋯.choose).2.card
tactic: rw [nonuniformWitnesses, dif_pos h]
state_before: α : Type u_1
𝕜 : Type u_2
inst✝¹ : LinearOrderedField 𝕜
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : 𝕜
s t : Finset α
a b : α
h : ¬G.IsUniform ε s t
⊢ ↑t.card * ε ≤ ↑(⋯.choose, ⋯.choose).2.card
state_after: no goals
tactic: exact (not_isUniform_iff.1 h).choose_spec.2.choose_spec.2.2.1
Theorem: FractionalIdeal.spanSingleton_inv_mul
File: Mathlib/RingTheory/DedekindDomain/Ideal.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
K : Type u_3
inst✝⁹ : CommRing R
inst✝⁸ : CommRing A
inst✝⁷ : Field K
R₁ : Type u_4
inst✝⁶ : CommRing R₁
inst✝⁵ : IsDomain R₁
inst✝⁴ : Algebra R₁ K
inst✝³ : IsFractionRing R₁ K
I J : FractionalIdeal R₁⁰ K
K' : Type u_5
inst✝² : Field K'
inst✝¹ : Algebra R₁ K'
inst✝ : IsFractionRing R₁ K'
x : K
hx : x ≠ 0
⊢ (spanSingleton R₁⁰ x)⁻¹ * spanSingleton R₁⁰ x = 1
state_after: no goals
tactic: rw [mul_comm, spanSingleton_mul_inv K hx]
Theorem: Ordinal.sub_self
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
a : Ordinal.{u_4}
⊢ a - a = 0
state_after: no goals
tactic: simpa only [add_zero] using add_sub_cancel a 0
Theorem: ball_zero_add_singleton
File: Mathlib/Analysis/Normed/Group/Pointwise.lean

Proof steps:
state_before: E : Type u_1
inst✝ : SeminormedCommGroup E
ε δ : ℝ
s t : Set E
x y : E
⊢ ball 1 δ * {x} = ball x δ
state_after: no goals
tactic: simp [ball_mul_singleton]
Theorem: Group.card_center_add_sum_card_noncenter_eq_card
File: Mathlib/GroupTheory/ClassEquation.lean

Proof steps:
state_before: G✝ : Type u_1
inst✝⁵ : Group G✝
G : Type u_2
inst✝⁴ : Group G
inst✝³ : (x : ConjClasses G) → Fintype ↑x.carrier
inst✝² : Fintype G
inst✝¹ : Fintype ↥(Subgroup.center G)
inst✝ : Fintype ↑(noncenter G)
⊢ Fintype.card ↥(Subgroup.center G) + ∑ x ∈ (noncenter G).toFinset, x.carrier.toFinset.card = Fintype.card G
state_after: case h.e'_2.h.e'_5
G✝ : Type u_1
inst✝⁵ : Group G✝
G : Type u_2
inst✝⁴ : Group G
inst✝³ : (x : ConjClasses G) → Fintype ↑x.carrier
inst✝² : Fintype G
inst✝¹ : Fintype ↥(Subgroup.center G)
inst✝ : Fintype ↑(noncenter G)
⊢ Fintype.card ↥(Subgroup.center G) = Nat.card ↥(Subgroup.center G)

case h.e'_2.h.e'_6
G✝ : Type u_1
inst✝⁵ : Group G✝
G : Type u_2
inst✝⁴ : Group G
inst✝³ : (x : ConjClasses G) → Fintype ↑x.carrier
inst✝² : Fintype G
inst✝¹ : Fintype ↥(Subgroup.center G)
inst✝ : Fintype ↑(noncenter G)
⊢ ∑ x ∈ (noncenter G).toFinset, x.carrier.toFinset.card =
    ∑ᶠ (x : ConjClasses G) (_ : x ∈ noncenter G), Nat.card ↑x.carrier

case h.e'_3
G✝ : Type u_1
inst✝⁵ : Group G✝
G : Type u_2
inst✝⁴ : Group G
inst✝³ : (x : ConjClasses G) → Fintype ↑x.carrier
inst✝² : Fintype G
inst✝¹ : Fintype ↥(Subgroup.center G)
inst✝ : Fintype ↑(noncenter G)
⊢ Fintype.card G = Nat.card G
tactic: convert Group.nat_card_center_add_sum_card_noncenter_eq_card G using 2
Theorem: Multiset.filter_attach'
File: Mathlib/Data/Multiset/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type v
γ : Type u_2
s : Multiset α
p : { a // a ∈ s } → Prop
inst✝¹ : DecidableEq α
inst✝ : DecidablePred p
⊢ filter p s.attach = map (Subtype.map id ⋯) (filter (fun x => ∃ (h : x ∈ s), p ⟨x, h⟩) s).attach
state_after: no goals
tactic: classical
  refine Multiset.map_injective Subtype.val_injective ?_
  rw [map_filter' _ Subtype.val_injective]
  simp only [Function.comp, Subtype.exists, coe_mk, Subtype.map,
    exists_and_right, exists_eq_right, attach_map_val, map_map, map_coe, id]
Theorem: Real.sqrtTwoAddSeries_two
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

Proof steps:
state_before: x : ℝ
⊢ sqrtTwoAddSeries 0 2 = √(2 + √2)
state_after: no goals
tactic: simp
Theorem: CategoryTheory.InjectiveResolution.iso_inv_naturality
File: Mathlib/CategoryTheory/Abelian/InjectiveResolution.lean

Proof steps:
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : Abelian C
inst✝ : HasInjectiveResolutions C
X Y : C
f : X ⟶ Y
I : InjectiveResolution X
J : InjectiveResolution Y
φ : I.cocomplex ⟶ J.cocomplex
comm : I.ι.f 0 ≫ φ.f 0 = f ≫ J.ι.f 0
⊢ I.iso.inv ≫ (injectiveResolutions C).map f = (HomotopyCategory.quotient C (ComplexShape.up ℕ)).map φ ≫ J.iso.inv
state_after: no goals
tactic: rw [← cancel_mono (J.iso).hom, Category.assoc, iso_hom_naturality f I J φ comm,
    Iso.inv_hom_id_assoc, Category.assoc, Iso.inv_hom_id, Category.comp_id]