ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: TopCat.Sheaf.extend_hom_app
File: Mathlib/Topology/Sheaves/SheafCondition/Sites.lean

Proof steps:
state_before: C : Type u
inst✝ : Category.{v, u} C
X : TopCat
ι : Type u_1
B : ι → Opens ↑X
F : Presheaf C X
F' : Sheaf C X
h : Opens.IsBasis (Set.range B)
α : (inducedFunctor B).op ⋙ F ⟶ (inducedFunctor B).op ⋙ F'.val
i : ι
⊢ ((restrictHomEquivHom F F' h) α).app (op (B i)) = α.app (op i)
state_after: C : Type u
inst✝ : Category.{v, u} C
X : TopCat
ι : Type u_1
B : ι → Opens ↑X
F : Presheaf C X
F' : Sheaf C X
h : Opens.IsBasis (Set.range B)
α : (inducedFunctor B).op ⋙ F ⟶ (inducedFunctor B).op ⋙ F'.val
i : ι
⊢ ((restrictHomEquivHom F F' h) α).app (op (B i)) =
    ((restrictHomEquivHom F F' h).invFun ((restrictHomEquivHom F F' h).toFun α)).app (op i)
tactic: nth_rw 2 [← (restrictHomEquivHom F F' h).left_inv α]
state_before: C : Type u
inst✝ : Category.{v, u} C
X : TopCat
ι : Type u_1
B : ι → Opens ↑X
F : Presheaf C X
F' : Sheaf C X
h : Opens.IsBasis (Set.range B)
α : (inducedFunctor B).op ⋙ F ⟶ (inducedFunctor B).op ⋙ F'.val
i : ι
⊢ ((restrictHomEquivHom F F' h) α).app (op (B i)) =
    ((restrictHomEquivHom F F' h).invFun ((restrictHomEquivHom F F' h).toFun α)).app (op i)
state_after: no goals
tactic: rfl
Theorem: MonoidAlgebra.support_mul_single_eq_image
File: Mathlib/Algebra/MonoidAlgebra/Support.lean

Proof steps:
state_before: k : Type u₁
G : Type u₂
inst✝² : Semiring k
inst✝¹ : DecidableEq G
inst✝ : Mul G
f : MonoidAlgebra k G
r : k
hr : ∀ (y : k), y * r = 0 ↔ y = 0
x : G
rx : IsRightRegular x
⊢ (f * single x r).support = image (fun x_1 => x_1 * x) f.support
state_after: k : Type u₁
G : Type u₂
inst✝² : Semiring k
inst✝¹ : DecidableEq G
inst✝ : Mul G
f : MonoidAlgebra k G
r : k
hr : ∀ (y : k), y * r = 0 ↔ y = 0
x : G
rx : IsRightRegular x
y : G
hy : y ∈ image (fun x_1 => x_1 * x) f.support
⊢ y ∈ (f * single x r).support
tactic: refine subset_antisymm (support_mul_single_subset f _ _) fun y hy => ?_
state_before: k : Type u₁
G : Type u₂
inst✝² : Semiring k
inst✝¹ : DecidableEq G
inst✝ : Mul G
f : MonoidAlgebra k G
r : k
hr : ∀ (y : k), y * r = 0 ↔ y = 0
x : G
rx : IsRightRegular x
y : G
hy : y ∈ image (fun x_1 => x_1 * x) f.support
⊢ y ∈ (f * single x r).support
state_after: case intro.intro
k : Type u₁
G : Type u₂
inst✝² : Semiring k
inst✝¹ : DecidableEq G
inst✝ : Mul G
f : MonoidAlgebra k G
r : k
hr : ∀ (y : k), y * r = 0 ↔ y = 0
x : G
rx : IsRightRegular x
y : G
yf : y ∈ f.support
hy : y * x ∈ image (fun x_1 => x_1 * x) f.support
⊢ y * x ∈ (f * single x r).support
tactic: obtain ⟨y, yf, rfl⟩ : ∃ a : G, a ∈ f.support ∧ a * x = y := by
    simpa only [Finset.mem_image, exists_prop] using hy
state_before: case intro.intro
k : Type u₁
G : Type u₂
inst✝² : Semiring k
inst✝¹ : DecidableEq G
inst✝ : Mul G
f : MonoidAlgebra k G
r : k
hr : ∀ (y : k), y * r = 0 ↔ y = 0
x : G
rx : IsRightRegular x
y : G
yf : y ∈ f.support
hy : y * x ∈ image (fun x_1 => x_1 * x) f.support
⊢ y * x ∈ (f * single x r).support
state_after: no goals
tactic: simp only [mul_apply, mem_support_iff.mp yf, hr, mem_support_iff, sum_single_index,
    Finsupp.sum_ite_eq', Ne, not_false_iff, if_true, mul_zero, ite_self, sum_zero, rx.eq_iff]
Theorem: MeasureTheory.OuterMeasure.toMeasure_top
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
⊢ m0 ≤ ⊤.caratheodory
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
⊢ m0 ≤ ⊤
tactic: rw [OuterMeasure.top_caratheodory]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
⊢ m0 ≤ ⊤
state_after: no goals
tactic: exact le_top
Theorem: CovBy.Ioi_eq
File: Mathlib/Order/Cover.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a b c : α
h : a ⋖ b
⊢ Ioi a = Ici b
state_after: no goals
tactic: rw [← Ioo_union_Ici_eq_Ioi h.lt, h.Ioo_eq, empty_union]
Theorem: List.maximum_of_length_pos_mem
File: Mathlib/Data/List/MinMax.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
l : List α
a m : α
h : 0 < l.length
⊢ maximum_of_length_pos h ∈ l
state_after: case a
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
l : List α
a m : α
h : 0 < l.length
⊢ l.maximum = ↑(maximum_of_length_pos h)
tactic: apply maximum_mem
state_before: case a
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
l : List α
a m : α
h : 0 < l.length
⊢ l.maximum = ↑(maximum_of_length_pos h)
state_after: no goals
tactic: simp only [coe_maximum_of_length_pos]
Theorem: MeasureTheory.StronglyMeasurable.piecewise
File: Mathlib/MeasureTheory/Function/StronglyMeasurable/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
s : Set α
x✝ : DecidablePred fun x => x ∈ s
hs : MeasurableSet s
hf : StronglyMeasurable f
hg : StronglyMeasurable g
⊢ StronglyMeasurable (s.piecewise f g)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
s : Set α
x✝ : DecidablePred fun x => x ∈ s
hs : MeasurableSet s
hf : StronglyMeasurable f
hg : StronglyMeasurable g
x : α
⊢ Tendsto (fun n => ↑((fun n => SimpleFunc.piecewise s hs (hf.approx n) (hg.approx n)) n) x) atTop
    (𝓝 (s.piecewise f g x))
tactic: refine ⟨fun n => SimpleFunc.piecewise s hs (hf.approx n) (hg.approx n), fun x => ?_⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
s : Set α
x✝ : DecidablePred fun x => x ∈ s
hs : MeasurableSet s
hf : StronglyMeasurable f
hg : StronglyMeasurable g
x : α
⊢ Tendsto (fun n => ↑((fun n => SimpleFunc.piecewise s hs (hf.approx n) (hg.approx n)) n) x) atTop
    (𝓝 (s.piecewise f g x))
state_after: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
s : Set α
x✝ : DecidablePred fun x => x ∈ s
hs : MeasurableSet s
hf : StronglyMeasurable f
hg : StronglyMeasurable g
x : α
hx : x ∈ s
⊢ Tendsto (fun n => ↑((fun n => SimpleFunc.piecewise s hs (hf.approx n) (hg.approx n)) n) x) atTop
    (𝓝 (s.piecewise f g x))

case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
f g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
s : Set α
x✝ : DecidablePred fun x => x ∈ s
hs : MeasurableSet s
hf : StronglyMeasurable f
hg : StronglyMeasurable g
x : α
hx : x ∉ s
⊢ Tendsto (fun n => ↑((fun n => SimpleFunc.piecewise s hs (hf.approx n) (hg.approx n)) n) x) atTop
    (𝓝 (s.piecewise f g x))
tactic: by_cases hx : x ∈ s
Theorem: Matrix.det_permutation
File: Mathlib/LinearAlgebra/Matrix/Permutation.lean

Proof steps:
state_before: n : Type u_1
R : Type u_2
inst✝² : DecidableEq n
inst✝¹ : Fintype n
σ : Perm n
inst✝ : CommRing R
⊢ (Perm.permMatrix R σ).det = ↑↑(Perm.sign σ)
state_after: no goals
tactic: rw [← Matrix.mul_one (σ.permMatrix R), PEquiv.toPEquiv_mul_matrix,
    det_permute, det_one, mul_one]
Theorem: Matrix.blockDiagonal_transpose
File: Mathlib/Data/Matrix/Block.lean

Proof steps:
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : o → Matrix m n α
⊢ (blockDiagonal M)ᵀ = blockDiagonal fun k => (M k)ᵀ
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : o → Matrix m n α
i✝ : n × o
j✝ : m × o
⊢ (blockDiagonal M)ᵀ i✝ j✝ = blockDiagonal (fun k => (M k)ᵀ) i✝ j✝
tactic: ext
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : o → Matrix m n α
i✝ : n × o
j✝ : m × o
⊢ (blockDiagonal M)ᵀ i✝ j✝ = blockDiagonal (fun k => (M k)ᵀ) i✝ j✝
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : o → Matrix m n α
i✝ : n × o
j✝ : m × o
⊢ (if i✝.2 = j✝.2 then M i✝.2 j✝.1 i✝.1 else 0) = if i✝.2 = j✝.2 then M j✝.2 j✝.1 i✝.1 else 0
tactic: simp only [transpose_apply, blockDiagonal_apply, eq_comm]
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : o → Matrix m n α
i✝ : n × o
j✝ : m × o
⊢ (if i✝.2 = j✝.2 then M i✝.2 j✝.1 i✝.1 else 0) = if i✝.2 = j✝.2 then M j✝.2 j✝.1 i✝.1 else 0
state_after: case pos
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : o → Matrix m n α
i✝ : n × o
j✝ : m × o
h : i✝.2 = j✝.2
⊢ M i✝.2 j✝.1 i✝.1 = M j✝.2 j✝.1 i✝.1

case neg
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : o → Matrix m n α
i✝ : n × o
j✝ : m × o
h : ¬i✝.2 = j✝.2
⊢ 0 = 0
tactic: split_ifs with h
Theorem: AddSubmonoid.fg_iff
File: Mathlib/GroupTheory/Finiteness.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
inst✝¹ : Monoid M
inst✝ : AddMonoid N
P : Submonoid M
x✝ : ∃ S, closure S = P ∧ S.Finite
S : Set M
hS : closure S = P
hf : S.Finite
⊢ closure ↑hf.toFinset = P
state_after: no goals
tactic: simp [hS]
Theorem: CategoryTheory.ShortComplex.leftHomologyMapIso'_hom
File: Mathlib/Algebra/Homology/ShortComplex/LeftHomology.lean

Proof steps:
state_before: C : Type u_1
inst✝¹ : Category.{?u.112708, u_1} C
inst✝ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
e : S₁ ≅ S₂
h₁ : S₁.LeftHomologyData
h₂ : S₂.LeftHomologyData
⊢ leftHomologyMap' e.hom h₁ h₂ ≫ leftHomologyMap' e.inv h₂ h₁ = 𝟙 h₁.H
state_after: no goals
tactic: rw [← leftHomologyMap'_comp, e.hom_inv_id, leftHomologyMap'_id]
state_before: C : Type u_1
inst✝¹ : Category.{?u.112708, u_1} C
inst✝ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
e : S₁ ≅ S₂
h₁ : S₁.LeftHomologyData
h₂ : S₂.LeftHomologyData
⊢ leftHomologyMap' e.inv h₂ h₁ ≫ leftHomologyMap' e.hom h₁ h₂ = 𝟙 h₂.H
state_after: no goals
tactic: rw [← leftHomologyMap'_comp, e.inv_hom_id, leftHomologyMap'_id]
Theorem: Polynomial.content_eq_gcd_leadingCoeff_content_eraseLead
File: Mathlib/RingTheory/Polynomial/Content.lean

Proof steps:
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
⊢ p.content = gcd p.leadingCoeff p.eraseLead.content
state_after: case pos
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
h : p = 0
⊢ p.content = gcd p.leadingCoeff p.eraseLead.content

case neg
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
h : ¬p = 0
⊢ p.content = gcd p.leadingCoeff p.eraseLead.content
tactic: by_cases h : p = 0
state_before: case neg
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
h : ¬p = 0
⊢ p.content = gcd p.leadingCoeff p.eraseLead.content
state_after: case neg
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
h : p.natDegree ∈ p.support
⊢ p.content = gcd p.leadingCoeff p.eraseLead.content
tactic: rw [← leadingCoeff_eq_zero, leadingCoeff, ← Ne, ← mem_support_iff] at h
state_before: case neg
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
h : p.natDegree ∈ p.support
⊢ p.content = gcd p.leadingCoeff p.eraseLead.content
state_after: case neg
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
h : p.natDegree ∈ p.support
⊢ gcd (p.coeff p.natDegree) ((p.support.erase p.natDegree).gcd p.coeff) =
    gcd (p.coeff p.natDegree) ((p.support.erase p.natDegree).gcd p.eraseLead.coeff)
tactic: rw [content, ← Finset.insert_erase h, Finset.gcd_insert, leadingCoeff, content,
    eraseLead_support]
state_before: case neg
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
h : p.natDegree ∈ p.support
⊢ gcd (p.coeff p.natDegree) ((p.support.erase p.natDegree).gcd p.coeff) =
    gcd (p.coeff p.natDegree) ((p.support.erase p.natDegree).gcd p.eraseLead.coeff)
state_after: case neg
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
h : p.natDegree ∈ p.support
i : ℕ
hi : i ∈ p.support.erase p.natDegree
⊢ p.coeff i = p.eraseLead.coeff i
tactic: refine congr rfl (Finset.gcd_congr rfl fun i hi => ?_)
state_before: case neg
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
h : p.natDegree ∈ p.support
i : ℕ
hi : i ∈ p.support.erase p.natDegree
⊢ p.coeff i = p.eraseLead.coeff i
state_after: case neg
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
h : p.natDegree ∈ p.support
i : ℕ
hi : i ≠ p.natDegree ∧ i ∈ p.support
⊢ p.coeff i = p.eraseLead.coeff i
tactic: rw [Finset.mem_erase] at hi
state_before: case neg
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
h : p.natDegree ∈ p.support
i : ℕ
hi : i ≠ p.natDegree ∧ i ∈ p.support
⊢ p.coeff i = p.eraseLead.coeff i
state_after: no goals
tactic: rw [eraseLead_coeff, if_neg hi.1]
Theorem: Algebra.map_intNormAux
File: Mathlib/RingTheory/IntegralClosure/IntegralRestrict.lean

Proof steps:
state_before: A : Type u_1
K : Type u_2
L : Type u_3
B : Type u_4
inst✝²⁶ : CommRing A
inst✝²⁵ : CommRing B
inst✝²⁴ : Algebra A B
inst✝²³ : Field K
inst✝²² : Field L
inst✝²¹ : Algebra A K
inst✝²⁰ : IsFractionRing A K
inst✝¹⁹ : Algebra B L
inst✝¹⁸ : Algebra K L
inst✝¹⁷ : Algebra A L
inst✝¹⁶ : IsScalarTower A B L
inst✝¹⁵ : IsScalarTower A K L
inst✝¹⁴ : IsIntegralClosure B A L
inst✝¹³ : FiniteDimensional K L
Aₘ : Type ?u.446485
Bₘ : Type ?u.446488
inst✝¹² : CommRing Aₘ
inst✝¹¹ : CommRing Bₘ
inst✝¹⁰ : Algebra Aₘ Bₘ
inst✝⁹ : Algebra A Aₘ
inst✝⁸ : Algebra B Bₘ
inst✝⁷ : Algebra A Bₘ
inst✝⁶ : IsScalarTower A Aₘ Bₘ
inst✝⁵ : IsScalarTower A B Bₘ
M : Submonoid A
inst✝⁴ : IsLocalization M Aₘ
inst✝³ : IsLocalization (algebraMapSubmonoid B M) Bₘ
inst✝² inst✝¹ : IsIntegrallyClosed A
inst✝ : Algebra.IsSeparable K L
x : B
⊢ (algebraMap A K) ((intNormAux A K L B) x) = (norm K) ((algebraMap B L) x)
state_after: A : Type u_1
K : Type u_2
L : Type u_3
B : Type u_4
inst✝²⁶ : CommRing A
inst✝²⁵ : CommRing B
inst✝²⁴ : Algebra A B
inst✝²³ : Field K
inst✝²² : Field L
inst✝²¹ : Algebra A K
inst✝²⁰ : IsFractionRing A K
inst✝¹⁹ : Algebra B L
inst✝¹⁸ : Algebra K L
inst✝¹⁷ : Algebra A L
inst✝¹⁶ : IsScalarTower A B L
inst✝¹⁵ : IsScalarTower A K L
inst✝¹⁴ : IsIntegralClosure B A L
inst✝¹³ : FiniteDimensional K L
Aₘ : Type ?u.446485
Bₘ : Type ?u.446488
inst✝¹² : CommRing Aₘ
inst✝¹¹ : CommRing Bₘ
inst✝¹⁰ : Algebra Aₘ Bₘ
inst✝⁹ : Algebra A Aₘ
inst✝⁸ : Algebra B Bₘ
inst✝⁷ : Algebra A Bₘ
inst✝⁶ : IsScalarTower A Aₘ Bₘ
inst✝⁵ : IsScalarTower A B Bₘ
M : Submonoid A
inst✝⁴ : IsLocalization M Aₘ
inst✝³ : IsLocalization (algebraMapSubmonoid B M) Bₘ
inst✝² inst✝¹ : IsIntegrallyClosed A
inst✝ : Algebra.IsSeparable K L
x : B
⊢ (algebraMap A K) (IsIntegralClosure.mk' A ((norm K) ((algebraMap B L) x)) ⋯) = (norm K) ((algebraMap B L) x)
tactic: dsimp [Algebra.intNormAux]
state_before: A : Type u_1
K : Type u_2
L : Type u_3
B : Type u_4
inst✝²⁶ : CommRing A
inst✝²⁵ : CommRing B
inst✝²⁴ : Algebra A B
inst✝²³ : Field K
inst✝²² : Field L
inst✝²¹ : Algebra A K
inst✝²⁰ : IsFractionRing A K
inst✝¹⁹ : Algebra B L
inst✝¹⁸ : Algebra K L
inst✝¹⁷ : Algebra A L
inst✝¹⁶ : IsScalarTower A B L
inst✝¹⁵ : IsScalarTower A K L
inst✝¹⁴ : IsIntegralClosure B A L
inst✝¹³ : FiniteDimensional K L
Aₘ : Type ?u.446485
Bₘ : Type ?u.446488
inst✝¹² : CommRing Aₘ
inst✝¹¹ : CommRing Bₘ
inst✝¹⁰ : Algebra Aₘ Bₘ
inst✝⁹ : Algebra A Aₘ
inst✝⁸ : Algebra B Bₘ
inst✝⁷ : Algebra A Bₘ
inst✝⁶ : IsScalarTower A Aₘ Bₘ
inst✝⁵ : IsScalarTower A B Bₘ
M : Submonoid A
inst✝⁴ : IsLocalization M Aₘ
inst✝³ : IsLocalization (algebraMapSubmonoid B M) Bₘ
inst✝² inst✝¹ : IsIntegrallyClosed A
inst✝ : Algebra.IsSeparable K L
x : B
⊢ (algebraMap A K) (IsIntegralClosure.mk' A ((norm K) ((algebraMap B L) x)) ⋯) = (norm K) ((algebraMap B L) x)
state_after: no goals
tactic: exact IsIntegralClosure.algebraMap_mk' _ _ _
Theorem: HomologicalComplex.singleObjCyclesSelfIso_hom_singleObjOpcyclesSelfIso_hom
File: Mathlib/Algebra/Homology/SingleHomology.lean

Proof steps:
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
inst✝¹ : HasZeroObject C
ι : Type u_1
inst✝ : DecidableEq ι
c : ComplexShape ι
j : ι
A : C
⊢ (singleObjCyclesSelfIso c j A).hom ≫ (singleObjOpcyclesSelfIso c j A).hom =
    ((single C c j).obj A).iCycles j ≫ ((single C c j).obj A).pOpcycles j
state_after: no goals
tactic: simp [singleObjCyclesSelfIso, singleObjOpcyclesSelfIso]
Theorem: mem_closedBall_iff_norm'''
File: Mathlib/Analysis/Normed/Group/Basic.lean

Proof steps:
state_before: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝² : SeminormedGroup E
inst✝¹ : SeminormedGroup F
inst✝ : SeminormedGroup G
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
⊢ b ∈ closedBall a r ↔ ‖a / b‖ ≤ r
state_after: no goals
tactic: rw [mem_closedBall', dist_eq_norm_div]
Theorem: mul_nsmul'
File: Mathlib/Algebra/Group/Defs.lean

Proof steps:
state_before: G : Type u_1
M : Type u_2
inst✝ : Monoid M
a✝ b c : M
m✝ n✝ : ℕ
a : M
m n : ℕ
⊢ a ^ (m * n) = (a ^ n) ^ m
state_after: no goals
tactic: rw [Nat.mul_comm, pow_mul]
Theorem: Finset.fold_union_empty_singleton
File: Mathlib/Data/Finset/Fold.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
op : β → β → β
hc : Std.Commutative op
ha : Std.Associative op
f : α → β
b : β
s✝ : Finset α
a : α
inst✝ : DecidableEq α
s : Finset α
⊢ fold (fun x x_1 => x ∪ x_1) ∅ singleton s = s
state_after: case empty
α : Type u_1
β : Type u_2
γ : Type u_3
op : β → β → β
hc : Std.Commutative op
ha : Std.Associative op
f : α → β
b : β
s : Finset α
a : α
inst✝ : DecidableEq α
⊢ fold (fun x x_1 => x ∪ x_1) ∅ singleton ∅ = ∅

case insert
α : Type u_1
β : Type u_2
γ : Type u_3
op : β → β → β
hc : Std.Commutative op
ha : Std.Associative op
f : α → β
b : β
s✝ : Finset α
a✝ : α
inst✝ : DecidableEq α
a : α
s : Finset α
has : a ∉ s
ih : fold (fun x x_1 => x ∪ x_1) ∅ singleton s = s
⊢ fold (fun x x_1 => x ∪ x_1) ∅ singleton (insert a s) = insert a s
tactic: induction' s using Finset.induction_on with a s has ih
Theorem: List.prod_inv
File: Mathlib/Algebra/BigOperators/Group/List.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝ : CommGroup G
⊢ [].prod⁻¹ = (map (fun x => x⁻¹) []).prod
state_after: no goals
tactic: simp
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝ : CommGroup G
x : G
xs : List G
⊢ (x :: xs).prod⁻¹ = (map (fun x => x⁻¹) (x :: xs)).prod
state_after: no goals
tactic: simp [mul_comm, prod_inv xs]
Theorem: NumberField.mixedEmbedding.norm_eq_sup'_normAtPlace
File: Mathlib/NumberTheory/NumberField/CanonicalEmbedding/Basic.lean

Proof steps:
state_before: K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
x : ({ w // w.IsReal } → ℝ) × ({ w // w.IsComplex } → ℂ)
⊢ ‖x‖ = univ.sup' ⋯ fun w => (normAtPlace w) x
state_after: K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
x : ({ w // w.IsReal } → ℝ) × ({ w // w.IsComplex } → ℂ)
⊢ univ.sup' ⋯ (Subtype.val ∘ fun w => ⟨(normAtPlace w) x, ⋯⟩) = univ.sup' ⋯ fun w => (normAtPlace w) x
tactic: rw [← coe_nnnorm, nnnorm_eq_sup_normAtPlace, ← sup'_eq_sup univ_nonempty, ← NNReal.val_eq_coe,
    ← OrderHom.Subtype.val_coe, map_finset_sup', OrderHom.Subtype.val_coe]
state_before: K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
x : ({ w // w.IsReal } → ℝ) × ({ w // w.IsComplex } → ℂ)
⊢ univ.sup' ⋯ (Subtype.val ∘ fun w => ⟨(normAtPlace w) x, ⋯⟩) = univ.sup' ⋯ fun w => (normAtPlace w) x
state_after: no goals
tactic: simp only [Function.comp_apply]
Theorem: Ideal.smul_mem_pointwise_smul_iff
File: Mathlib/RingTheory/Ideal/Pointwise.lean

Proof steps:
state_before: M : Type u_1
R : Type u_2
inst✝² : Group M
inst✝¹ : CommRing R
inst✝ : MulSemiringAction M R
a : M
S : Ideal R
x : R
h : a • x ∈ a • S
⊢ x ∈ S
state_after: no goals
tactic: simpa using smul_mem_pointwise_smul a⁻¹ _ _ h
Theorem: _private.Mathlib.Analysis.Seminorm.0.Seminorm.isLUB_sSup
File: Mathlib/Analysis/Seminorm.lean

Proof steps:
state_before: R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝² : NormedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
p q : Seminorm 𝕜 E
x : E
s : Set (Seminorm 𝕜 E)
hs₁ : BddAbove s
hs₂ : s.Nonempty
⊢ IsLUB s (sSup s)
state_after: case refine_1
R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝² : NormedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
p✝ q : Seminorm 𝕜 E
x✝ : E
s : Set (Seminorm 𝕜 E)
hs₁ : BddAbove s
hs₂ : s.Nonempty
p : Seminorm 𝕜 E
hp : p ∈ s
x : E
this : Nonempty ↑s
⊢ p x ≤ ⨆ i, ↑i x

case refine_2
R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝² : NormedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
p✝ q : Seminorm 𝕜 E
x✝ : E
s : Set (Seminorm 𝕜 E)
hs₁ : BddAbove s
hs₂ : s.Nonempty
p : Seminorm 𝕜 E
hp : p ∈ upperBounds s
x : E
this : Nonempty ↑s
⊢ ⨆ i, ↑i x ≤ p x
tactic: refine ⟨fun p hp x => ?_, fun p hp x => ?_⟩ <;> haveI : Nonempty ↑s := hs₂.coe_sort <;>
    dsimp <;> rw [Seminorm.coe_sSup_eq hs₁, iSup_apply]
Theorem: List.perm_insert_swap
File: .lake/packages/batteries/Batteries/Data/List/Perm.lean

Proof steps:
state_before: α : Type u_1
inst✝ : DecidableEq α
x y : α
l : List α
⊢ List.insert x (List.insert y l) ~ List.insert y (List.insert x l)
state_after: case neg
α : Type u_1
inst✝ : DecidableEq α
x y : α
l : List α
xl : ¬x ∈ l
yl : ¬y ∈ l
⊢ List.insert x (y :: l) ~ List.insert y (x :: l)
tactic: by_cases xl : x ∈ l <;> by_cases yl : y ∈ l <;> simp [xl, yl]
state_before: case neg
α : Type u_1
inst✝ : DecidableEq α
x y : α
l : List α
xl : ¬x ∈ l
yl : ¬y ∈ l
⊢ List.insert x (y :: l) ~ List.insert y (x :: l)
state_after: no goals
tactic: if xy : x = y then simp [xy] else
  simp [List.insert, xl, yl, xy, Ne.symm xy]
  constructor
Theorem: CharP.nontrivial_of_char_ne_one
File: Mathlib/Algebra/CharP/Defs.lean

Proof steps:
state_before: R : Type u_1
inst✝ : NonAssocSemiring R
v : ℕ
hv : v ≠ 1
hr : CharP R v
h : ↑1 = 0
⊢ v = 1
state_after: no goals
tactic: rwa [CharP.cast_eq_zero_iff _ v, Nat.dvd_one] at h
Theorem: nhds_inter_eq_singleton_of_mem_discrete
File: Mathlib/Topology/Separation.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
s : Set X
inst✝ : DiscreteTopology ↑s
x : X
hx : x ∈ s
⊢ ∃ U ∈ 𝓝 x, U ∩ s = {x}
state_after: no goals
tactic: simpa using (𝓝 x).basis_sets.exists_inter_eq_singleton_of_mem_discrete hx