ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: convex_iff_ordConnected
File: Mathlib/Analysis/Convex/Basic.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝ : LinearOrderedField 𝕜
s : Set 𝕜
⊢ Convex 𝕜 s ↔ s.OrdConnected
state_after: no goals
tactic: simp_rw [convex_iff_segment_subset, segment_eq_uIcc, ordConnected_iff_uIcc_subset]
Theorem: SeparationQuotient.continuous_lift₂
File: Mathlib/Topology/Inseparable.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : (i : ι) → TopologicalSpace (π i)
x y z : X
s : Set X
f✝ g : X → Y
t : Set (SeparationQuotient X)
f : X → Y → Z
hf : ∀ (a : X) (b : Y) (c : X) (d : Y), (a ~ᵢ c) → (b ~ᵢ d) → f a b = f c d
⊢ Continuous (uncurry (lift₂ f hf)) ↔ Continuous (uncurry f)
state_after: no goals
tactic: simp only [continuous_iff_continuousOn_univ, continuousOn_lift₂, preimage_univ]
Theorem: PythagoreanTriple.classification
File: Mathlib/NumberTheory/PythagoreanTriples.lean

Proof steps:
state_before: x y z : ℤ
h : PythagoreanTriple x y z
⊢ PythagoreanTriple x y z ↔
    ∃ k m n,
      (x = k * (m ^ 2 - n ^ 2) ∧ y = k * (2 * m * n) ∨ x = k * (2 * m * n) ∧ y = k * (m ^ 2 - n ^ 2)) ∧
        (z = k * (m ^ 2 + n ^ 2) ∨ z = -k * (m ^ 2 + n ^ 2))
state_after: x y z : ℤ
⊢ PythagoreanTriple x y z ↔
    ∃ k m n,
      (x = k * (m ^ 2 - n ^ 2) ∧ y = k * (2 * m * n) ∨ x = k * (2 * m * n) ∧ y = k * (m ^ 2 - n ^ 2)) ∧
        (z = k * (m ^ 2 + n ^ 2) ∨ z = -k * (m ^ 2 + n ^ 2))
tactic: clear h
state_before: x y z : ℤ
⊢ PythagoreanTriple x y z ↔
    ∃ k m n,
      (x = k * (m ^ 2 - n ^ 2) ∧ y = k * (2 * m * n) ∨ x = k * (2 * m * n) ∧ y = k * (m ^ 2 - n ^ 2)) ∧
        (z = k * (m ^ 2 + n ^ 2) ∨ z = -k * (m ^ 2 + n ^ 2))
state_after: case mp
x y z : ℤ
⊢ PythagoreanTriple x y z →
    ∃ k m n,
      (x = k * (m ^ 2 - n ^ 2) ∧ y = k * (2 * m * n) ∨ x = k * (2 * m * n) ∧ y = k * (m ^ 2 - n ^ 2)) ∧
        (z = k * (m ^ 2 + n ^ 2) ∨ z = -k * (m ^ 2 + n ^ 2))

case mpr
x y z : ℤ
⊢ (∃ k m n,
      (x = k * (m ^ 2 - n ^ 2) ∧ y = k * (2 * m * n) ∨ x = k * (2 * m * n) ∧ y = k * (m ^ 2 - n ^ 2)) ∧
        (z = k * (m ^ 2 + n ^ 2) ∨ z = -k * (m ^ 2 + n ^ 2))) →
    PythagoreanTriple x y z
tactic: constructor
Theorem: Matrix.mulVec_sub
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✝¹ : NonUnitalNonAssocRing α
inst✝ : Fintype n
A : Matrix m n α
x y : n → α
⊢ A *ᵥ (x - y) = A *ᵥ x - A *ᵥ y
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✝¹ : NonUnitalNonAssocRing α
inst✝ : Fintype n
A : Matrix m n α
x y : n → α
x✝ : m
⊢ (A *ᵥ (x - y)) x✝ = (A *ᵥ x - A *ᵥ y) 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✝¹ : NonUnitalNonAssocRing α
inst✝ : Fintype n
A : Matrix m n α
x y : n → α
x✝ : m
⊢ (A *ᵥ (x - y)) x✝ = (A *ᵥ x - A *ᵥ y) x✝
state_after: no goals
tactic: apply dotProduct_sub
Theorem: MeasureTheory.measure_mono_ae
File: Mathlib/MeasureTheory/OuterMeasure/AE.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
F : Type u_3
inst✝¹ : FunLike F (Set α) ℝ≥0∞
inst✝ : OuterMeasureClass F α
μ : F
s t : Set α
H : s ≤ᶠ[ae μ] t
⊢ μ (s ∪ t) = μ (t ∪ s \ t)
state_after: no goals
tactic: rw [union_diff_self, Set.union_comm]
state_before: α : Type u_1
β : Type u_2
F : Type u_3
inst✝¹ : FunLike F (Set α) ℝ≥0∞
inst✝ : OuterMeasureClass F α
μ : F
s t : Set α
H : s ≤ᶠ[ae μ] t
⊢ μ t + μ (s \ t) = μ t
state_after: no goals
tactic: rw [ae_le_set.1 H, add_zero]
Theorem: CategoryTheory.Limits.Cone.w
File: Mathlib/CategoryTheory/Limits/Cones.lean

