ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: IsArtinianRing.localization_surjective
File: Mathlib/RingTheory/Artinian.lean

Proof steps:
state_before: R : Type u_1
inst✝⁴ : CommRing R
inst✝³ : IsArtinianRing R
S : Submonoid R
L : Type u_2
inst✝² : CommRing L
inst✝¹ : Algebra R L
inst✝ : IsLocalization S L
⊢ Surjective ⇑(algebraMap R L)
state_after: R : Type u_1
inst✝⁴ : CommRing R
inst✝³ : IsArtinianRing R
S : Submonoid R
L : Type u_2
inst✝² : CommRing L
inst✝¹ : Algebra R L
inst✝ : IsLocalization S L
r' : L
⊢ ∃ a, (algebraMap R L) a = r'
tactic: intro r'
state_before: R : Type u_1
inst✝⁴ : CommRing R
inst✝³ : IsArtinianRing R
S : Submonoid R
L : Type u_2
inst✝² : CommRing L
inst✝¹ : Algebra R L
inst✝ : IsLocalization S L
r' : L
⊢ ∃ a, (algebraMap R L) a = r'
state_after: case intro.intro
R : Type u_1
inst✝⁴ : CommRing R
inst✝³ : IsArtinianRing R
S : Submonoid R
L : Type u_2
inst✝² : CommRing L
inst✝¹ : Algebra R L
inst✝ : IsLocalization S L
r₁ : R
s : ↥S
⊢ ∃ a, (algebraMap R L) a = IsLocalization.mk' L r₁ s
tactic: obtain ⟨r₁, s, rfl⟩ := IsLocalization.mk'_surjective S r'
state_before: case intro.intro
R : Type u_1
inst✝⁴ : CommRing R
inst✝³ : IsArtinianRing R
S : Submonoid R
L : Type u_2
inst✝² : CommRing L
inst✝¹ : Algebra R L
inst✝ : IsLocalization S L
r₁ : R
s : ↥S
⊢ ∃ a, (algebraMap R L) a = IsLocalization.mk' L r₁ s
state_after: case intro.intro.intro
R : Type u_1
inst✝⁴ : CommRing R
inst✝³ : IsArtinianRing R
S : Submonoid R
L : Type u_2
inst✝² : CommRing L
inst✝¹ : Algebra R L
inst✝ : IsLocalization S L
r₁ : R
s : ↥S
r₂ : R
h : IsLocalization.mk' L 1 s = (algebraMap R L) r₂
⊢ ∃ a, (algebraMap R L) a = IsLocalization.mk' L r₁ s
tactic: obtain ⟨r₂, h⟩ : ∃ r : R, IsLocalization.mk' L 1 s = algebraMap R L r := by
    obtain ⟨n, r, hr⟩ := IsArtinian.exists_pow_succ_smul_dvd (s : R) (1 : R)
    use r
    rw [smul_eq_mul, smul_eq_mul, pow_succ, mul_assoc] at hr
    apply_fun algebraMap R L at hr
    simp only [map_mul] at hr
    rw [← IsLocalization.mk'_one (M := S) L, IsLocalization.mk'_eq_iff_eq, mul_one,
      Submonoid.coe_one, ← (IsLocalization.map_units L (s ^ n)).mul_left_cancel hr, map_mul]
state_before: case intro.intro.intro
R : Type u_1
inst✝⁴ : CommRing R
inst✝³ : IsArtinianRing R
S : Submonoid R
L : Type u_2
inst✝² : CommRing L
inst✝¹ : Algebra R L
inst✝ : IsLocalization S L
r₁ : R
s : ↥S
r₂ : R
h : IsLocalization.mk' L 1 s = (algebraMap R L) r₂
⊢ ∃ a, (algebraMap R L) a = IsLocalization.mk' L r₁ s
state_after: no goals
tactic: exact ⟨r₁ * r₂, by rw [IsLocalization.mk'_eq_mul_mk'_one, map_mul, h]⟩
Theorem: LocalizedModule.mkLinearMap_apply
File: Mathlib/Algebra/Module/LocalizedModule.lean

