ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: HasProd.even_mul_odd
File: Mathlib/Topology/Algebra/InfiniteSum/NatInt.lean

Proof steps:
state_before: M : Type u_1
inst✝³ : CommMonoid M
inst✝² : TopologicalSpace M
m m' : M
G : Type u_2
inst✝¹ : CommGroup G
g g' : G
inst✝ : ContinuousMul M
f : ℕ → M
he : HasProd (fun k => f (2 * k)) m
ho : HasProd (fun k => f (2 * k + 1)) m'
⊢ HasProd f (m * m')
state_after: M : Type u_1
inst✝³ : CommMonoid M
inst✝² : TopologicalSpace M
m m' : M
G : Type u_2
inst✝¹ : CommGroup G
g g' : G
inst✝ : ContinuousMul M
f : ℕ → M
he : HasProd (fun k => f (2 * k)) m
ho : HasProd (fun k => f (2 * k + 1)) m'
this : Injective fun x => 2 * x
⊢ HasProd f (m * m')
tactic: have := mul_right_injective₀ (two_ne_zero' ℕ)
state_before: M : Type u_1
inst✝³ : CommMonoid M
inst✝² : TopologicalSpace M
m m' : M
G : Type u_2
inst✝¹ : CommGroup G
g g' : G
inst✝ : ContinuousMul M
f : ℕ → M
he : HasProd (fun k => f (2 * k)) m
ho : HasProd (fun k => f (2 * k + 1)) m'
this : Injective fun x => 2 * x
⊢ HasProd f (m * m')
state_after: M : Type u_1
inst✝³ : CommMonoid M
inst✝² : TopologicalSpace M
m m' : M
G : Type u_2
inst✝¹ : CommGroup G
g g' : G
inst✝ : ContinuousMul M
f : ℕ → M
he : HasProd (fun k => f (2 * k)) m
this : Injective fun x => 2 * x
ho : HasProd (fun x => f ↑x) m'
⊢ HasProd f (m * m')
tactic: replace ho := ((add_left_injective 1).comp this).hasProd_range_iff.2 ho
state_before: M : Type u_1
inst✝³ : CommMonoid M
inst✝² : TopologicalSpace M
m m' : M
G : Type u_2
inst✝¹ : CommGroup G
g g' : G
inst✝ : ContinuousMul M
f : ℕ → M
he : HasProd (fun k => f (2 * k)) m
this : Injective fun x => 2 * x
ho : HasProd (fun x => f ↑x) m'
⊢ HasProd f (m * m')
state_after: M : Type u_1
inst✝³ : CommMonoid M
inst✝² : TopologicalSpace M
m m' : M
G : Type u_2
inst✝¹ : CommGroup G
g g' : G
inst✝ : ContinuousMul M
f : ℕ → M
he : HasProd (fun k => f (2 * k)) m
this : Injective fun x => 2 * x
ho : HasProd (fun x => f ↑x) m'
⊢ IsCompl (Set.range fun x => 2 * x) (Set.range ((fun x => x + 1) ∘ fun x => 2 * x))
tactic: refine (this.hasProd_range_iff.2 he).mul_isCompl ?_ ho
Theorem: CategoryTheory.ShortComplex.RightHomologyData.rightHomologyIso_hom_comp_homologyIso_inv
File: Mathlib/Algebra/Homology/ShortComplex/Homology.lean

Proof steps:
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
A : C
inst✝ : S.HasHomology
h : S.RightHomologyData
⊢ h.rightHomologyIso.hom ≫ h.homologyIso.inv = S.rightHomologyIso.hom
state_after: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
A : C
inst✝ : S.HasHomology
h : S.RightHomologyData
⊢ h.rightHomologyIso.hom ≫ (S.rightHomologyIso.symm ≪≫ h.rightHomologyIso).inv = S.rightHomologyIso.hom
tactic: dsimp only [homologyIso]
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
A : C
inst✝ : S.HasHomology
h : S.RightHomologyData
⊢ h.rightHomologyIso.hom ≫ (S.rightHomologyIso.symm ≪≫ h.rightHomologyIso).inv = S.rightHomologyIso.hom
state_after: no goals
tactic: simp only [Iso.trans_inv, Iso.symm_inv, Iso.hom_inv_id_assoc]
Theorem: CategoryTheory.Over.iteratedSliceForward_obj
File: Mathlib/CategoryTheory/Comma/Over.lean

Proof steps:
state_before: T : Type u₁
inst✝ : Category.{v₁, u₁} T
X : T
f : Over X
X✝ Y✝ : Over f
κ : X✝ ⟶ Y✝
⊢ κ.left.left ≫ ((fun α => mk α.hom.left) Y✝).hom = ((fun α => mk α.hom.left) X✝).hom
state_after: T : Type u₁
inst✝ : Category.{v₁, u₁} T
X : T
f : Over X
X✝ Y✝ : Over f
κ : X✝ ⟶ Y✝
⊢ κ.left.left ≫ Y✝.hom.left = X✝.hom.left
tactic: dsimp
state_before: T : Type u₁
inst✝ : Category.{v₁, u₁} T
X : T
f : Over X
X✝ Y✝ : Over f
κ : X✝ ⟶ Y✝
⊢ κ.left.left ≫ Y✝.hom.left = X✝.hom.left
state_after: T : Type u₁
inst✝ : Category.{v₁, u₁} T
X : T
f : Over X
X✝ Y✝ : Over f
κ : X✝ ⟶ Y✝
⊢ κ.left.left ≫ Y✝.hom.left = (κ.left ≫ Y✝.hom).left
tactic: rw [← Over.w κ]
state_before: T : Type u₁
inst✝ : Category.{v₁, u₁} T
X : T
f : Over X
X✝ Y✝ : Over f
κ : X✝ ⟶ Y✝
⊢ κ.left.left ≫ Y✝.hom.left = (κ.left ≫ Y✝.hom).left
state_after: no goals
tactic: rfl
Theorem: isOrderBornology_iff_eq_orderBornology
File: Mathlib/Topology/Order/Bornology.lean

Proof steps:
state_before: α : Type u_1
inst✝² : Bornology α
s t : Set α
inst✝¹ : Lattice α
inst✝ : Nonempty α
⊢ IsOrderBornology α ↔ inst✝² = orderBornology
state_after: α : Type u_1
inst✝² : Bornology α
s t : Set α
inst✝¹ : Lattice α
inst✝ : Nonempty α
h : IsOrderBornology α
⊢ inst✝² = orderBornology
tactic: refine ⟨fun h ↦ ?_, fun h ↦ ⟨fun s ↦ by rw [h, orderBornology_isBounded]⟩⟩
state_before: α : Type u_1
inst✝² : Bornology α
s t : Set α
inst✝¹ : Lattice α
inst✝ : Nonempty α
h : IsOrderBornology α
⊢ inst✝² = orderBornology
state_after: case h_cobounded.h
α : Type u_1
inst✝² : Bornology α
s✝ t : Set α
inst✝¹ : Lattice α
inst✝ : Nonempty α
h : IsOrderBornology α
s : Set α
⊢ s ∈ cobounded α ↔ s ∈ cobounded α
tactic: ext s
state_before: case h_cobounded.h
α : Type u_1
inst✝² : Bornology α
s✝ t : Set α
inst✝¹ : Lattice α
inst✝ : Nonempty α
h : IsOrderBornology α
s : Set α
⊢ s ∈ cobounded α ↔ s ∈ cobounded α
state_after: no goals
tactic: exact isBounded_compl_iff.symm.trans (h.1 _)
Theorem: ExistsContDiffBumpBase.w_nonneg
File: Mathlib/Analysis/Calculus/BumpFunction/FiniteDimension.lean

Proof steps:
state_before: E : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : FiniteDimensional ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
D : ℝ
x : E
⊢ 0 ≤ w D x
state_after: E : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : FiniteDimensional ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
D : ℝ
x : E
⊢ 0 ≤ ((∫ (x : E), u x ∂μ) * |D| ^ finrank ℝ E)⁻¹
tactic: apply mul_nonneg _ (u_nonneg _)
state_before: E : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : FiniteDimensional ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
D : ℝ
x : E
⊢ 0 ≤ ((∫ (x : E), u x ∂μ) * |D| ^ finrank ℝ E)⁻¹
state_after: E : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : FiniteDimensional ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
D : ℝ
x : E
⊢ 0 ≤ (∫ (x : E), u x ∂μ) * |D| ^ finrank ℝ E
tactic: apply inv_nonneg.2
state_before: E : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : FiniteDimensional ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
D : ℝ
x : E
⊢ 0 ≤ (∫ (x : E), u x ∂μ) * |D| ^ finrank ℝ E
state_after: E : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : FiniteDimensional ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
D : ℝ
x : E
⊢ 0 ≤ |D| ^ finrank ℝ E
tactic: apply mul_nonneg (u_int_pos E).le
state_before: E : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : FiniteDimensional ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
D : ℝ
x : E
⊢ 0 ≤ |D| ^ finrank ℝ E
state_after: no goals
tactic: apply pow_nonneg (abs_nonneg D)
Theorem: Orientation.oangle_rotation
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Rotation.lean

Proof steps:
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y : V
θ : Real.Angle
⊢ o.oangle ((o.rotation θ) x) ((o.rotation θ) y) = o.oangle x y
state_after: no goals
tactic: by_cases hx : x = 0 <;> by_cases hy : y = 0 <;> simp [hx, hy]
Theorem: HasDerivAt.cpow
File: Mathlib/Analysis/SpecialFunctions/Pow/Deriv.lean

Proof steps:
state_before: f g : ℂ → ℂ
s : Set ℂ
f' g' x c : ℂ
hf : HasDerivAt f f' x
hg : HasDerivAt g g' x
h0 : f x ∈ slitPlane
⊢ HasDerivAt (fun x => f x ^ g x) (g x * f x ^ (g x - 1) * f' + f x ^ g x * Complex.log (f x) * g') x
state_after: no goals
tactic: simpa only [aux] using (hf.hasFDerivAt.cpow hg h0).hasDerivAt
Theorem: OrthonormalBasis.coe_toBasis
File: Mathlib/Analysis/InnerProductSpace/PiL2.lean

Proof steps:
state_before: ι : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝⁹ : _root_.RCLike 𝕜
E : Type u_4
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
F' : Type u_7
inst✝² : NormedAddCommGroup F'
inst✝¹ : InnerProductSpace ℝ F'
inst✝ : Fintype ι
b : OrthonormalBasis ι 𝕜 E
⊢ ⇑b.toBasis = ⇑b
state_after: ι : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝⁹ : _root_.RCLike 𝕜
E : Type u_4
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
F' : Type u_7
inst✝² : NormedAddCommGroup F'
inst✝¹ : InnerProductSpace ℝ F'
inst✝ : Fintype ι
b : OrthonormalBasis ι 𝕜 E
⊢ ⇑(Basis.ofEquivFun b.repr.toLinearEquiv) = ⇑b
tactic: rw [OrthonormalBasis.toBasis]
state_before: ι : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝⁹ : _root_.RCLike 𝕜
E : Type u_4
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
F' : Type u_7
inst✝² : NormedAddCommGroup F'
inst✝¹ : InnerProductSpace ℝ F'
inst✝ : Fintype ι
b : OrthonormalBasis ι 𝕜 E
⊢ ⇑(Basis.ofEquivFun b.repr.toLinearEquiv) = ⇑b
state_after: case h
ι : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝⁹ : _root_.RCLike 𝕜
E : Type u_4
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
F' : Type u_7
inst✝² : NormedAddCommGroup F'
inst✝¹ : InnerProductSpace ℝ F'
inst✝ : Fintype ι
b : OrthonormalBasis ι 𝕜 E
j : ι
⊢ (Basis.ofEquivFun b.repr.toLinearEquiv) j = b j
tactic: ext j
state_before: case h
ι : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝⁹ : _root_.RCLike 𝕜
E : Type u_4
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
F' : Type u_7
inst✝² : NormedAddCommGroup F'
inst✝¹ : InnerProductSpace ℝ F'
inst✝ : Fintype ι
b : OrthonormalBasis ι 𝕜 E
j : ι
⊢ (Basis.ofEquivFun b.repr.toLinearEquiv) j = b j
state_after: no goals
tactic: classical
    rw [Basis.coe_ofEquivFun]
    congr
Theorem: LinearMap.BilinForm.compLeft_id
File: Mathlib/LinearAlgebra/BilinearForm/Hom.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M' : Type w
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
B : BilinForm R M
⊢ B.compLeft id = B
state_after: case H
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M' : Type w
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
B : BilinForm R M
x✝ y✝ : M
⊢ ((B.compLeft id) x✝) y✝ = (B x✝) y✝
tactic: ext
state_before: case H
R : Type u_1
M : Type u_2
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁷ : CommRing R₁
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
M' : Type w
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
B : BilinForm R M
x✝ y✝ : M
⊢ ((B.compLeft id) x✝) y✝ = (B x✝) y✝
state_after: no goals
tactic: rfl
Theorem: AddConstMapClass.map_sub_nsmul
File: Mathlib/Algebra/AddConstMap/Basic.lean

Proof steps:
state_before: F : Type u_1
G : Type u_2
H : Type u_3
inst✝³ : FunLike F G H
a : G
b : H
inst✝² : AddGroup G
inst✝¹ : AddGroup H
inst✝ : AddConstMapClass F G H a b
f : F
x : G
n : ℕ
⊢ f (x - n • a) = f x - n • b
state_after: no goals
tactic: conv_rhs => rw [← sub_add_cancel x (n • a), map_add_nsmul, add_sub_cancel_right]
Theorem: LiouvilleWith.mul_nat_iff
File: Mathlib/NumberTheory/Liouville/LiouvilleWith.lean

Proof steps:
state_before: p q x y : ℝ
r : ℚ
m : ℤ
n : ℕ
hn : n ≠ 0
⊢ LiouvilleWith p (x * ↑n) ↔ LiouvilleWith p x
state_after: no goals
tactic: rw [← Rat.cast_natCast, mul_rat_iff (Nat.cast_ne_zero.2 hn)]
Theorem: Finset.sup_product_left
File: Mathlib/Data/Finset/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✝¹ : SemilatticeSup α
inst✝ : OrderBot α
s✝ s₁ s₂ : Finset β
f✝ g : β → α
a✝ : α
s : Finset β
t : Finset γ
f : β × γ → α
a : α
⊢ (s ×ˢ t).sup f ≤ a ↔ (s.sup fun i => t.sup fun i' => f (i, i')) ≤ a
state_after: no goals
tactic: simp [@forall_swap _ γ]
Theorem: isOpen_sigma_iff
File: Mathlib/Topology/Constructions.lean

Proof steps:
state_before: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
ι : Type u_5
κ : Type u_6
σ : ι → Type u_7
τ : κ → Type u_8
inst✝² : (i : ι) → TopologicalSpace (σ i)
inst✝¹ : (k : κ) → TopologicalSpace (τ k)
inst✝ : TopologicalSpace X
s : Set (Sigma σ)
⊢ IsOpen s ↔ ∀ (i : ι), IsOpen (Sigma.mk i ⁻¹' s)
state_after: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
ι : Type u_5
κ : Type u_6
σ : ι → Type u_7
τ : κ → Type u_8
inst✝² : (i : ι) → TopologicalSpace (σ i)
inst✝¹ : (k : κ) → TopologicalSpace (τ k)
inst✝ : TopologicalSpace X
s : Set (Sigma σ)
⊢ (∀ (i : ι), IsOpen s) ↔ ∀ (i : ι), IsOpen (Sigma.mk i ⁻¹' s)
tactic: rw [isOpen_iSup_iff]
state_before: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
ι : Type u_5
κ : Type u_6
σ : ι → Type u_7
τ : κ → Type u_8
inst✝² : (i : ι) → TopologicalSpace (σ i)
inst✝¹ : (k : κ) → TopologicalSpace (τ k)
inst✝ : TopologicalSpace X
s : Set (Sigma σ)
⊢ (∀ (i : ι), IsOpen s) ↔ ∀ (i : ι), IsOpen (Sigma.mk i ⁻¹' s)
state_after: no goals
tactic: rfl
Theorem: Localization.localRingHom_comp
File: Mathlib/RingTheory/Localization/AtPrime.lean

Proof steps:
state_before: R : Type u_1
inst✝⁴ : CommSemiring R
M : Submonoid R
S✝ : Type u_2
inst✝³ : CommSemiring S✝
inst✝² : Algebra R S✝
P : Type u_3
inst✝¹ : CommSemiring P
I : Ideal R
hI : I.IsPrime
S : Type u_4
inst✝ : CommSemiring S
J : Ideal S
hJ : J.IsPrime
K : Ideal P
hK : K.IsPrime
f : R →+* S
hIJ : I = Ideal.comap f J
g : S →+* P
hJK : J = Ideal.comap g K
⊢ I = Ideal.comap (g.comp f) K
state_after: no goals
tactic: rw [hIJ, hJK, Ideal.comap_comap f g]
state_before: R : Type u_1
inst✝⁴ : CommSemiring R
M : Submonoid R
S✝ : Type u_2
inst✝³ : CommSemiring S✝
inst✝² : Algebra R S✝
P : Type u_3
inst✝¹ : CommSemiring P
I : Ideal R
hI : I.IsPrime
S : Type u_4
inst✝ : CommSemiring S
J : Ideal S
hJ : J.IsPrime
K : Ideal P
hK : K.IsPrime
f : R →+* S
hIJ : I = Ideal.comap f J
g : S →+* P
hJK : J = Ideal.comap g K
r : R
⊢ ((localRingHom J K g hJK).comp (localRingHom I J f hIJ)) ((algebraMap R (Localization.AtPrime I)) r) =
    (algebraMap P (Localization.AtPrime K)) ((g.comp f) r)
state_after: no goals
tactic: simp only [Function.comp_apply, RingHom.coe_comp, localRingHom_to_map]
Theorem: sdiff_eq_bot_iff
File: Mathlib/Order/Heyting/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : GeneralizedCoheytingAlgebra α
a b c d : α
⊢ a \ b = ⊥ ↔ a ≤ b
state_after: no goals
tactic: rw [← le_bot_iff, sdiff_le_iff, sup_bot_eq]
Theorem: Orientation.inner_rightAngleRotationAux₁_left
File: Mathlib/Analysis/InnerProductSpace/TwoDim.lean

Proof steps:
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
⊢ ⟪o.rightAngleRotationAux₁ x, y⟫_ℝ = (o.areaForm x) y
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
⊢ ⟪(InnerProductSpace.toDual ℝ E).symm (LinearMap.toContinuousLinearMap.symm.symm (o.areaForm x)), y⟫_ℝ =
    (o.areaForm x) y
tactic: simp only [rightAngleRotationAux₁, LinearEquiv.trans_symm, LinearIsometryEquiv.toLinearEquiv_symm,
    LinearMap.coe_comp, LinearEquiv.coe_coe, Function.comp_apply, LinearEquiv.trans_apply,
    LinearIsometryEquiv.coe_toLinearEquiv]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
⊢ ⟪(InnerProductSpace.toDual ℝ E).symm (LinearMap.toContinuousLinearMap.symm.symm (o.areaForm x)), y⟫_ℝ =
    (o.areaForm x) y
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
⊢ (LinearMap.toContinuousLinearMap.symm.symm (o.areaForm x)) y = (o.areaForm x) y
tactic: rw [InnerProductSpace.toDual_symm_apply]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
⊢ (LinearMap.toContinuousLinearMap.symm.symm (o.areaForm x)) y = (o.areaForm x) y
state_after: no goals
tactic: norm_cast
Theorem: min_eq_left
File: Mathlib/Init/Order/LinearOrder.lean

Proof steps:
state_before: α : Type u
inst✝ : LinearOrder α
a b : α
h : a ≤ b
⊢ min a b = a
state_after: case h
α : Type u
inst✝ : LinearOrder α
a b : α
h : a ≤ b
⊢ a = min a b
tactic: apply Eq.symm
state_before: case h
α : Type u
inst✝ : LinearOrder α
a b : α
h : a ≤ b
⊢ a = min a b
state_after: case h
α : Type u
inst✝ : LinearOrder α
a b : α
h : a ≤ b
⊢ ∀ {d : α}, d ≤ a → d ≤ b → d ≤ a
tactic: apply eq_min (le_refl _) h
state_before: case h
α : Type u
inst✝ : LinearOrder α
a b : α
h : a ≤ b
⊢ ∀ {d : α}, d ≤ a → d ≤ b → d ≤ a
state_after: case h
α : Type u
inst✝ : LinearOrder α
a b : α
h : a ≤ b
d✝ : α
a✝¹ : d✝ ≤ a
a✝ : d✝ ≤ b
⊢ d✝ ≤ a
tactic: intros
state_before: case h
α : Type u
inst✝ : LinearOrder α
a b : α
h : a ≤ b
d✝ : α
a✝¹ : d✝ ≤ a
a✝ : d✝ ≤ b
⊢ d✝ ≤ a
state_after: no goals
tactic: assumption
Theorem: finite_compl_fixedBy_swap
File: Mathlib/GroupTheory/Perm/ClosureSwap.lean

Proof steps:
state_before: G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : DecidableEq α
x y : α
⊢ {x, y}.Finite
state_after: no goals
tactic: simp
state_before: G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : DecidableEq α
x y z : α
h : z ∈ {x, y}ᶜ
⊢ z ∈ fixedBy α (swap x y)
state_after: no goals
tactic: apply swap_apply_of_ne_of_ne <;> rintro rfl <;> simp at h
Theorem: Finset.zero_mem_box
File: Mathlib/Order/Interval/Finset/Box.lean

Proof steps:
state_before: α : Type u_1
inst✝² : OrderedRing α
inst✝¹ : LocallyFiniteOrder α
inst✝ : DecidableEq α
n : ℕ
⊢ 0 ∈ box n ↔ n = 0
state_after: no goals
tactic: cases n <;> simp [box_succ_eq_sdiff]
Theorem: Set.mulIndicator_self_mul_compl_apply
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
inst✝ : MulOneClass M
s✝ t : Set α
f✝ g : α → M
a✝ : α
s : Set α
f : α → M
a : α
ha : a ∈ s
⊢ s.mulIndicator f a * sᶜ.mulIndicator f a = f a
state_after: no goals
tactic: simp [ha]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
M : Type u_4
N : Type u_5
inst✝ : MulOneClass M
s✝ t : Set α
f✝ g : α → M
a✝ : α
s : Set α
f : α → M
a : α
ha : a ∉ s
⊢ s.mulIndicator f a * sᶜ.mulIndicator f a = f a
state_after: no goals
tactic: simp [ha]
Theorem: AlgebraicTopology.DoldKan.Γ₀.Obj.Termwise.mapMono_δ₀
File: Mathlib/AlgebraicTopology/DoldKan/FunctorGamma.lean

Proof steps:
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
K K' : ChainComplex C ℕ
f : K ⟶ K'
Δ Δ' Δ'' : SimplexCategory
n : ℕ
⊢ Isδ₀ (SimplexCategory.δ 0)
state_after: no goals
tactic: rw [Isδ₀.iff]
Theorem: ProbabilityTheory.IsRatCondKernelCDFAux.bddBelow_range
File: Mathlib/Probability/Kernel/Disintegration/CdfToKernel.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : Kernel α (β × ℝ)
ν : Kernel α β
f : α × β → ℚ → ℝ
hf : IsRatCondKernelCDFAux f κ ν
a : α
⊢ ∀ᵐ (t : β) ∂ν a, ∀ (q : ℚ), BddBelow (range fun r => f (a, t) ↑r)
state_after: case h
α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : Kernel α (β × ℝ)
ν : Kernel α β
f : α × β → ℚ → ℝ
hf : IsRatCondKernelCDFAux f κ ν
a : α
c : β
hc : ∀ (q : ℚ), 0 ≤ f (a, c) q
⊢ ∀ (q : ℚ), BddBelow (range fun r => f (a, c) ↑r)
tactic: filter_upwards [hf.nonneg a] with c hc
state_before: case h
α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : Kernel α (β × ℝ)
ν : Kernel α β
f : α × β → ℚ → ℝ
hf : IsRatCondKernelCDFAux f κ ν
a : α
c : β
hc : ∀ (q : ℚ), 0 ≤ f (a, c) q
⊢ ∀ (q : ℚ), BddBelow (range fun r => f (a, c) ↑r)
state_after: case h
α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : Kernel α (β × ℝ)
ν : Kernel α β
f : α × β → ℚ → ℝ
hf : IsRatCondKernelCDFAux f κ ν
a : α
c : β
hc : ∀ (q : ℚ), 0 ≤ f (a, c) q
q : ℚ
⊢ 0 ∈ lowerBounds (range fun r => f (a, c) ↑r)
tactic: refine fun q ↦ ⟨0, ?_⟩
state_before: case h
α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : Kernel α (β × ℝ)
ν : Kernel α β
f : α × β → ℚ → ℝ
hf : IsRatCondKernelCDFAux f κ ν
a : α
c : β
hc : ∀ (q : ℚ), 0 ≤ f (a, c) q
q : ℚ
⊢ 0 ∈ lowerBounds (range fun r => f (a, c) ↑r)
state_after: no goals
tactic: simp [mem_lowerBounds, hc]
Theorem: Mon_.mkIso_hom_hom
File: Mathlib/CategoryTheory/Monoidal/Mon_.lean

Proof steps:
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
M✝ M N : Mon_ C
f : M.X ≅ N.X
one_f : autoParam (M.one ≫ f.hom = N.one) _auto✝
mul_f : autoParam (M.mul ≫ f.hom = (f.hom ⊗ f.hom) ≫ N.mul) _auto✝
⊢ N.one ≫ f.inv = M.one
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
M✝ M N : Mon_ C
f : M.X ≅ N.X
one_f : autoParam (M.one ≫ f.hom = N.one) _auto✝
mul_f : autoParam (M.mul ≫ f.hom = (f.hom ⊗ f.hom) ≫ N.mul) _auto✝
⊢ (M.one ≫ f.hom) ≫ f.inv = M.one
tactic: rw [← one_f]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
M✝ M N : Mon_ C
f : M.X ≅ N.X
one_f : autoParam (M.one ≫ f.hom = N.one) _auto✝
mul_f : autoParam (M.mul ≫ f.hom = (f.hom ⊗ f.hom) ≫ N.mul) _auto✝
⊢ (M.one ≫ f.hom) ≫ f.inv = M.one
state_after: no goals
tactic: simp
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
M✝ M N : Mon_ C
f : M.X ≅ N.X
one_f : autoParam (M.one ≫ f.hom = N.one) _auto✝
mul_f : autoParam (M.mul ≫ f.hom = (f.hom ⊗ f.hom) ≫ N.mul) _auto✝
⊢ N.mul ≫ f.inv = (f.inv ⊗ f.inv) ≫ M.mul
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
M✝ M N : Mon_ C
f : M.X ≅ N.X
one_f : autoParam (M.one ≫ f.hom = N.one) _auto✝
mul_f : autoParam (M.mul ≫ f.hom = (f.hom ⊗ f.hom) ≫ N.mul) _auto✝
⊢ (N.mul ≫ f.inv) ≫ f.hom = ((f.inv ⊗ f.inv) ≫ M.mul) ≫ f.hom
tactic: rw [← cancel_mono f.hom]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
M✝ M N : Mon_ C
f : M.X ≅ N.X
one_f : autoParam (M.one ≫ f.hom = N.one) _auto✝
mul_f : autoParam (M.mul ≫ f.hom = (f.hom ⊗ f.hom) ≫ N.mul) _auto✝
⊢ (N.mul ≫ f.inv) ≫ f.hom = ((f.inv ⊗ f.inv) ≫ M.mul) ≫ f.hom
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
M✝ M N : Mon_ C
f : M.X ≅ N.X
one_f : autoParam (M.one ≫ f.hom = N.one) _auto✝
mul_f : autoParam (M.mul ≫ f.hom = (f.hom ⊗ f.hom) ≫ N.mul) _auto✝
⊢ (N.mul ≫ f.inv) ≫ f.hom = (f.inv ⊗ f.inv) ≫ (f.hom ⊗ f.hom) ≫ N.mul
tactic: slice_rhs 2 3 => rw [mul_f]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
M✝ M N : Mon_ C
f : M.X ≅ N.X
one_f : autoParam (M.one ≫ f.hom = N.one) _auto✝
mul_f : autoParam (M.mul ≫ f.hom = (f.hom ⊗ f.hom) ≫ N.mul) _auto✝
⊢ (N.mul ≫ f.inv) ≫ f.hom = (f.inv ⊗ f.inv) ≫ (f.hom ⊗ f.hom) ≫ N.mul
state_after: no goals
tactic: simp