Proof steps:
state_before: J : Type u₁
inst✝³ : Category.{v₁, u₁} J
K : Type u₂
inst✝² : Category.{v₂, u₂} K
C : Type u₃
inst✝¹ : Category.{v₃, u₃} C
D : Type u₄
inst✝ : Category.{v₄, u₄} D
F : J ⥤ C
c : Cone F
j j' : J
f : j ⟶ j'
⊢ c.π.app j ≫ F.map f = c.π.app j'
state_after: J : Type u₁
inst✝³ : Category.{v₁, u₁} J
K : Type u₂
inst✝² : Category.{v₂, u₂} K
C : Type u₃
inst✝¹ : Category.{v₃, u₃} C
D : Type u₄
inst✝ : Category.{v₄, u₄} D
F : J ⥤ C
c : Cone F
j j' : J
f : j ⟶ j'
⊢ ((const J).obj c.pt).map f ≫ c.π.app j' = c.π.app j'
tactic: rw [← c.π.naturality f]
state_before: J : Type u₁
inst✝³ : Category.{v₁, u₁} J
K : Type u₂
inst✝² : Category.{v₂, u₂} K
C : Type u₃
inst✝¹ : Category.{v₃, u₃} C
D : Type u₄
inst✝ : Category.{v₄, u₄} D
F : J ⥤ C
c : Cone F
j j' : J
f : j ⟶ j'
⊢ ((const J).obj c.pt).map f ≫ c.π.app j' = c.π.app j'
state_after: no goals
tactic: apply id_comp
Theorem: MulAction.orbitRel.Quotient.mem_subgroup_orbit_iff
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 β
H : Subgroup G
x : Quotient G α
a b : ↑x.orbit
⊢ ↑a ∈ MulAction.orbit ↥H ↑b ↔ a ∈ MulAction.orbit (↥H) b
state_after: case refine_1
G : Type u_1
α : Type u_2
β : Type u_3
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : MulAction G β
H : Subgroup G
x : Quotient G α
a b : ↑x.orbit
h : ↑a ∈ MulAction.orbit ↥H ↑b
⊢ a ∈ MulAction.orbit (↥H) b

case refine_2
G : Type u_1
α : Type u_2
β : Type u_3
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : MulAction G β
H : Subgroup G
x : Quotient G α
a b : ↑x.orbit
h : a ∈ MulAction.orbit (↥H) b
⊢ ↑a ∈ MulAction.orbit ↥H ↑b
tactic: refine ⟨fun h ↦ ?_, fun h ↦ ?_⟩
Theorem: CategoryTheory.Subobject.isIso_arrow_iff_eq_top
File: Mathlib/CategoryTheory/Subobject/Lattice.lean

Proof steps:
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y✝ Z : C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
Y : C
P : Subobject Y
⊢ IsIso P.arrow ↔ P = ⊤
state_after: no goals
tactic: rw [isIso_iff_mk_eq_top, mk_arrow]
Theorem: Batteries.AssocList.length_modify
File: .lake/packages/batteries/Batteries/Data/AssocList.lean

Proof steps:
state_before: α : Type u_1
β✝ : Type u_2
f : α → β✝ → β✝
l : AssocList α β✝
inst✝ : BEq α
a : α
⊢ (modify a f l).length = l.length
state_after: case nil
α : Type u_1
β✝ : Type u_2
f : α → β✝ → β✝
inst✝ : BEq α
a : α
⊢ (modify a f nil).length = nil.length

