ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: MvPolynomial.coeff_mul_X'
File: Mathlib/Algebra/MvPolynomial/Basic.lean

Proof steps:
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m✝ : σ
s✝ : σ →₀ ℕ
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S₁
p✝ q : MvPolynomial σ R
inst✝ : DecidableEq σ
m : σ →₀ ℕ
s : σ
p : MvPolynomial σ R
⊢ coeff m (p * X s) = if s ∈ m.support then coeff (m - Finsupp.single s 1) p else 0
state_after: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m✝ : σ
s✝ : σ →₀ ℕ
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S₁
p✝ q : MvPolynomial σ R
inst✝ : DecidableEq σ
m : σ →₀ ℕ
s : σ
p : MvPolynomial σ R
⊢ (if Finsupp.single s 1 ≤ m then coeff (m - Finsupp.single s 1) p * 1 else 0) =
    if s ∈ m.support then coeff (m - Finsupp.single s 1) p else 0
tactic: refine (coeff_mul_monomial' _ _ _ _).trans ?_
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m✝ : σ
s✝ : σ →₀ ℕ
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S₁
p✝ q : MvPolynomial σ R
inst✝ : DecidableEq σ
m : σ →₀ ℕ
s : σ
p : MvPolynomial σ R
⊢ (if Finsupp.single s 1 ≤ m then coeff (m - Finsupp.single s 1) p * 1 else 0) =
    if s ∈ m.support then coeff (m - Finsupp.single s 1) p else 0
state_after: no goals
tactic: simp_rw [Finsupp.single_le_iff, Finsupp.mem_support_iff, Nat.succ_le_iff, pos_iff_ne_zero,
    mul_one]
Theorem: AlgebraicGeometry.Scheme.Hom.preimage_iSup
File: Mathlib/AlgebraicGeometry/Scheme.lean

Proof steps:
state_before: X Y : Scheme
f : X.Hom Y
U✝ U' : Y.Opens
V V' : X.Opens
ι : Sort u_1
U : ι → Y.Opens
⊢ ↑(f ⁻¹ᵁ iSup U) = ↑(⨆ i, f ⁻¹ᵁ U i)
state_after: no goals
tactic: simp
Theorem: Matrix.rank_self_mul_transpose
File: Mathlib/Data/Matrix/Rank.lean

Proof steps:
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : Fintype m
inst✝ : LinearOrderedField R
A : Matrix m n R
⊢ (A * Aᵀ).rank = A.rank
state_after: no goals
tactic: simpa only [rank_transpose, transpose_transpose] using rank_transpose_mul_self Aᵀ
Theorem: Monoid.CoprodI.NeWord.toList_ne_nil
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
i j : ι
w : NeWord M i j
⊢ w.toList ≠ []
state_after: case singleton
ι : Type u_1
M : ι → Type u_2
inst✝¹ : (i : ι) → Monoid (M i)
N : Type u_3
inst✝ : Monoid N
i j i✝ : ι
x✝ : M i✝
a✝ : x✝ ≠ 1
⊢ (singleton x✝ a✝).toList ≠ []

case append
ι : Type u_1
M : ι → Type u_2
inst✝¹ : (i : ι) → Monoid (M i)
N : Type u_3
inst✝ : Monoid N
i j i✝ j✝ k✝ l✝ : ι
_w₁✝ : NeWord M i✝ j✝
_hne✝ : j✝ ≠ k✝
_w₂✝ : NeWord M k✝ l✝
_w₁_ih✝ : _w₁✝.toList ≠ []
_w₂_ih✝ : _w₂✝.toList ≠ []
⊢ (_w₁✝.append _hne✝ _w₂✝).toList ≠ []
tactic: induction w
Theorem: Levenshtein.impl_cons
File: Mathlib/Data/List/EditDistance/Defs.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
δ : Type u_3
inst✝¹ : AddZeroClass δ
inst✝ : Min δ
C : Cost α β δ
x : α
xs : List α
y : β
d : δ
ds : List δ
w✝ : 0 < (d :: ds).length
w' : 0 < ds.length
r : List δ
w : 0 < r.length
⊢ 0 < (min (C.delete x + r[0]) (min (C.insert y + d) (C.substitute x y + ds[0])) :: r).length
state_after: no goals
tactic: simp
Theorem: derivWithin_sub_const
File: Mathlib/Analysis/Calculus/Deriv/Add.lean

Proof steps:
state_before: 𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L : Filter 𝕜
hxs : UniqueDiffWithinAt 𝕜 s x
c : F
⊢ derivWithin (fun y => f y - c) s x = derivWithin f s x
state_after: no goals
tactic: simp only [derivWithin, fderivWithin_sub_const hxs]
Theorem: ContinuousWithinAt.of_dslope
File: Mathlib/Analysis/Calculus/Dslope.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 → E
a b : 𝕜
s : Set 𝕜
h : ContinuousWithinAt (dslope f a) s b
⊢ ContinuousWithinAt f s b
state_after: 𝕜 : Type u_1
E : Type u_2
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 → E
a b : 𝕜
s : Set 𝕜
h : ContinuousWithinAt (dslope f a) s b
this : ContinuousWithinAt (fun x => (x - a) • dslope f a x + f a) s b
⊢ ContinuousWithinAt f s b
tactic: have : ContinuousWithinAt (fun x => (x - a) • dslope f a x + f a) s b :=
    ((continuousWithinAt_id.sub continuousWithinAt_const).smul h).add continuousWithinAt_const
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 → E
a b : 𝕜
s : Set 𝕜
h : ContinuousWithinAt (dslope f a) s b
this : ContinuousWithinAt (fun x => (x - a) • dslope f a x + f a) s b
⊢ ContinuousWithinAt f s b
state_after: no goals
tactic: simpa only [sub_smul_dslope, sub_add_cancel] using this
Theorem: Finset.supIndep_univ_fin_two
File: Mathlib/Order/SupIndep.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : Lattice α
inst✝ : OrderBot α
s t : Finset ι
f✝ : ι → α
i : ι
f : Fin 2 → α
⊢ 0 ≠ 1
state_after: no goals
tactic: simp
Theorem: AddAction.vadd_mem_orbit_vadd
File: Mathlib/GroupTheory/GroupAction/Basic.lean

Proof steps:
state_before: G : Type u_1
α : Type u_2
β : Type u_3
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : MulAction G β
g h : G
a : α
⊢ g • a ∈ orbit G (h • a)
state_after: no goals
tactic: simp only [orbit_smul, mem_orbit]
Theorem: CircleDeg1Lift.translationNumber_mono
File: Mathlib/Dynamics/Circle/RotationNumber/TranslationNumber.lean

Proof steps:
state_before: f✝ g✝ f g : CircleDeg1Lift
h : f ≤ g
n : ℕ
⊢ (f ^ n) 0 / ↑n ≤ (g ^ n) 0 / ↑n
state_after: case hab
f✝ g✝ f g : CircleDeg1Lift
h : f ≤ g
n : ℕ
⊢ (f ^ n) 0 ≤ (g ^ n) 0
tactic: gcongr
state_before: case hab
f✝ g✝ f g : CircleDeg1Lift
h : f ≤ g
n : ℕ
⊢ (f ^ n) 0 ≤ (g ^ n) 0
state_after: no goals
tactic: exact pow_mono h _ _
Theorem: toIcoMod_add_toIocMod_zero
File: Mathlib/Algebra/Order/ToIntervalMod.lean

Proof steps:
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
⊢ toIcoMod hp 0 (a - b) + toIocMod hp 0 (b - a) = p
state_after: no goals
tactic: rw [toIcoMod_zero_sub_comm, sub_add_cancel]
Theorem: Stirling.stirlingSeq_zero
File: Mathlib/Analysis/SpecialFunctions/Stirling.lean

Proof steps:
state_before: ⊢ stirlingSeq 0 = 0
state_after: no goals
tactic: rw [stirlingSeq, cast_zero, mul_zero, Real.sqrt_zero, zero_mul, div_zero]
Theorem: AlgebraicGeometry.isomorphisms_eq_isOpenImmersion_inf_surjective
File: Mathlib/AlgebraicGeometry/Morphisms/IsIso.lean

Proof steps:
state_before: ⊢ isomorphisms Scheme = @IsOpenImmersion ⊓ @Surjective
state_after: case h
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
⊢ isomorphisms Scheme f✝ ↔ (@IsOpenImmersion ⊓ @Surjective) f✝
tactic: ext
state_before: case h
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
⊢ isomorphisms Scheme f✝ ↔ (@IsOpenImmersion ⊓ @Surjective) f✝
state_after: no goals
tactic: exact (isIso_iff_isOpenImmersion _).trans
    (and_congr Iff.rfl ((TopCat.epi_iff_surjective _).trans (surjective_iff _).symm))
Theorem: Localization.mk_algebraMap
File: Mathlib/RingTheory/Localization/Basic.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
A : Type u_4
inst✝¹ : CommSemiring A
inst✝ : Algebra A R
m : A
⊢ mk ((algebraMap A R) m) 1 = (algebraMap A (Localization M)) m
state_after: 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
A : Type u_4
inst✝¹ : CommSemiring A
inst✝ : Algebra A R
m : A
⊢ (algebraMap R (Localization M)) ((algebraMap A R) m) = (algebraMap A (Localization M)) m
tactic: rw [mk_eq_mk', mk'_eq_iff_eq_mul, Submonoid.coe_one, map_one, mul_one]
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
A : Type u_4
inst✝¹ : CommSemiring A
inst✝ : Algebra A R
m : A
⊢ (algebraMap R (Localization M)) ((algebraMap A R) m) = (algebraMap A (Localization M)) m
state_after: no goals
tactic: rfl
Theorem: List.destutter'_is_chain'
File: Mathlib/Data/List/Destutter.lean

Proof steps:
state_before: α : Type u_1
l : List α
R : α → α → Prop
inst✝ : DecidableRel R
a✝ b a : α
⊢ Chain' R (destutter' R a l)
state_after: case nil
α : Type u_1
l : List α
R : α → α → Prop
inst✝ : DecidableRel R
a✝ b a : α
⊢ Chain' R (destutter' R a [])