Proof steps:
state_before: R : Type u
inst✝⁵ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
T : Type u_1
inst✝² : CommSemiring T
inst✝¹ : Algebra R T
inst✝ : IsLocalization S T
x y : M
⊢ (fun m => mk m 1) (x + y) = (fun m => mk m 1) x + (fun m => mk m 1) y
state_after: no goals
tactic: simp [mk_add_mk]
Theorem: CategoryTheory.GradedObject.eqToHom_apply
File: Mathlib/CategoryTheory/GradedObject.lean

Proof steps:
state_before: C : Type u
inst✝ : Category.{v, u} C
β : Type w
X Y : β → C
h : X = Y
b : β
⊢ X b = Y b
state_after: no goals
tactic: rw [h]
state_before: C : Type u
inst✝ : Category.{v, u} C
β : Type w
X Y : β → C
h : X = Y
b : β
⊢ eqToHom h b = eqToHom ⋯
state_after: C : Type u
inst✝ : Category.{v, u} C
β : Type w
X : β → C
b : β
⊢ eqToHom ⋯ b = eqToHom ⋯
tactic: subst h
state_before: C : Type u
inst✝ : Category.{v, u} C
β : Type w
X : β → C
b : β
⊢ eqToHom ⋯ b = eqToHom ⋯
state_after: no goals
tactic: rfl
Theorem: Path.Homotopy.transReflReparamAux_zero
File: Mathlib/AlgebraicTopology/FundamentalGroupoid/Basic.lean

Proof steps:
state_before: X : Type u
Y : Type v
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x₀ x₁ : X
⊢ transReflReparamAux 0 = 0
state_after: no goals
tactic: norm_num [transReflReparamAux]
Theorem: Function.const_lt_const
File: Mathlib/Order/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝¹ : Preorder α
inst✝ : Nonempty β
a b : α
⊢ const β a < const β b ↔ a < b
state_after: no goals
tactic: simpa [Pi.lt_def] using le_of_lt
Theorem: HahnSeries.isUnit_iff
File: Mathlib/RingTheory/HahnSeries/Summable.lean

Proof steps:
state_before: Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedAddCommGroup Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
⊢ IsUnit x ↔ IsUnit x.leadingCoeff
state_after: case mp
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedAddCommGroup Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
⊢ IsUnit x → IsUnit x.leadingCoeff

case mpr
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedAddCommGroup Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
⊢ IsUnit x.leadingCoeff → IsUnit x
tactic: constructor
Theorem: Fin.succ_zero_eq_one'
File: Mathlib/Data/Fin/Basic.lean

Proof steps:
state_before: n m : ℕ
inst✝ : NeZero n
⊢ succ 0 = 1
state_after: case zero
m : ℕ
inst✝ : NeZero 0
⊢ succ 0 = 1

case succ
m n✝ : ℕ
inst✝ : NeZero (n✝ + 1)
⊢ succ 0 = 1
tactic: cases n
Theorem: MeasureTheory.toReal_rnDeriv_tilted_right
File: Mathlib/MeasureTheory/Measure/Tilted.lean

Proof steps:
state_before: α : Type u_1
mα : MeasurableSpace α
μ✝ : Measure α
f : α → ℝ
μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
hf : Integrable (fun x => rexp (f x)) ν
⊢ (fun x => (μ.rnDeriv (ν.tilted f) x).toReal) =ᶠ[ae ν] fun x =>
    (rexp (-f x) * ∫ (x : α), rexp (f x) ∂ν) * (μ.rnDeriv ν x).toReal