case cons
α : Type u_1
β✝ : Type u_2
f : α → β✝ → β✝
inst✝ : BEq α
a key✝ : α
value✝ : β✝
tail✝ : AssocList α β✝
tail_ih✝ : (modify a f tail✝).length = tail✝.length
⊢ (modify a f (cons key✝ value✝ tail✝)).length = (cons key✝ value✝ tail✝).length
tactic: induction l
Theorem: MeasureTheory.hausdorffMeasure_affineSegment
File: Mathlib/MeasureTheory/Measure/Hausdorff.lean

Proof steps:
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝¹¹ : EMetricSpace X
inst✝¹⁰ : EMetricSpace Y
inst✝⁹ : MeasurableSpace X
inst✝⁸ : BorelSpace X
inst✝⁷ : MeasurableSpace Y
inst✝⁶ : BorelSpace Y
𝕜 : Type u_4
E : Type u_5
P : Type u_6
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace P
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor E P
inst✝ : BorelSpace P
x y : P
⊢ μH[1] (affineSegment ℝ x y) = edist x y
state_after: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝¹¹ : EMetricSpace X
inst✝¹⁰ : EMetricSpace Y
inst✝⁹ : MeasurableSpace X
inst✝⁸ : BorelSpace X
inst✝⁷ : MeasurableSpace Y
inst✝⁶ : BorelSpace Y
𝕜 : Type u_4
E : Type u_5
P : Type u_6
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace P
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor E P
inst✝ : BorelSpace P
x y : P
⊢ (algebraMap ℝ≥0 ℝ≥0∞) (nndist x y) = edist x y
tactic: rw [affineSegment, hausdorffMeasure_lineMap_image, hausdorffMeasure_real, Real.volume_Icc,
    sub_zero, ENNReal.ofReal_one, ← Algebra.algebraMap_eq_smul_one]
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝¹¹ : EMetricSpace X
inst✝¹⁰ : EMetricSpace Y
inst✝⁹ : MeasurableSpace X
inst✝⁸ : BorelSpace X
inst✝⁷ : MeasurableSpace Y
inst✝⁶ : BorelSpace Y
𝕜 : Type u_4
E : Type u_5
P : Type u_6
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : MeasurableSpace P
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor E P
inst✝ : BorelSpace P
x y : P
⊢ (algebraMap ℝ≥0 ℝ≥0∞) (nndist x y) = edist x y
state_after: no goals
tactic: exact (edist_nndist _ _).symm
Theorem: BoxIntegral.integral_nonneg
File: Mathlib/Analysis/BoxIntegral/Basic.lean

Proof steps:
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g✝ : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
g : (ι → ℝ) → ℝ
hg : ∀ x ∈ Box.Icc I, 0 ≤ g x
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
⊢ 0 ≤ integral I l g μ.toBoxAdditive.toSMul
state_after: case pos
ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g✝ : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
g : (ι → ℝ) → ℝ
hg : ∀ x ∈ Box.Icc I, 0 ≤ g x
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
hgi : Integrable I l g μ.toBoxAdditive.toSMul
⊢ 0 ≤ integral I l g μ.toBoxAdditive.toSMul