case cons
α : Type u_1
l✝ : List α
R : α → α → Prop
inst✝ : DecidableRel R
a✝ b✝ b : α
l : List α
hl : ∀ (a : α), Chain' R (destutter' R a l)
a : α
⊢ Chain' R (destutter' R a (b :: l))
tactic: induction' l with b l hl generalizing a
state_before: case cons
α : Type u_1
l✝ : List α
R : α → α → Prop
inst✝ : DecidableRel R
a✝ b✝ b : α
l : List α
hl : ∀ (a : α), Chain' R (destutter' R a l)
a : α
⊢ Chain' R (destutter' R a (b :: l))
state_after: case cons
α : Type u_1
l✝ : List α
R : α → α → Prop
inst✝ : DecidableRel R
a✝ b✝ b : α
l : List α
hl : ∀ (a : α), Chain' R (destutter' R a l)
a : α
⊢ Chain' R (if R a b then a :: destutter' R b l else destutter' R a l)
tactic: rw [destutter']
state_before: case cons
α : Type u_1
l✝ : List α
R : α → α → Prop
inst✝ : DecidableRel R
a✝ b✝ b : α
l : List α
hl : ∀ (a : α), Chain' R (destutter' R a l)
a : α
⊢ Chain' R (if R a b then a :: destutter' R b l else destutter' R a l)
state_after: case pos
α : Type u_1
l✝ : List α
R : α → α → Prop
inst✝ : DecidableRel R
a✝ b✝ b : α
l : List α
hl : ∀ (a : α), Chain' R (destutter' R a l)
a : α
h : R a b
⊢ Chain' R (a :: destutter' R b l)