state_after: case h
α : Type u_1
mα : MeasurableSpace α
μ✝ : Measure α
f : α → ℝ
μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
hf : Integrable (fun x => rexp (f x)) ν
x : α
hx : μ.rnDeriv (ν.tilted f) x = ENNReal.ofReal (rexp (-f x) * ∫ (x : α), rexp (f x) ∂ν) * μ.rnDeriv ν x
⊢ (μ.rnDeriv (ν.tilted f) x).toReal = (rexp (-f x) * ∫ (x : α), rexp (f x) ∂ν) * (μ.rnDeriv ν x).toReal
tactic: filter_upwards [rnDeriv_tilted_right μ ν hf] with x hx
state_before: case h
α : Type u_1
mα : MeasurableSpace α
μ✝ : Measure α
f : α → ℝ
μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
hf : Integrable (fun x => rexp (f x)) ν
x : α
hx : μ.rnDeriv (ν.tilted f) x = ENNReal.ofReal (rexp (-f x) * ∫ (x : α), rexp (f x) ∂ν) * μ.rnDeriv ν x
⊢ (μ.rnDeriv (ν.tilted f) x).toReal = (rexp (-f x) * ∫ (x : α), rexp (f x) ∂ν) * (μ.rnDeriv ν x).toReal
state_after: case h
α : Type u_1
mα : MeasurableSpace α
μ✝ : Measure α
f : α → ℝ
μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
hf : Integrable (fun x => rexp (f x)) ν
x : α
hx : μ.rnDeriv (ν.tilted f) x = ENNReal.ofReal (rexp (-f x) * ∫ (x : α), rexp (f x) ∂ν) * μ.rnDeriv ν x
⊢ (ENNReal.ofReal (rexp (-f x) * ∫ (x : α), rexp (f x) ∂ν) * μ.rnDeriv ν x).toReal =
    (rexp (-f x) * ∫ (x : α), rexp (f x) ∂ν) * (μ.rnDeriv ν x).toReal
tactic: rw [hx]
state_before: case h
α : Type u_1
mα : MeasurableSpace α
μ✝ : Measure α
f : α → ℝ
μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
hf : Integrable (fun x => rexp (f x)) ν
x : α
hx : μ.rnDeriv (ν.tilted f) x = ENNReal.ofReal (rexp (-f x) * ∫ (x : α), rexp (f x) ∂ν) * μ.rnDeriv ν x
⊢ (ENNReal.ofReal (rexp (-f x) * ∫ (x : α), rexp (f x) ∂ν) * μ.rnDeriv ν x).toReal =
    (rexp (-f x) * ∫ (x : α), rexp (f x) ∂ν) * (μ.rnDeriv ν x).toReal
state_after: case h
α : Type u_1
mα : MeasurableSpace α
μ✝ : Measure α
f : α → ℝ
μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
hf : Integrable (fun x => rexp (f x)) ν
x : α
hx : μ.rnDeriv (ν.tilted f) x = ENNReal.ofReal (rexp (-f x) * ∫ (x : α), rexp (f x) ∂ν) * μ.rnDeriv ν x
⊢ 0 ≤ rexp (-f x) * ∫ (x : α), rexp (f x) ∂ν ∨ (μ.rnDeriv ν x).toReal = 0
tactic: simp only [ENNReal.toReal_mul, gt_iff_lt, mul_eq_mul_right_iff, ENNReal.toReal_ofReal_eq_iff]
state_before: case h
α : Type u_1
mα : MeasurableSpace α
μ✝ : Measure α
f : α → ℝ
μ ν : Measure α
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
hf : Integrable (fun x => rexp (f x)) ν
x : α
hx : μ.rnDeriv (ν.tilted f) x = ENNReal.ofReal (rexp (-f x) * ∫ (x : α), rexp (f x) ∂ν) * μ.rnDeriv ν x
⊢ 0 ≤ rexp (-f x) * ∫ (x : α), rexp (f x) ∂ν ∨ (μ.rnDeriv ν x).toReal = 0
state_after: no goals
tactic: exact Or.inl (by positivity)
Theorem: mul_dvd_mul
File: Mathlib/Algebra/Divisibility/Basic.lean