case neg
ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g✝ : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
g : (ι → ℝ) → ℝ
hg : ∀ x ∈ Box.Icc I, 0 ≤ g x
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
hgi : ¬Integrable I l g μ.toBoxAdditive.toSMul
⊢ 0 ≤ integral I l g μ.toBoxAdditive.toSMul
tactic: by_cases hgi : Integrable I l g μ.toBoxAdditive.toSMul
Theorem: Set.ite_empty_left
File: Mathlib/Data/Set/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
a b : α
s✝ s₁ s₂ t✝ t₁ t₂ u t s : Set α
⊢ t.ite ∅ s = s \ t
state_after: no goals
tactic: simp [Set.ite]
Theorem: hasMFDerivAt_iff_hasFDerivAt
File: Mathlib/Geometry/Manifold/MFDeriv/FDeriv.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
E' : Type u_3
inst✝¹ : NormedAddCommGroup E'
inst✝ : NormedSpace 𝕜 E'
f : E → E'
s : Set E
x : E
f' : TangentSpace 𝓘(𝕜, E) x →L[𝕜] TangentSpace 𝓘(𝕜, E') (f x)
⊢ HasMFDerivAt 𝓘(𝕜, E) 𝓘(𝕜, E') f x f' ↔ HasFDerivAt f f' x
state_after: no goals
tactic: rw [← hasMFDerivWithinAt_univ, hasMFDerivWithinAt_iff_hasFDerivWithinAt, hasFDerivWithinAt_univ]
Theorem: Finset.nsmul_eq_sum_const
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 β
b : β
⊢ ∀ (n : ℕ), b ^ n = ∏ _k ∈ range n, b
state_after: no goals
tactic: simp
Theorem: IsLocallyConstant.range_finite
File: Mathlib/Topology/LocallyConstant/Basic.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : CompactSpace X
f : X → Y
hf : IsLocallyConstant f
⊢ (range f).Finite
state_after: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : CompactSpace X
f : X → Y
hf : IsLocallyConstant f
this : TopologicalSpace Y := ⊥
⊢ (range f).Finite
tactic: letI : TopologicalSpace Y := ⊥
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : CompactSpace X
f : X → Y
hf : IsLocallyConstant f
this : TopologicalSpace Y := ⊥
⊢ (range f).Finite
state_after: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : CompactSpace X
f : X → Y
hf : IsLocallyConstant f
this✝ : TopologicalSpace Y := ⊥
this : DiscreteTopology Y
⊢ (range f).Finite
tactic: haveI := discreteTopology_bot Y
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : CompactSpace X
f : X → Y
hf : IsLocallyConstant f
this✝ : TopologicalSpace Y := ⊥
this : DiscreteTopology Y
⊢ (range f).Finite
state_after: no goals
tactic: exact (isCompact_range hf.continuous).finite_of_discrete
Theorem: MeasureTheory.injective_diracProba
File: Mathlib/MeasureTheory/Measure/DiracProba.lean

Proof steps:
state_before: X✝ : Type u_1
inst✝² : MeasurableSpace X✝
X : Type u_2
inst✝¹ : MeasurableSpace X
inst✝ : MeasurableSpace.SeparatesPoints X
⊢ Function.Injective fun x => diracProba x
state_after: X✝ : Type u_1
inst✝² : MeasurableSpace X✝
X : Type u_2
inst✝¹ : MeasurableSpace X
inst✝ : MeasurableSpace.SeparatesPoints X
x y : X
x_eq_y : (fun x => diracProba x) x = (fun x => diracProba x) y
⊢ x = y
tactic: intro x y x_eq_y
state_before: X✝ : Type u_1
inst✝² : MeasurableSpace X✝
X : Type u_2
inst✝¹ : MeasurableSpace X
inst✝ : MeasurableSpace.SeparatesPoints X
x y : X
x_eq_y : (fun x => diracProba x) x = (fun x => diracProba x) y
⊢ x = y
state_after: X✝ : Type u_1
inst✝² : MeasurableSpace X✝
X : Type u_2
inst✝¹ : MeasurableSpace X
inst✝ : MeasurableSpace.SeparatesPoints X
x y : X
x_eq_y : (fun x => diracProba x) x = (fun x => diracProba x) y
⊢ Measure.dirac x = Measure.dirac y
tactic: rw [← dirac_eq_dirac_iff]
state_before: X✝ : Type u_1
inst✝² : MeasurableSpace X✝
X : Type u_2
inst✝¹ : MeasurableSpace X
inst✝ : MeasurableSpace.SeparatesPoints X
x y : X
x_eq_y : (fun x => diracProba x) x = (fun x => diracProba x) y
⊢ Measure.dirac x = Measure.dirac y
state_after: no goals
tactic: rwa [Subtype.ext_iff] at x_eq_y
Theorem: CategoryTheory.Limits.spanExt_hom_app_right
File: Mathlib/CategoryTheory/Limits/Shapes/Pullback/Cospan.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
X Y Z X' Y' Z' : C
iX : X ≅ X'
iY : Y ≅ Y'
iZ : Z ≅ Z'
f : X ⟶ Y
g : X ⟶ Z
f' : X' ⟶ Y'
g' : X' ⟶ Z'
wf : iX.hom ≫ f' = f ≫ iY.hom
wg : iX.hom ≫ g' = g ≫ iZ.hom
⊢ (spanExt iX iY iZ wf wg).hom.app WalkingSpan.right = iZ.hom
state_after: no goals
tactic: dsimp [spanExt]
Theorem: padicValInt.of_nat
File: Mathlib/NumberTheory/Padics/PadicVal.lean

Proof steps:
state_before: p n : ℕ
⊢ padicValInt p ↑n = padicValNat p n
state_after: no goals
tactic: simp [padicValInt]
Theorem: Equiv.pointReflection_symm
File: Mathlib/Algebra/AddTorsor.lean

Proof steps:
state_before: G : Type u_1
P : Type u_2
inst✝¹ : AddGroup G
inst✝ : AddTorsor G P
x : P
⊢ ∀ (x_1 : P), (Equiv.symm (pointReflection x)) x_1 = (pointReflection x) x_1
state_after: no goals
tactic: simp [pointReflection]
Theorem: SzemerediRegularity.eps_pos
File: Mathlib/Combinatorics/SimpleGraph/Regularity/Bound.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
P : Finpartition univ
u : Finset α
ε : ℝ
hPε : 100 ≤ 4 ^ P.parts.card * ε ^ 5
⊢ Odd 5
state_after: no goals
tactic: decide
Theorem: Module.Projective.of_basis
File: Mathlib/Algebra/Module/Projective.lean

Proof steps:
state_before: R : Type u
inst✝² : Ring R
P : Type v
inst✝¹ : AddCommGroup P
inst✝ : Module R P
ι : Type u_1
b : Basis ι R P
⊢ Projective R P
state_after: case h
R : Type u
inst✝² : Ring R
P : Type v
inst✝¹ : AddCommGroup P
inst✝ : Module R P
ι : Type u_1
b : Basis ι R P
⊢ Function.LeftInverse ⇑(Finsupp.total P P R id) ⇑((b.constr ℕ) fun i => Finsupp.single (b i) 1)
tactic: use b.constr ℕ fun i => Finsupp.single (b i) (1 : R)
state_before: case h
R : Type u
inst✝² : Ring R
P : Type v
inst✝¹ : AddCommGroup P
inst✝ : Module R P
ι : Type u_1
b : Basis ι R P
⊢ Function.LeftInverse ⇑(Finsupp.total P P R id) ⇑((b.constr ℕ) fun i => Finsupp.single (b i) 1)
state_after: case h
R : Type u
inst✝² : Ring R
P : Type v
inst✝¹ : AddCommGroup P
inst✝ : Module R P
ι : Type u_1
b : Basis ι R P
m : P
⊢ (Finsupp.total P P R id) (((b.constr ℕ) fun i => Finsupp.single (b i) 1) m) = m
tactic: intro m
state_before: case h
R : Type u
inst✝² : Ring R
P : Type v
inst✝¹ : AddCommGroup P
inst✝ : Module R P
ι : Type u_1
b : Basis ι R P
m : P
⊢ (Finsupp.total P P R id) (((b.constr ℕ) fun i => Finsupp.single (b i) 1) m) = m
state_after: case h
R : Type u
inst✝² : Ring R
P : Type v
inst✝¹ : AddCommGroup P
inst✝ : Module R P
ι : Type u_1
b : Basis ι R P
m : P
⊢ ((b.repr m).sum fun a b_1 => b_1 • b a) = m
tactic: simp only [b.constr_apply, mul_one, id, Finsupp.smul_single', Finsupp.total_single,
    map_finsupp_sum]
state_before: case h
R : Type u
inst✝² : Ring R
P : Type v
inst✝¹ : AddCommGroup P
inst✝ : Module R P
ι : Type u_1
b : Basis ι R P
m : P
⊢ ((b.repr m).sum fun a b_1 => b_1 • b a) = m
state_after: no goals
tactic: exact b.total_repr m
Theorem: IsTopologicalBasis.iInf
File: Mathlib/Topology/Bases.lean

Proof steps:
state_before: β : Type u_1
ι : Type u_2
t : ι → TopologicalSpace β
T : ι → Set (Set β)
h_basis : ∀ (i : ι), IsTopologicalBasis (T i)
⊢ IsTopologicalBasis {S | ∃ U F, (∀ i ∈ F, U i ∈ T i) ∧ S = ⋂ i ∈ F, U i}
state_after: β : Type u_1
ι : Type u_2
t : ι → TopologicalSpace β
T : ι → Set (Set β)
h_basis : ∀ (i : ι), IsTopologicalBasis (T i)
x✝ : TopologicalSpace β := ⨅ i, t i
⊢ IsTopologicalBasis {S | ∃ U F, (∀ i ∈ F, U i ∈ T i) ∧ S = ⋂ i ∈ F, U i}
tactic: let _ := ⨅ i, t i
state_before: β : Type u_1
ι : Type u_2
t : ι → TopologicalSpace β
T : ι → Set (Set β)
h_basis : ∀ (i : ι), IsTopologicalBasis (T i)
x✝ : TopologicalSpace β := ⨅ i, t i
⊢ IsTopologicalBasis {S | ∃ U F, (∀ i ∈ F, U i ∈ T i) ∧ S = ⋂ i ∈ F, U i}
state_after: case refine_1
β : Type u_1
ι : Type u_2
t : ι → TopologicalSpace β
T : ι → Set (Set β)
h_basis : ∀ (i : ι), IsTopologicalBasis (T i)
x✝ : TopologicalSpace β := ⨅ i, t i
⊢ ∀ u ∈ {S | ∃ U F, (∀ i ∈ F, U i ∈ T i) ∧ S = ⋂ i ∈ F, U i}, IsOpen u

case refine_2
β : Type u_1
ι : Type u_2
t : ι → TopologicalSpace β
T : ι → Set (Set β)
h_basis : ∀ (i : ι), IsTopologicalBasis (T i)
x✝ : TopologicalSpace β := ⨅ i, t i
⊢ ∀ (a : β) (u : Set β), a ∈ u → IsOpen u → ∃ v ∈ {S | ∃ U F, (∀ i ∈ F, U i ∈ T i) ∧ S = ⋂ i ∈ F, U i}, a ∈ v ∧ v ⊆ u
tactic: refine isTopologicalBasis_of_isOpen_of_nhds ?_ ?_
Theorem: CategoryTheory.Functor.FullyFaithful.homEquiv_symm_apply
File: Mathlib/CategoryTheory/Functor/FullyFaithful.lean

Proof steps:
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u_1
inst✝ : Category.{?u.8386, u_1} E
X✝¹ Y✝¹ : C
F : C ⥤ D
X✝ Y✝ Z : C
hF : F.FullyFaithful
X Y : C
x✝ : X ⟶ Y
⊢ hF.preimage (F.map x✝) = x✝
state_after: no goals
tactic: simp
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u_1
inst✝ : Category.{?u.8386, u_1} E
X✝¹ Y✝¹ : C
F : C ⥤ D
X✝ Y✝ Z : C
hF : F.FullyFaithful
X Y : C
x✝ : F.obj X ⟶ F.obj Y
⊢ F.map (hF.preimage x✝) = x✝
state_after: no goals
tactic: simp
Theorem: Surreal.Multiplication.numeric_of_ih
File: Mathlib/SetTheory/Surreal/Multiplication.lean

Proof steps:
state_before: x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
⊢ (x₁ * y).Numeric ∧ (x₂ * y).Numeric
state_after: case left
x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
⊢ CutExpand IsOption (Args.P1 x₁ y).toMultiset (Args.P24 x₁ x₂ y).toMultiset

case right
x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
⊢ CutExpand IsOption (Args.P1 x₂ y).toMultiset (Args.P24 x₁ x₂ y).toMultiset
tactic: constructor <;> refine ih' (Args.P1 _ _) (TransGen.single ?_)
Theorem: ContinuousAt.comp_of_eq
File: Mathlib/Topology/Basic.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
f : X → Y
s : Set X
x : X
y : Y
g : Y → Z
hg : ContinuousAt g y
hf : ContinuousAt f x
hy : f x = y
⊢ ContinuousAt (g ∘ f) x
state_after: X : Type u_1
Y : Type u_2
Z : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
f : X → Y
s : Set X
x : X
g : Y → Z
hf : ContinuousAt f x
hg : ContinuousAt g (f x)
⊢ ContinuousAt (g ∘ f) x
tactic: subst hy
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
f : X → Y
s : Set X
x : X
g : Y → Z
hf : ContinuousAt f x
hg : ContinuousAt g (f x)
⊢ ContinuousAt (g ∘ f) x
state_after: no goals
tactic: exact hg.comp hf
Theorem: lipschitzOnWith_neg_iff
File: Mathlib/Analysis/Normed/Group/Uniform.lean

Proof steps:
state_before: 𝓕 : Type u_1
α✝ : Type u_2
E✝ : Type u_3
F : Type u_4
inst✝³ : SeminormedCommGroup E✝
inst✝² : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E✝
r r₁ r₂ : ℝ
α : Type u_5
E : Type u_6
inst✝¹ : SeminormedCommGroup E
inst✝ : PseudoEMetricSpace α
K Kf Kg : ℝ≥0
f g : α → E
s : Set α
x : α
⊢ LipschitzOnWith K f⁻¹ s ↔ LipschitzOnWith K f s
state_after: no goals
tactic: simp [LipschitzOnWith]
Theorem: AddLocalization.mk_eq_mk_iff'
File: Mathlib/GroupTheory/MonoidLocalization/Basic.lean

Proof steps:
state_before: α : Type u_1
inst✝ : CancelCommMonoid α
s : Submonoid α
a₁ b₁ : α
a₂ b₂ : ↥s
⊢ mk a₁ a₂ = mk b₁ b₂ ↔ ↑b₂ * a₁ = ↑a₂ * b₁
state_after: no goals
tactic: simp_rw [mk_eq_mk_iff, r_iff_exists, mul_left_cancel_iff, exists_const]
Theorem: Set.infinite_image2
File: Mathlib/Data/Set/Finite.lean

Proof steps:
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
s✝ t✝ : Set α
f : α → β → γ
s : Set α
t : Set β
a : α
b : β
hfs : ∀ b ∈ t, InjOn (fun a => f a b) s
hft : ∀ a ∈ s, InjOn (f a) t
⊢ (image2 f s t).Infinite ↔ s.Infinite ∧ t.Nonempty ∨ t.Infinite ∧ s.Nonempty
state_after: case refine_1
α : Type u
β : Type v
ι : Sort w
γ : Type x
s✝ t✝ : Set α
f : α → β → γ
s : Set α
t : Set β
a : α
b : β
hfs : ∀ b ∈ t, InjOn (fun a => f a b) s
hft : ∀ a ∈ s, InjOn (f a) t
h : (image2 f s t).Infinite
⊢ (s ×ˢ t).Infinite

case refine_2
α : Type u
β : Type v
ι : Sort w
γ : Type x
s✝ t✝ : Set α
f : α → β → γ
s : Set α
t : Set β
a : α
b : β
hfs : ∀ b ∈ t, InjOn (fun a => f a b) s
hft : ∀ a ∈ s, InjOn (f a) t
⊢ s.Infinite ∧ t.Nonempty ∨ t.Infinite ∧ s.Nonempty → (image2 f s t).Infinite
tactic: refine ⟨fun h => Set.infinite_prod.1 ?_, ?_⟩
Theorem: CategoryTheory.Subobject.factors_zero
File: Mathlib/CategoryTheory/Subobject/FactorThru.lean

Proof steps:
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
X✝ Y✝ Z : C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : HasZeroMorphisms C
X Y : C
P : Subobject Y
⊢ 0 ≫ (representative.obj P).arrow = 0
state_after: no goals
tactic: simp
Theorem: localCohomology.Ideal.exists_pow_le_of_le_radical_of_fG
File: Mathlib/Algebra/Homology/LocalCohomology.lean

Proof steps:
state_before: R : Type u
inst✝ : CommRing R
I J K : Ideal R
hIJ : I ≤ J.radical
hJ : J.radical.FG
⊢ ∃ k, I ^ k ≤ J
state_after: case intro
R : Type u
inst✝ : CommRing R
I J K : Ideal R
hIJ : I ≤ J.radical
hJ : J.radical.FG
k : ℕ
hk : J.radical ^ k ≤ J
⊢ ∃ k, I ^ k ≤ J
tactic: obtain ⟨k, hk⟩ := J.exists_radical_pow_le_of_fg hJ
state_before: case intro
R : Type u
inst✝ : CommRing R
I J K : Ideal R
hIJ : I ≤ J.radical
hJ : J.radical.FG
k : ℕ
hk : J.radical ^ k ≤ J
⊢ ∃ k, I ^ k ≤ J
state_after: case h
R : Type u
inst✝ : CommRing R
I J K : Ideal R
hIJ : I ≤ J.radical
hJ : J.radical.FG
k : ℕ
hk : J.radical ^ k ≤ J
⊢ I ^ k ≤ J
tactic: use k
state_before: case h
R : Type u
inst✝ : CommRing R
I J K : Ideal R
hIJ : I ≤ J.radical
hJ : J.radical.FG
k : ℕ
hk : J.radical ^ k ≤ J
⊢ I ^ k ≤ J
state_after: no goals
tactic: calc
    I ^ k ≤ J.radical ^ k := Ideal.pow_right_mono hIJ _
    _ ≤ J := hk