case neg
α : Type u_1
l✝ : List α
R : α → α → Prop
inst✝ : DecidableRel R
a✝ b✝ b : α
l : List α
hl : ∀ (a : α), Chain' R (destutter' R a l)
a : α
h : ¬R a b
⊢ Chain' R (destutter' R a l)
tactic: split_ifs with h
Theorem: Finset.erase_cons
File: Mathlib/Data/Finset/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ t u v : Finset α
a✝ b : α
s : Finset α
a : α
h : a ∉ s
⊢ (cons a s h).erase a = s
state_after: no goals
tactic: rw [cons_eq_insert, erase_insert_eq_erase, erase_eq_of_not_mem h]
Theorem: MeasureTheory.lowerCrossingTime_mono
File: Mathlib/Probability/Martingale/Upcrossing.lean

Proof steps:
state_before: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝ : ConditionallyCompleteLinearOrderBot ι
a b : ℝ
f : ι → Ω → ℝ
N : ι
n m : ℕ
ω : Ω
hnm : n ≤ m
⊢ lowerCrossingTime a b f N n ω ≤ lowerCrossingTime a b f N m ω
state_after: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝ : ConditionallyCompleteLinearOrderBot ι
a b : ℝ
f : ι → Ω → ℝ
N : ι
n m : ℕ
ω : Ω
hnm : n ≤ m
⊢ Monotone fun n => lowerCrossingTime a b f N n ω
tactic: suffices Monotone fun n => lowerCrossingTime a b f N n ω by exact this hnm
state_before: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝ : ConditionallyCompleteLinearOrderBot ι
a b : ℝ
f : ι → Ω → ℝ
N : ι
n m : ℕ
ω : Ω
hnm : n ≤ m
⊢ Monotone fun n => lowerCrossingTime a b f N n ω
state_after: no goals
tactic: exact monotone_nat_of_le_succ fun n =>
    le_trans lowerCrossingTime_le_upperCrossingTime_succ upperCrossingTime_le_lowerCrossingTime