Proof steps:
state_before: α : Type u_1
inst✝ : CommSemigroup α
a✝ b c✝ a c e f : α
⊢ a * e * (c * f) = a * c * (e * f)
state_after: no goals
tactic: simp
Theorem: ZFSet.omega_succ
File: Mathlib/SetTheory/ZFC/Basic.lean

Proof steps:
state_before: n✝ : ZFSet
x : PSet
x✝ : ⟦x⟧ ∈ omega
n : ℕ
h : x.Equiv (PSet.omega.Func { down := n })
⊢ insert (mk x) (mk x) = insert (mk (ofNat n)) (mk (ofNat n))
state_after: n✝ : ZFSet
x : PSet
x✝ : ⟦x⟧ ∈ omega
n : ℕ
h : x.Equiv (PSet.omega.Func { down := n })
⊢ insert (mk (PSet.omega.Func { down := n })) (mk (PSet.omega.Func { down := n })) =
    insert (mk (ofNat n)) (mk (ofNat n))
tactic: rw [ZFSet.sound h]
state_before: n✝ : ZFSet
x : PSet
x✝ : ⟦x⟧ ∈ omega
n : ℕ
h : x.Equiv (PSet.omega.Func { down := n })
⊢ insert (mk (PSet.omega.Func { down := n })) (mk (PSet.omega.Func { down := n })) =
    insert (mk (ofNat n)) (mk (ofNat n))
state_after: no goals
tactic: rfl
Theorem: Filter.NeBot.eq_pure_iff
File: Mathlib/Order/Filter/Ultrafilter.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type u_1
f : Filter α
s : Set α
a : α
hf : f.NeBot
x : α
⊢ f = pure x ↔ {x} ∈ f
state_after: no goals
tactic: rw [← hf.le_pure_iff, le_pure_iff]
Theorem: Matrix.add_vecMul
File: Mathlib/Data/Matrix/Basic.lean