Theorem: Finset.prod_list_count
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 : α → β
inst✝² : CommMonoid β
inst✝¹ : DecidableEq α
inst✝ : CommMonoid α
s : List α
⊢ s.prod = ∏ m ∈ s.toFinset, m ^ count m s
state_after: no goals
tactic: simpa using prod_list_map_count s id
Theorem: MvPolynomial.continuous_eval
File: Mathlib/Topology/Algebra/MvPolynomial.lean

Proof steps:
state_before: X : Type u_1
σ : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : CommSemiring X
inst✝ : TopologicalSemiring X
p : MvPolynomial σ X
⊢ Continuous fun x => (eval x) p
state_after: no goals
tactic: continuity
Theorem: HomologicalComplex₂.total_d
File: Mathlib/Algebra/Homology/TotalComplex.lean

Proof steps:
state_before: C : Type u_1
inst✝⁴ : Category.{?u.62699, u_1} C
inst✝³ : Preadditive C
I₁ : Type u_2
I₂ : Type u_3
I₁₂ : Type u_4
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
K L M : HomologicalComplex₂ C c₁ c₂
φ : K ⟶ L
e : K ≅ L
ψ : L ⟶ M
c₁₂ : ComplexShape I₁₂
inst✝² : DecidableEq I₁₂
inst✝¹ : TotalComplexShape c₁ c₂ c₁₂
inst✝ : K.HasTotal c₁₂
i₁₂ i₁₂' : I₁₂
h₁₂ : ¬c₁₂.Rel i₁₂ i₁₂'
⊢ (fun i₁₂ i₁₂' => K.D₁ c₁₂ i₁₂ i₁₂' + K.D₂ c₁₂ i₁₂ i₁₂') i₁₂ i₁₂' = 0
state_after: C : Type u_1
inst✝⁴ : Category.{?u.62699, u_1} C
inst✝³ : Preadditive C
I₁ : Type u_2
I₂ : Type u_3
I₁₂ : Type u_4
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
K L M : HomologicalComplex₂ C c₁ c₂
φ : K ⟶ L
e : K ≅ L
ψ : L ⟶ M
c₁₂ : ComplexShape I₁₂
inst✝² : DecidableEq I₁₂
inst✝¹ : TotalComplexShape c₁ c₂ c₁₂
inst✝ : K.HasTotal c₁₂
i₁₂ i₁₂' : I₁₂
h₁₂ : ¬c₁₂.Rel i₁₂ i₁₂'
⊢ K.D₁ c₁₂ i₁₂ i₁₂' + K.D₂ c₁₂ i₁₂ i₁₂' = 0
tactic: dsimp
state_before: C : Type u_1
inst✝⁴ : Category.{?u.62699, u_1} C
inst✝³ : Preadditive C
I₁ : Type u_2
I₂ : Type u_3
I₁₂ : Type u_4
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
K L M : HomologicalComplex₂ C c₁ c₂
φ : K ⟶ L
e : K ≅ L
ψ : L ⟶ M
c₁₂ : ComplexShape I₁₂
inst✝² : DecidableEq I₁₂
inst✝¹ : TotalComplexShape c₁ c₂ c₁₂
inst✝ : K.HasTotal c₁₂
i₁₂ i₁₂' : I₁₂
h₁₂ : ¬c₁₂.Rel i₁₂ i₁₂'
⊢ K.D₁ c₁₂ i₁₂ i₁₂' + K.D₂ c₁₂ i₁₂ i₁₂' = 0
state_after: no goals
tactic: rw [K.D₁_shape c₁₂ _ _ h₁₂, K.D₂_shape c₁₂ _ _ h₁₂, zero_add]
Theorem: Matrix.IsHermitian.eigenvalues_mem_spectrum_real
File: Mathlib/LinearAlgebra/Matrix/Spectrum.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝² : RCLike 𝕜
n : Type u_2
inst✝¹ : Fintype n
A : Matrix n n 𝕜
inst✝ : DecidableEq n
hA : A.IsHermitian
i : n
⊢ hA.eigenvalues i ∈ spectrum ℝ A
state_after: 𝕜 : Type u_1
inst✝² : RCLike 𝕜
n : Type u_2
inst✝¹ : Fintype n
A : Matrix n n 𝕜
inst✝ : DecidableEq n
hA : A.IsHermitian
i : n
⊢ (algebraMap ℝ 𝕜) (hA.eigenvalues i) ∈ spectrum 𝕜 A
tactic: apply spectrum.of_algebraMap_mem 𝕜
state_before: 𝕜 : Type u_1
inst✝² : RCLike 𝕜
n : Type u_2
inst✝¹ : Fintype n
A : Matrix n n 𝕜
inst✝ : DecidableEq n
hA : A.IsHermitian
i : n
⊢ (algebraMap ℝ 𝕜) (hA.eigenvalues i) ∈ spectrum 𝕜 A
state_after: 𝕜 : Type u_1
inst✝² : RCLike 𝕜
n : Type u_2
inst✝¹ : Fintype n
A : Matrix n n 𝕜
inst✝ : DecidableEq n
hA : A.IsHermitian
i : n
⊢ (algebraMap ℝ 𝕜) (hA.eigenvalues i) ∈ spectrum 𝕜 (toEuclideanLin A)
tactic: rw [← spectrum_toEuclideanLin]
state_before: 𝕜 : Type u_1
inst✝² : RCLike 𝕜
n : Type u_2
inst✝¹ : Fintype n
A : Matrix n n 𝕜
inst✝ : DecidableEq n
hA : A.IsHermitian
i : n
⊢ (algebraMap ℝ 𝕜) (hA.eigenvalues i) ∈ spectrum 𝕜 (toEuclideanLin A)
state_after: no goals
tactic: exact LinearMap.IsSymmetric.hasEigenvalue_eigenvalues _ _ _ |>.mem_spectrum
Theorem: MulEquiv.toSingleObjEquiv_counitIso_inv
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: _private.Mathlib.RingTheory.AdicCompletion.AsTensorProduct.0.AdicCompletion.ofTensorProduct_iso
File: Mathlib/RingTheory/AdicCompletion/AsTensorProduct.lean

Proof steps:
state_before: R✝ : Type u_1
inst✝¹⁰ : CommRing R✝
I✝ : Ideal R✝
M✝ : Type u_2
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : Module R✝ M✝
N : Type u_3
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R✝ N
R : Type u
inst✝⁵ : CommRing R
I : Ideal R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : IsNoetherianRing R
ι : Type
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
f : (ι → R) →ₗ[R] M
hf : Function.Surjective ⇑f
⊢ IsIso (ModuleCat.ofHom (ofTensorProduct I M))
state_after: case refine_1
R✝ : Type u_1
inst✝¹⁰ : CommRing R✝
I✝ : Ideal R✝
M✝ : Type u_2
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : Module R✝ M✝
N : Type u_3
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R✝ N
R : Type u
inst✝⁵ : CommRing R
I : Ideal R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : IsNoetherianRing R
ι : Type
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
f : (ι → R) →ₗ[R] M
hf : Function.Surjective ⇑f
⊢ Epi (ComposableArrows.app' (AdicCompletion.firstRowToSecondRow I M f) 0 ⋯)

case refine_2
R✝ : Type u_1
inst✝¹⁰ : CommRing R✝
I✝ : Ideal R✝
M✝ : Type u_2
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : Module R✝ M✝
N : Type u_3
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R✝ N
R : Type u
inst✝⁵ : CommRing R
I : Ideal R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : IsNoetherianRing R
ι : Type
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
f : (ι → R) →ₗ[R] M
hf : Function.Surjective ⇑f
⊢ IsIso (ComposableArrows.app' (AdicCompletion.firstRowToSecondRow I M f) 1 ⋯)

case refine_3
R✝ : Type u_1
inst✝¹⁰ : CommRing R✝
I✝ : Ideal R✝
M✝ : Type u_2
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : Module R✝ M✝
N : Type u_3
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R✝ N
R : Type u
inst✝⁵ : CommRing R
I : Ideal R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : IsNoetherianRing R
ι : Type
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
f : (ι → R) →ₗ[R] M
hf : Function.Surjective ⇑f
⊢ IsIso (ComposableArrows.app' (AdicCompletion.firstRowToSecondRow I M f) 3 ⋯)

case refine_4
R✝ : Type u_1
inst✝¹⁰ : CommRing R✝
I✝ : Ideal R✝
M✝ : Type u_2
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : Module R✝ M✝
N : Type u_3
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R✝ N
R : Type u
inst✝⁵ : CommRing R
I : Ideal R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : IsNoetherianRing R
ι : Type
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
f : (ι → R) →ₗ[R] M
hf : Function.Surjective ⇑f
⊢ Mono (ComposableArrows.app' (AdicCompletion.firstRowToSecondRow I M f) 4 ⋯)
tactic: refine Abelian.isIso_of_epi_of_isIso_of_isIso_of_mono
    (firstRow_exact I M f hf) (secondRow_exact I M f hf) (firstRowToSecondRow I M f) ?_ ?_ ?_ ?_
Theorem: inv_le
File: Mathlib/Algebra/Order/Field/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
ha : 0 < a
hb : 0 < b
⊢ a⁻¹ ≤ b ↔ b⁻¹ ≤ a
state_after: no goals
tactic: rw [← inv_le_inv hb (inv_pos (α := α) |>.2 ha), inv_inv]
Theorem: uniformEquicontinuousOn_univ
File: Mathlib/Topology/UniformSpace/Equicontinuity.lean

Proof steps:
state_before: ι : Type u_1
κ : Type u_2
X : Type u_3
X' : Type u_4
Y : Type u_5
Z : Type u_6
α : Type u_7
α' : Type u_8
β : Type u_9
β' : Type u_10
γ : Type u_11
𝓕 : Type u_12
tX : TopologicalSpace X
tY : TopologicalSpace Y
tZ : TopologicalSpace Z
uα : UniformSpace α
uβ : UniformSpace β
uγ : UniformSpace γ
F : ι → β → α
⊢ UniformEquicontinuousOn F univ ↔ UniformEquicontinuous F
state_after: no goals
tactic: simp [UniformEquicontinuousOn, UniformEquicontinuous]
Theorem: CategoryTheory.isIso_of_epi_of_strongMono
File: Mathlib/CategoryTheory/Limits/Shapes/StrongEpi.lean

Proof steps:
state_before: C : Type u
inst✝² : Category.{v, u} C
P Q : C
f : P ⟶ Q
inst✝¹ : Epi f
inst✝ : StrongMono f
⊢ 𝟙 P ≫ f = f ≫ 𝟙 Q
state_after: no goals
tactic: simp
state_before: C : Type u
inst✝² : Category.{v, u} C
P Q : C
f : P ⟶ Q
inst✝¹ : Epi f
inst✝ : StrongMono f
⊢ f ≫ ⋯.lift = 𝟙 P ∧ ⋯.lift ≫ f = 𝟙 Q
state_after: no goals
tactic: aesop_cat
Theorem: Polynomial.cyclotomic.isCoprime_rat
File: Mathlib/RingTheory/Polynomial/Cyclotomic/Roots.lean

Proof steps:
state_before: R : Type u_1
inst✝ : CommRing R
n✝ n m : ℕ
h : n ≠ m
⊢ IsCoprime (cyclotomic n ℚ) (cyclotomic m ℚ)
state_after: case inl
R : Type u_1
inst✝ : CommRing R
n m : ℕ
h : 0 ≠ m
⊢ IsCoprime (cyclotomic 0 ℚ) (cyclotomic m ℚ)

case inr
R : Type u_1
inst✝ : CommRing R
n✝ n m : ℕ
h : n ≠ m
hnzero : n > 0
⊢ IsCoprime (cyclotomic n ℚ) (cyclotomic m ℚ)
tactic: rcases n.eq_zero_or_pos with (rfl | hnzero)
state_before: case inr
R : Type u_1
inst✝ : CommRing R
n✝ n m : ℕ
h : n ≠ m
hnzero : n > 0
⊢ IsCoprime (cyclotomic n ℚ) (cyclotomic m ℚ)
state_after: case inr.inl
R : Type u_1
inst✝ : CommRing R
n✝ n : ℕ
hnzero : n > 0
h : n ≠ 0
⊢ IsCoprime (cyclotomic n ℚ) (cyclotomic 0 ℚ)

case inr.inr
R : Type u_1
inst✝ : CommRing R
n✝ n m : ℕ
h : n ≠ m
hnzero : n > 0
hmzero : m > 0
⊢ IsCoprime (cyclotomic n ℚ) (cyclotomic m ℚ)
tactic: rcases m.eq_zero_or_pos with (rfl | hmzero)
state_before: case inr.inr
R : Type u_1
inst✝ : CommRing R
n✝ n m : ℕ
h : n ≠ m
hnzero : n > 0
hmzero : m > 0
⊢ IsCoprime (cyclotomic n ℚ) (cyclotomic m ℚ)
state_after: case inr.inr
R : Type u_1
inst✝ : CommRing R
n✝ n m : ℕ
h : n ≠ m
hnzero : n > 0
hmzero : m > 0
⊢ ¬cyclotomic n ℚ ∣ cyclotomic m ℚ
tactic: rw [Irreducible.coprime_iff_not_dvd <| cyclotomic.irreducible_rat <| hnzero]
state_before: case inr.inr
R : Type u_1
inst✝ : CommRing R
n✝ n m : ℕ
h : n ≠ m
hnzero : n > 0
hmzero : m > 0
⊢ ¬cyclotomic n ℚ ∣ cyclotomic m ℚ
state_after: no goals
tactic: exact fun hdiv => h <| cyclotomic_injective <|
    eq_of_monic_of_associated (cyclotomic.monic n ℚ) (cyclotomic.monic m ℚ) <|
      Irreducible.associated_of_dvd (cyclotomic.irreducible_rat hnzero)
        (cyclotomic.irreducible_rat hmzero) hdiv
Theorem: Complex.closure_setOf_re_lt
File: Mathlib/Analysis/Complex/ReImTopology.lean

Proof steps:
state_before: a : ℝ
⊢ closure {z | z.re < a} = {z | z.re ≤ a}
state_after: no goals
tactic: simpa only [closure_Iio] using closure_preimage_re (Iio a)
Theorem: CategoryTheory.Bicategory.leftUnitor_naturality
File: Mathlib/CategoryTheory/Bicategory/Basic.lean

Proof steps:
state_before: B : Type u
inst✝ : Bicategory B
a b c d e : B
f g : a ⟶ b
η : f ⟶ g
⊢ 𝟙 a ◁ η ≫ (λ_ g).hom = (λ_ f).hom ≫ η
state_after: no goals
tactic: simp
Theorem: R1Space.inf
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₁ t₂ : TopologicalSpace X
h₁ : R1Space X
h₂ : R1Space X
⊢ R1Space X
state_after: case ht
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₁ t₂ : TopologicalSpace X
h₁ : R1Space X
h₂ : R1Space X
⊢ ∀ (i : Bool), R1Space X
tactic: apply R1Space.iInf
state_before: case ht
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₁ t₂ : TopologicalSpace X
h₁ : R1Space X
h₂ : R1Space X
⊢ ∀ (i : Bool), R1Space X
state_after: no goals
tactic: simp [*]