Proof steps:
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : NonUnitalNonAssocSemiring α
inst✝ : Fintype m
A : Matrix m n α
x y : m → α
⊢ (x + y) ᵥ* A = x ᵥ* A + y ᵥ* A
state_after: case h
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : NonUnitalNonAssocSemiring α
inst✝ : Fintype m
A : Matrix m n α
x y : m → α
x✝ : n
⊢ ((x + y) ᵥ* A) x✝ = (x ᵥ* A + y ᵥ* A) x✝
tactic: ext
state_before: case h
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : NonUnitalNonAssocSemiring α
inst✝ : Fintype m
A : Matrix m n α
x y : m → α
x✝ : n
⊢ ((x + y) ᵥ* A) x✝ = (x ᵥ* A + y ᵥ* A) x✝
state_after: no goals
tactic: apply add_dotProduct
Theorem: SimpleGraph.isClique_map_iff_of_nontrivial
File: Mathlib/Combinatorics/SimpleGraph/Clique.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t✝ : Set α
a b : α
f : α ↪ β
t : Set β
ht : t.Nontrivial
⊢ (SimpleGraph.map f G).IsClique t ↔ ∃ s, G.IsClique s ∧ ⇑f '' s = t
state_after: case refine_1
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t✝ : Set α
a b : α
f : α ↪ β
t : Set β
ht : t.Nontrivial
h : (SimpleGraph.map f G).IsClique t
⊢ G.IsClique (⇑f ⁻¹' t)

case refine_2
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t✝ : Set α
a b : α
f : α ↪ β
t : Set β
ht : t.Nontrivial
h : (SimpleGraph.map f G).IsClique t
⊢ ⇑f '' (⇑f ⁻¹' t) = t
tactic: refine ⟨fun h ↦ ⟨f ⁻¹' t, ?_, ?_⟩, by rintro ⟨x, hs, rfl⟩; exact hs.map⟩
state_before: case refine_2
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t✝ : Set α
a b : α
f : α ↪ β
t : Set β
ht : t.Nontrivial
h : (SimpleGraph.map f G).IsClique t
⊢ ⇑f '' (⇑f ⁻¹' t) = t
state_after: case refine_2
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t✝ : Set α
a b : α
f : α ↪ β
t : Set β
ht : t.Nontrivial
h : (SimpleGraph.map f G).IsClique t
⊢ t ⊆ Set.range ⇑f
tactic: rw [Set.image_preimage_eq_iff]
state_before: case refine_2
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t✝ : Set α
a b : α
f : α ↪ β
t : Set β
ht : t.Nontrivial
h : (SimpleGraph.map f G).IsClique t
⊢ t ⊆ Set.range ⇑f
state_after: case refine_2
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t✝ : Set α
a b : α
f : α ↪ β
t : Set β
ht : t.Nontrivial
h : (SimpleGraph.map f G).IsClique t
x : β
hxt : x ∈ t
⊢ x ∈ Set.range ⇑f
tactic: intro x hxt
state_before: case refine_2
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t✝ : Set α
a b : α
f : α ↪ β
t : Set β
ht : t.Nontrivial
h : (SimpleGraph.map f G).IsClique t
x : β
hxt : x ∈ t
⊢ x ∈ Set.range ⇑f
state_after: case refine_2.intro.intro
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t✝ : Set α
a b : α
f : α ↪ β
t : Set β
ht : t.Nontrivial
h : (SimpleGraph.map f G).IsClique t
x : β
hxt : x ∈ t
y : β
hyt : y ∈ t
hyne : y ≠ x
⊢ x ∈ Set.range ⇑f
tactic: obtain ⟨y,hyt, hyne⟩ := ht.exists_ne x
state_before: case refine_2.intro.intro
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t✝ : Set α
a b : α
f : α ↪ β
t : Set β
ht : t.Nontrivial
h : (SimpleGraph.map f G).IsClique t
x : β
hxt : x ∈ t
y : β
hyt : y ∈ t
hyne : y ≠ x
⊢ x ∈ Set.range ⇑f
state_after: case refine_2.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t✝ : Set α
a b : α
f : α ↪ β
t : Set β
ht : t.Nontrivial
h : (SimpleGraph.map f G).IsClique t
u v : α
hyt : f u ∈ t
hxt : f v ∈ t
hyne : f u ≠ f v
⊢ f v ∈ Set.range ⇑f
tactic: obtain ⟨u,v, -, rfl, rfl⟩ := h hyt hxt hyne
state_before: case refine_2.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t✝ : Set α
a b : α
f : α ↪ β
t : Set β
ht : t.Nontrivial
h : (SimpleGraph.map f G).IsClique t
u v : α
hyt : f u ∈ t
hxt : f v ∈ t
hyne : f u ≠ f v
⊢ f v ∈ Set.range ⇑f
state_after: no goals
tactic: exact Set.mem_range_self _
Theorem: Polynomial.splits_of_algHom
File: Mathlib/Algebra/Polynomial/Splits.lean

Proof steps:
state_before: R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝⁵ : CommRing R
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : Field F
i : K →+* L
inst✝¹ : Algebra R K
inst✝ : Algebra R L
f : R[X]
h : Splits (algebraMap R K) f
e : K →ₐ[R] L
⊢ Splits (algebraMap R L) f
state_after: R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝⁵ : CommRing R
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : Field F
i : K →+* L
inst✝¹ : Algebra R K
inst✝ : Algebra R L
f : R[X]
h : Splits (algebraMap R K) f
e : K →ₐ[R] L
⊢ Splits ((↑e).comp (algebraMap R K)) f
tactic: rw [← e.comp_algebraMap_of_tower R]
state_before: R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝⁵ : CommRing R
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : Field F
i : K →+* L
inst✝¹ : Algebra R K
inst✝ : Algebra R L
f : R[X]
h : Splits (algebraMap R K) f
e : K →ₐ[R] L
⊢ Splits ((↑e).comp (algebraMap R K)) f
state_after: no goals
tactic: exact splits_comp_of_splits _ _ h
Theorem: MulEquiv.toSingleObjEquiv_counitIso_hom
File: Mathlib/CategoryTheory/SingleObj.lean

Proof steps:
state_before: M : Type u
N : Type v
inst✝¹ : Monoid M
inst✝ : Monoid N
e : M ≃* N
⊢ 𝟭 (SingleObj M) = e.toMonoidHom.toFunctor ⋙ e.symm.toMonoidHom.toFunctor
state_after: M : Type u
N : Type v
inst✝¹ : Monoid M
inst✝ : Monoid N
e : M ≃* N
⊢ (MonoidHom.id M).toFunctor = (e.symm.toMonoidHom.comp e.toMonoidHom).toFunctor
tactic: rw [← MonoidHom.comp_toFunctor, ← MonoidHom.id_toFunctor]
state_before: M : Type u
N : Type v
inst✝¹ : Monoid M
inst✝ : Monoid N
e : M ≃* N
⊢ (MonoidHom.id M).toFunctor = (e.symm.toMonoidHom.comp e.toMonoidHom).toFunctor
state_after: case e_f
M : Type u
N : Type v
inst✝¹ : Monoid M
inst✝ : Monoid N
e : M ≃* N
⊢ MonoidHom.id M = e.symm.toMonoidHom.comp e.toMonoidHom
tactic: congr 1
state_before: case e_f
M : Type u
N : Type v
inst✝¹ : Monoid M
inst✝ : Monoid N
e : M ≃* N
⊢ MonoidHom.id M = e.symm.toMonoidHom.comp e.toMonoidHom
state_after: no goals
tactic: aesop_cat
state_before: M : Type u
N : Type v
inst✝¹ : Monoid M
inst✝ : Monoid N
e : M ≃* N
⊢ e.symm.toMonoidHom.toFunctor ⋙ e.toMonoidHom.toFunctor = 𝟭 (SingleObj N)
state_after: M : Type u
N : Type v
inst✝¹ : Monoid M
inst✝ : Monoid N
e : M ≃* N
⊢ (e.toMonoidHom.comp e.symm.toMonoidHom).toFunctor = (MonoidHom.id N).toFunctor
tactic: rw [← MonoidHom.comp_toFunctor, ← MonoidHom.id_toFunctor]
state_before: M : Type u
N : Type v
inst✝¹ : Monoid M
inst✝ : Monoid N
e : M ≃* N
⊢ (e.toMonoidHom.comp e.symm.toMonoidHom).toFunctor = (MonoidHom.id N).toFunctor
state_after: case e_f
M : Type u
N : Type v
inst✝¹ : Monoid M
inst✝ : Monoid N
e : M ≃* N
⊢ e.toMonoidHom.comp e.symm.toMonoidHom = MonoidHom.id N
tactic: congr 1
state_before: case e_f
M : Type u
N : Type v
inst✝¹ : Monoid M
inst✝ : Monoid N
e : M ≃* N
⊢ e.toMonoidHom.comp e.symm.toMonoidHom = MonoidHom.id N
state_after: no goals
tactic: aesop_cat
Theorem: CompactlyGenerated.isoOfHomeo_hom
File: Mathlib/Topology/Category/CompactlyGenerated.lean

Proof steps:
state_before: X✝ : Type w
inst✝¹ : TopologicalSpace X✝
inst✝ : UCompactlyGeneratedSpace X✝
X Y : CompactlyGenerated
f : ↑X.toTop ≃ₜ ↑Y.toTop
⊢ { toFun := ⇑f, continuous_toFun := ⋯ } ≫ { toFun := ⇑f.symm, continuous_toFun := ⋯ } = 𝟙 X
state_after: case w
X✝ : Type w
inst✝¹ : TopologicalSpace X✝
inst✝ : UCompactlyGeneratedSpace X✝
X Y : CompactlyGenerated
f : ↑X.toTop ≃ₜ ↑Y.toTop
x : (forget CompactlyGenerated).obj X
⊢ ({ toFun := ⇑f, continuous_toFun := ⋯ } ≫ { toFun := ⇑f.symm, continuous_toFun := ⋯ }) x = (𝟙 X) x
tactic: ext x
state_before: case w
X✝ : Type w
inst✝¹ : TopologicalSpace X✝
inst✝ : UCompactlyGeneratedSpace X✝
X Y : CompactlyGenerated
f : ↑X.toTop ≃ₜ ↑Y.toTop
x : (forget CompactlyGenerated).obj X
⊢ ({ toFun := ⇑f, continuous_toFun := ⋯ } ≫ { toFun := ⇑f.symm, continuous_toFun := ⋯ }) x = (𝟙 X) x
state_after: no goals
tactic: exact f.symm_apply_apply x
state_before: X✝ : Type w
inst✝¹ : TopologicalSpace X✝
inst✝ : UCompactlyGeneratedSpace X✝
X Y : CompactlyGenerated
f : ↑X.toTop ≃ₜ ↑Y.toTop
⊢ { toFun := ⇑f.symm, continuous_toFun := ⋯ } ≫ { toFun := ⇑f, continuous_toFun := ⋯ } = 𝟙 Y
state_after: case w
X✝ : Type w
inst✝¹ : TopologicalSpace X✝
inst✝ : UCompactlyGeneratedSpace X✝
X Y : CompactlyGenerated
f : ↑X.toTop ≃ₜ ↑Y.toTop
x : (forget CompactlyGenerated).obj Y
⊢ ({ toFun := ⇑f.symm, continuous_toFun := ⋯ } ≫ { toFun := ⇑f, continuous_toFun := ⋯ }) x = (𝟙 Y) x
tactic: ext x
state_before: case w
X✝ : Type w
inst✝¹ : TopologicalSpace X✝
inst✝ : UCompactlyGeneratedSpace X✝
X Y : CompactlyGenerated
f : ↑X.toTop ≃ₜ ↑Y.toTop
x : (forget CompactlyGenerated).obj Y
⊢ ({ toFun := ⇑f.symm, continuous_toFun := ⋯ } ≫ { toFun := ⇑f, continuous_toFun := ⋯ }) x = (𝟙 Y) x
state_after: no goals
tactic: exact f.apply_symm_apply x
Theorem: iteratedDerivWithin_succ'
File: Mathlib/Analysis/Calculus/IteratedDeriv/Defs.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
n : ℕ
f : 𝕜 → F
s : Set 𝕜
x✝ x : 𝕜
hxs : UniqueDiffOn 𝕜 s
hx : x ∈ s
⊢ iteratedDerivWithin (n + 1) f s x = iteratedDerivWithin n (derivWithin f s) s x
state_after: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
n : ℕ
f : 𝕜 → F
s : Set 𝕜
x✝ x : 𝕜
hxs : UniqueDiffOn 𝕜 s
hx : x ∈ s
⊢ (fun g => derivWithin g s)^[n + 1] f x = (fun g => derivWithin g s)^[n] (derivWithin f s) x
tactic: rw [iteratedDerivWithin_eq_iterate hxs hx, iteratedDerivWithin_eq_iterate hxs hx]
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
n : ℕ
f : 𝕜 → F
s : Set 𝕜
x✝ x : 𝕜
hxs : UniqueDiffOn 𝕜 s
hx : x ∈ s
⊢ (fun g => derivWithin g s)^[n + 1] f x = (fun g => derivWithin g s)^[n] (derivWithin f s) x
state_after: no goals
tactic: rfl
Theorem: Filter.Tendsto.max_left
File: Mathlib/Topology/Order/OrderClosed.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderClosedTopology α
f g : β → α
l : Filter β
a : α
h : Tendsto f l (𝓝 a)
⊢ Tendsto (fun i => max (f i) a) l (𝓝 a)
state_after: α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderClosedTopology α
f g : β → α
l : Filter β
a : α
h : Tendsto f l (𝓝 a)
⊢ Tendsto (fun i => max a (f i)) l (𝓝 a)
tactic: simp_rw [max_comm _ a]
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderClosedTopology α
f g : β → α
l : Filter β
a : α
h : Tendsto f l (𝓝 a)
⊢ Tendsto (fun i => max a (f i)) l (𝓝 a)
state_after: no goals
tactic: exact h.max_right
Theorem: Submonoid.LocalizationMap.map_right_cancel
File: Mathlib/GroupTheory/MonoidLocalization/Basic.lean

Proof steps:
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
x y : M
c : ↥S
h : f.toMap (↑c * x) = f.toMap (↑c * y)
⊢ f.toMap x = f.toMap y
state_after: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
x y : M
c : ↥S
h : f.toMap ↑c * f.toMap x = f.toMap ↑c * f.toMap y
⊢ f.toMap x = f.toMap y
tactic: rw [f.toMap.map_mul, f.toMap.map_mul] at h
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
x y : M
c : ↥S
h : f.toMap ↑c * f.toMap x = f.toMap ↑c * f.toMap y
⊢ f.toMap x = f.toMap y
state_after: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
x y : M
c : ↥S
h : f.toMap ↑c * f.toMap x = f.toMap ↑c * f.toMap y
u : Nˣ
hu : ↑u = f.toMap ↑c
⊢ f.toMap x = f.toMap y
tactic: let ⟨u, hu⟩ := f.map_units c
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
x y : M
c : ↥S
h : f.toMap ↑c * f.toMap x = f.toMap ↑c * f.toMap y
u : Nˣ
hu : ↑u = f.toMap ↑c
⊢ f.toMap x = f.toMap y
state_after: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
x y : M
c : ↥S
u : Nˣ
h : ↑u * f.toMap x = ↑u * f.toMap y
hu : ↑u = f.toMap ↑c
⊢ f.toMap x = f.toMap y
tactic: rw [← hu] at h
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
x y : M
c : ↥S
u : Nˣ
h : ↑u * f.toMap x = ↑u * f.toMap y
hu : ↑u = f.toMap ↑c
⊢ f.toMap x = f.toMap y
state_after: no goals
tactic: exact (Units.mul_right_inj u).1 h
Theorem: RingSubgroupsBasis.of_comm
File: Mathlib/Topology/Algebra/Nonarchimedean/Bases.lean

Proof steps:
state_before: A✝ : Type u_1
ι✝ : Type u_2
inst✝¹ : Ring A✝
A : Type u_3
ι : Type u_4
inst✝ : CommRing A
B : ι → AddSubgroup A
inter : ∀ (i j : ι), ∃ k, B k ≤ B i ⊓ B j
mul : ∀ (i : ι), ∃ j, ↑(B j) * ↑(B j) ⊆ ↑(B i)
leftMul : ∀ (x : A) (i : ι), ∃ j, ↑(B j) ⊆ (fun y => x * y) ⁻¹' ↑(B i)
x : A
i j : ι
hj : ↑(B j) ⊆ (fun y => x * y) ⁻¹' ↑(B i)
⊢ ↑(B j) ⊆ (fun x_1 => x_1 * x) ⁻¹' ↑(B i)
state_after: no goals
tactic: simpa only [mul_comm] using hj
Theorem: LowerSet.prod_le_prod_iff
File: Mathlib/Order/UpperLower/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s s₁ s₂ : LowerSet α
t t₁ t₂ : LowerSet β
x : α × β
⊢ ↑s₁ ⊆ ↑s₂ ∧ ↑t₁ ⊆ ↑t₂ ∨ ↑s₁ = ∅ ∨ ↑t₁ = ∅ ↔ s₁ ≤ s₂ ∧ t₁ ≤ t₂ ∨ s₁ = ⊥ ∨ t₁ = ⊥
state_after: no goals
tactic: simp