ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Matrix.inv_fromBlocks_zero₁₂_of_isUnit_iff
File: Mathlib/LinearAlgebra/Matrix/SchurComplement.lean

Proof steps:
state_before: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁶ : Fintype l
inst✝⁵ : Fintype m
inst✝⁴ : Fintype n
inst✝³ : DecidableEq l
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A : Matrix m m α
C : Matrix n m α
D : Matrix n n α
hAD : IsUnit A ↔ IsUnit D
⊢ (fromBlocks A 0 C D)⁻¹ = fromBlocks A⁻¹ 0 (-(D⁻¹ * C * A⁻¹)) D⁻¹
state_after: case pos
l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁶ : Fintype l
inst✝⁵ : Fintype m
inst✝⁴ : Fintype n
inst✝³ : DecidableEq l
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A : Matrix m m α
C : Matrix n m α
D : Matrix n n α
hAD : IsUnit A ↔ IsUnit D
hA : IsUnit A
⊢ (fromBlocks A 0 C D)⁻¹ = fromBlocks A⁻¹ 0 (-(D⁻¹ * C * A⁻¹)) D⁻¹

case neg
l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁶ : Fintype l
inst✝⁵ : Fintype m
inst✝⁴ : Fintype n
inst✝³ : DecidableEq l
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A : Matrix m m α
C : Matrix n m α
D : Matrix n n α
hAD : IsUnit A ↔ IsUnit D
hA : ¬IsUnit A
⊢ (fromBlocks A 0 C D)⁻¹ = fromBlocks A⁻¹ 0 (-(D⁻¹ * C * A⁻¹)) D⁻¹
tactic: by_cases hA : IsUnit A
Theorem: Matrix.one_eq_pi_single
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✝² : DecidableEq n
inst✝¹ : Zero α
inst✝ : One α
i j : n
⊢ 1 i j = Pi.single i 1 j
state_after: no goals
tactic: simp only [one_apply, Pi.single_apply, eq_comm]
Theorem: Set.surjOn_iInter
File: Mathlib/Data/Set/Lattice.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
inst✝ : Nonempty ι
s : ι → Set α
t : Set β
f : α → β
H : ∀ (i : ι), SurjOn f (s i) t
Hinj : InjOn f (⋃ i, s i)
⊢ SurjOn f (⋂ i, s i) t
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
inst✝ : Nonempty ι
s : ι → Set α
t : Set β
f : α → β
H : ∀ (i : ι), SurjOn f (s i) t
Hinj : InjOn f (⋃ i, s i)
y : β
hy : y ∈ t
⊢ y ∈ f '' ⋂ i, s i
tactic: intro y hy
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
inst✝ : Nonempty ι
s : ι → Set α
t : Set β
f : α → β
H : ∀ (i : ι), SurjOn f (s i) t
Hinj : InjOn f (⋃ i, s i)
y : β
hy : y ∈ t
⊢ y ∈ f '' ⋂ i, s i
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
inst✝ : Nonempty ι
s : ι → Set α
t : Set β
f : α → β
H : ∀ (i : ι), SurjOn f (s i) t
Hinj : InjOn f (⋃ i, s i)
y : β
hy : y ∈ t
⊢ ∀ (i : ι), y ∈ f '' s i
tactic: rw [Hinj.image_iInter_eq, mem_iInter]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
inst✝ : Nonempty ι
s : ι → Set α
t : Set β
f : α → β
H : ∀ (i : ι), SurjOn f (s i) t
Hinj : InjOn f (⋃ i, s i)
y : β
hy : y ∈ t
⊢ ∀ (i : ι), y ∈ f '' s i
state_after: no goals
tactic: exact fun i => H i hy
Theorem: Real.rpow_lt_one_of_one_lt_of_neg
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

Proof steps:
state_before: x✝ y z✝ : ℝ
n : ℕ
x z : ℝ
hx : 1 < x
hz : z < 0
⊢ x ^ z < 1
state_after: case h.e'_4
x✝ y z✝ : ℝ
n : ℕ
x z : ℝ
hx : 1 < x
hz : z < 0
⊢ 1 = x ^ 0
tactic: convert rpow_lt_rpow_of_exponent_lt hx hz
state_before: case h.e'_4
x✝ y z✝ : ℝ
n : ℕ
x z : ℝ
hx : 1 < x
hz : z < 0
⊢ 1 = x ^ 0
state_after: no goals
tactic: exact (rpow_zero x).symm
Theorem: CategoryTheory.Presieve.factorsThru_of_le
File: Mathlib/CategoryTheory/Sites/Coverage.lean

Proof steps:
state_before: C : Type u_2
D : Type ?u.22848
inst✝¹ : Category.{u_1, u_2} C
inst✝ : Category.{?u.22856, ?u.22848} D
X : C
S T : Presieve X
h : S ≤ T
Y : C
g : Y ⟶ X
hg : S g
⊢ 𝟙 Y ≫ g = g
state_after: no goals
tactic: simp
Theorem: SetTheory.PGame.nim_fuzzy_zero_of_ne_zero
File: Mathlib/SetTheory/Game/Nim.lean

Proof steps:
state_before: o : Ordinal.{u_1}
ho : o ≠ 0
⊢ nim o ‖ 0
state_after: o : Ordinal.{u_1}
ho : o ≠ 0
⊢ ∃ j,
    (mk (Quotient.out o).α (Quotient.out o).α (fun o₂ => nim (typein (fun x x_1 => x < x_1) o₂)) fun o₂ =>
            nim (typein (fun x x_1 => x < x_1) o₂)).moveRight
        j ≤
      0
tactic: rw [Impartial.fuzzy_zero_iff_lf, nim_def, lf_zero_le]
state_before: o : Ordinal.{u_1}
ho : o ≠ 0
⊢ ∃ j,
    (mk (Quotient.out o).α (Quotient.out o).α (fun o₂ => nim (typein (fun x x_1 => x < x_1) o₂)) fun o₂ =>
            nim (typein (fun x x_1 => x < x_1) o₂)).moveRight
        j ≤
      0
state_after: o : Ordinal.{u_1}
ho : 0 < o
⊢ ∃ j,
    (mk (Quotient.out o).α (Quotient.out o).α (fun o₂ => nim (typein (fun x x_1 => x < x_1) o₂)) fun o₂ =>
            nim (typein (fun x x_1 => x < x_1) o₂)).moveRight
        j ≤
      0
tactic: rw [← Ordinal.pos_iff_ne_zero] at ho
state_before: o : Ordinal.{u_1}
ho : 0 < o
⊢ ∃ j,
    (mk (Quotient.out o).α (Quotient.out o).α (fun o₂ => nim (typein (fun x x_1 => x < x_1) o₂)) fun o₂ =>
            nim (typein (fun x x_1 => x < x_1) o₂)).moveRight
        j ≤
      0
state_after: no goals
tactic: exact ⟨(Ordinal.principalSegOut ho).top, by simp⟩
Theorem: Finpartition.bot_isUniform
File: Mathlib/Combinatorics/SimpleGraph/Regularity/Uniform.lean

Proof steps:
state_before: α : Type u_1
𝕜 : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : DecidableEq α
A : Finset α
P : Finpartition A
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε δ : 𝕜
u v : Finset α
hε : 0 < ε
⊢ ⊥.IsUniform G ε
state_after: α : Type u_1
𝕜 : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : DecidableEq α
A : Finset α
P : Finpartition A
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε δ : 𝕜
u v : Finset α
hε : 0 < ε
⊢ 0 ≤ ↑(A.card * (A.card - 1)) * ε
tactic: rw [Finpartition.IsUniform, Finpartition.card_bot, nonUniforms_bot _ hε, Finset.card_empty,
    Nat.cast_zero]
state_before: α : Type u_1
𝕜 : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : DecidableEq α
A : Finset α
P : Finpartition A
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε δ : 𝕜
u v : Finset α
hε : 0 < ε
⊢ 0 ≤ ↑(A.card * (A.card - 1)) * ε
state_after: no goals
tactic: exact mul_nonneg (Nat.cast_nonneg _) hε.le
Theorem: Zsqrtd.norm_intCast
File: Mathlib/NumberTheory/Zsqrtd/Basic.lean

Proof steps:
state_before: d n : ℤ
⊢ (↑n).norm = n * n
state_after: no goals
tactic: simp [norm]
Theorem: Zspan.repr_fract_apply
File: Mathlib/Algebra/Module/Zlattice/Basic.lean

Proof steps:
state_before: E : Type u_1
ι : Type u_2
K : Type u_3
inst✝⁴ : NormedLinearOrderedField K
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace K E
b : Basis ι K E
inst✝¹ : FloorRing K
inst✝ : Fintype ι
m : E
i : ι
⊢ (b.repr (fract b m)) i = Int.fract ((b.repr m) i)
state_after: no goals
tactic: rw [fract, map_sub, Finsupp.coe_sub, Pi.sub_apply, repr_floor_apply, Int.fract]
Theorem: MulHom.noncommCoprod_apply
File: Mathlib/GroupTheory/NoncommCoprod.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : Mul M
inst✝¹ : Mul N
inst✝ : Semigroup P
f : M →ₙ* P
g : N →ₙ* P
comm : ∀ (m : M) (n : N), Commute (f m) (g n)
mn mn' : M × N
⊢ (fun mn => f mn.1 * g mn.2) (mn * mn') = (fun mn => f mn.1 * g mn.2) mn * (fun mn => f mn.1 * g mn.2) mn'
state_after: no goals
tactic: simpa using (comm _ _).mul_mul_mul_comm _ _
Theorem: CategoryTheory.Localization.Construction.WhiskeringLeftEquivalence.counitIso_inv
File: Mathlib/CategoryTheory/Localization/Construction.lean

Proof steps:
state_before: C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G : C ⥤ D
hG : W.IsInvertedBy G
⊢ inverse W D ⋙ functor W D = 𝟭 (W.FunctorsInverting D)
state_after: case refine_1
C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G : C ⥤ D
hG : W.IsInvertedBy G
⊢ ∀ (X : W.FunctorsInverting D), (inverse W D ⋙ functor W D).obj X = (𝟭 (W.FunctorsInverting D)).obj X

case refine_2
C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G : C ⥤ D
hG : W.IsInvertedBy G
⊢ ∀ (X Y : W.FunctorsInverting D) (f : X ⟶ Y),
    (inverse W D ⋙ functor W D).map f = eqToHom ⋯ ≫ (𝟭 (W.FunctorsInverting D)).map f ≫ eqToHom ⋯
tactic: refine Functor.ext ?_ ?_
Theorem: compact_basis_nhds
File: Mathlib/Topology/Compactness/LocallyCompact.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
ι : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
s t : Set X
inst✝ : LocallyCompactSpace X
x : X
⊢ ∀ t ∈ 𝓝 x, ∃ r ∈ 𝓝 x, IsCompact r ∧ r ⊆ t
state_after: no goals
tactic: simpa only [and_comm] using LocallyCompactSpace.local_compact_nhds x
Theorem: _private.Mathlib.RingTheory.MvPolynomial.NewtonIdentities.0.MvPolynomial.NewtonIdentities.esymm_summand_to_weight
File: Mathlib/RingTheory/MvPolynomial/NewtonIdentities.lean

Proof steps:
state_before: σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
A : Finset σ
h : A ∈ powersetCard k univ
⊢ ∑ j ∈ A, MvPolynomial.NewtonIdentities.weight σ R k (A, j) = ↑k * (-1) ^ k * ∏ i ∈ A, X i
state_after: no goals
tactic: simp [weight, mem_powersetCard_univ.mp h, mul_assoc]
Theorem: Filter.isAddUnit_iff
File: Mathlib/Order/Filter/Pointwise.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
ε : Type u_6
inst✝ : DivisionMonoid α
f g : Filter α
⊢ IsUnit f ↔ ∃ a, f = pure a ∧ IsUnit a
state_after: case mp
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
ε : Type u_6
inst✝ : DivisionMonoid α
f g : Filter α
⊢ IsUnit f → ∃ a, f = pure a ∧ IsUnit a

case mpr
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
ε : Type u_6
inst✝ : DivisionMonoid α
f g : Filter α
⊢ (∃ a, f = pure a ∧ IsUnit a) → IsUnit f
tactic: constructor
Theorem: mul_le_iff_le_one_right'
File: Mathlib/Algebra/Order/Monoid/Unbundled/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝³ : MulOneClass α
inst✝² : LE α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : ContravariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b : α
⊢ a * b ≤ a ↔ a * b ≤ a * 1
state_after: no goals
tactic: rw [mul_one]
Theorem: IsLocalization.exist_integer_multiples_of_finite
File: Mathlib/RingTheory/Localization/Integer.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
inst✝¹ : IsLocalization M S
ι : Type u_4
inst✝ : Finite ι
f : ι → S
⊢ ∃ b, ∀ (i : ι), IsInteger R (↑b • f i)
state_after: case intro
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
inst✝¹ : IsLocalization M S
ι : Type u_4
inst✝ : Finite ι
f : ι → S
val✝ : Fintype ι
⊢ ∃ b, ∀ (i : ι), IsInteger R (↑b • f i)
tactic: cases nonempty_fintype ι
state_before: case intro
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
inst✝¹ : IsLocalization M S
ι : Type u_4
inst✝ : Finite ι
f : ι → S
val✝ : Fintype ι
⊢ ∃ b, ∀ (i : ι), IsInteger R (↑b • f i)
state_after: case intro.intro
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
inst✝¹ : IsLocalization M S
ι : Type u_4
inst✝ : Finite ι
f : ι → S
val✝ : Fintype ι
b : ↥M
hb : ∀ i ∈ Finset.univ, IsInteger R (↑b • f i)
⊢ ∃ b, ∀ (i : ι), IsInteger R (↑b • f i)
tactic: obtain ⟨b, hb⟩ := exist_integer_multiples M Finset.univ f
state_before: case intro.intro
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
inst✝¹ : IsLocalization M S
ι : Type u_4
inst✝ : Finite ι
f : ι → S
val✝ : Fintype ι
b : ↥M
hb : ∀ i ∈ Finset.univ, IsInteger R (↑b • f i)
⊢ ∃ b, ∀ (i : ι), IsInteger R (↑b • f i)
state_after: no goals
tactic: exact ⟨b, fun i => hb i (Finset.mem_univ _)⟩
Theorem: mdifferentiableAt_iff_of_mem_source
File: Mathlib/Geometry/Manifold/MFDeriv/Basic.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝¹⁵ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹⁴ : NormedAddCommGroup E
inst✝¹³ : NormedSpace 𝕜 E
H : Type u_3
inst✝¹² : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝¹¹ : TopologicalSpace M
inst✝¹⁰ : ChartedSpace H M
E' : Type u_5
inst✝⁹ : NormedAddCommGroup E'
inst✝⁸ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝⁷ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝⁶ : TopologicalSpace M'
inst✝⁵ : ChartedSpace H' M'
E'' : Type u_8
inst✝⁴ : NormedAddCommGroup E''
inst✝³ : NormedSpace 𝕜 E''
H'' : Type u_9
inst✝² : TopologicalSpace H''
I'' : ModelWithCorners 𝕜 E'' H''
M'' : Type u_10
inst✝¹ : TopologicalSpace M''
inst✝ : ChartedSpace H'' M''
f f₀ f₁ : M → M'
x : M
s t : Set M
g : M' → M''
u : Set M'
Is : SmoothManifoldWithCorners I M
I's : SmoothManifoldWithCorners I' M'
I''s : SmoothManifoldWithCorners I'' M''
f' f₀' f₁' : TangentSpace I x →L[𝕜] TangentSpace I' (f x)
g' : TangentSpace I' (f x) →L[𝕜] TangentSpace I'' (g (f x))
x' : M
y : M'
hx : x' ∈ (chartAt H x).source
hy : f x' ∈ (chartAt H' y).source
⊢ ContinuousWithinAt f univ x' ∧
      DifferentiableWithinAt 𝕜 (↑(extChartAt I' y) ∘ f ∘ ↑(extChartAt I x).symm)
        (↑(extChartAt I x).symm ⁻¹' univ ∩ range ↑I) (↑(extChartAt I x) x') ↔
    ContinuousAt f x' ∧
      DifferentiableWithinAt 𝕜 (↑(extChartAt I' y) ∘ f ∘ ↑(extChartAt I x).symm) (range ↑I) (↑(extChartAt I x) x')
state_after: no goals
tactic: rw [continuousWithinAt_univ, Set.preimage_univ, Set.univ_inter]
Theorem: MeasureTheory.withDensity_apply_le
File: Mathlib/MeasureTheory/Measure/WithDensity.lean

Proof steps:
state_before: α : Type u_1
m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
s : Set α
⊢ ∫⁻ (a : α) in s, f a ∂μ ≤ (μ.withDensity f) s
state_after: α : Type u_1
m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
s : Set α
t : Set α := toMeasurable (μ.withDensity f) s
⊢ ∫⁻ (a : α) in s, f a ∂μ ≤ (μ.withDensity f) s
tactic: let t := toMeasurable (μ.withDensity f) s
state_before: α : Type u_1
m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
s : Set α
t : Set α := toMeasurable (μ.withDensity f) s
⊢ ∫⁻ (a : α) in s, f a ∂μ ≤ (μ.withDensity f) s
state_after: no goals
tactic: calc
  ∫⁻ a in s, f a ∂μ ≤ ∫⁻ a in t, f a ∂μ :=
    lintegral_mono_set (subset_toMeasurable (withDensity μ f) s)
  _ = μ.withDensity f t :=
    (withDensity_apply f (measurableSet_toMeasurable (withDensity μ f) s)).symm
  _ = μ.withDensity f s := measure_toMeasurable s
Theorem: ENNReal.iSup_zero_eq_zero
File: Mathlib/Data/ENNReal/Real.lean

Proof steps:
state_before: ι : Sort u_1
⊢ ⨆ x, 0 = 0
state_after: no goals
tactic: simp
Theorem: iInf_ulift
File: Mathlib/Order/CompleteLattice.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι✝ : Sort u_5
ι' : Sort u_6
κ : ι✝ → Sort u_7
κ' : ι' → Sort u_8
ι : Type u_9
inst✝ : InfSet α
f : ULift.{u_10, u_9} ι → α
⊢ ⨅ i, f i = ⨅ i, f { down := i }
state_after: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι✝ : Sort u_5
ι' : Sort u_6
κ : ι✝ → Sort u_7
κ' : ι' → Sort u_8
ι : Type u_9
inst✝ : InfSet α
f : ULift.{u_10, u_9} ι → α
⊢ sInf (range fun i => f i) = sInf (range fun i => f { down := i })
tactic: simp [iInf]
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι✝ : Sort u_5
ι' : Sort u_6
κ : ι✝ → Sort u_7
κ' : ι' → Sort u_8
ι : Type u_9
inst✝ : InfSet α
f : ULift.{u_10, u_9} ι → α
⊢ sInf (range fun i => f i) = sInf (range fun i => f { down := i })
state_after: case e_a.h
α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι✝ : Sort u_5
ι' : Sort u_6
κ : ι✝ → Sort u_7
κ' : ι' → Sort u_8
ι : Type u_9
inst✝ : InfSet α
f : ULift.{u_10, u_9} ι → α
x : α
⊢ (x ∈ range fun i => f i) ↔ x ∈ range fun i => f { down := i }
tactic: congr with x
state_before: case e_a.h
α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι✝ : Sort u_5
ι' : Sort u_6
κ : ι✝ → Sort u_7
κ' : ι' → Sort u_8
ι : Type u_9
inst✝ : InfSet α
f : ULift.{u_10, u_9} ι → α
x : α
⊢ (x ∈ range fun i => f i) ↔ x ∈ range fun i => f { down := i }
state_after: no goals
tactic: simp
Theorem: TopologicalSpace.isTopologicalBasis_of_cover
File: Mathlib/Topology/Bases.lean

Proof steps:
state_before: α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s : Set α
ι : Sort u_2
U : ι → Set α
Uo : ∀ (i : ι), IsOpen (U i)
Uc : ⋃ i, U i = univ
b : (i : ι) → Set (Set ↑(U i))
hb : ∀ (i : ι), IsTopologicalBasis (b i)
⊢ IsTopologicalBasis (⋃ i, image Subtype.val '' b i)
state_after: case refine_1
α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s : Set α
ι : Sort u_2
U : ι → Set α
Uo : ∀ (i : ι), IsOpen (U i)
Uc : ⋃ i, U i = univ
b : (i : ι) → Set (Set ↑(U i))
hb : ∀ (i : ι), IsTopologicalBasis (b i)
u : Set α
hu : u ∈ ⋃ i, image Subtype.val '' b i
⊢ IsOpen u

case refine_2
α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s : Set α
ι : Sort u_2
U : ι → Set α
Uo : ∀ (i : ι), IsOpen (U i)
Uc : ⋃ i, U i = univ
b : (i : ι) → Set (Set ↑(U i))
hb : ∀ (i : ι), IsTopologicalBasis (b i)
⊢ ∀ (a : α) (u : Set α), a ∈ u → IsOpen u → ∃ v ∈ ⋃ i, image Subtype.val '' b i, a ∈ v ∧ v ⊆ u
tactic: refine isTopologicalBasis_of_isOpen_of_nhds (fun u hu => ?_) ?_
Theorem: SetTheory.PGame.Numeric.mul_pos
File: Mathlib/SetTheory/Surreal/Multiplication.lean

Proof steps:
state_before: x x₁ x₂ y y₁ y₂ : PGame
hx : x.Numeric
hx₁ : x₁.Numeric
hx₂ : x₂.Numeric
hy : y.Numeric
hy₁ : y₁.Numeric
hy₂ : y₂.Numeric
hp₁ : 0 < x₁
hp₂ : 0 < x₂
⊢ 0 < x₁ * x₂
state_after: x x₁ x₂ y y₁ y₂ : PGame
hx : x.Numeric
hx₁ : x₁.Numeric
hx₂ : x₂.Numeric
hy : y.Numeric
hy₁ : y₁.Numeric
hy₂ : y₂.Numeric
hp₁ : 0 < x₁
hp₂ : 0 < x₂
⊢ ⟦0⟧ < ⟦x₁ * x₂⟧
tactic: rw [lt_iff_game_lt]
state_before: x x₁ x₂ y y₁ y₂ : PGame
hx : x.Numeric
hx₁ : x₁.Numeric
hx₂ : x₂.Numeric
hy : y.Numeric
hy₁ : y₁.Numeric
hy₂ : y₂.Numeric
hp₁ : 0 < x₁
hp₂ : 0 < x₂
⊢ ⟦0⟧ < ⟦x₁ * x₂⟧
state_after: x x₁ x₂ y y₁ y₂ : PGame
hx : x.Numeric
hx₁ : x₁.Numeric
hx₂ : x₂.Numeric
hy : y.Numeric
hy₁ : y₁.Numeric
hy₂ : y₂.Numeric
hp₁ : 0 < x₁
hp₂ : 0 < x₂
this : P3 0 x₁ 0 x₂
⊢ ⟦0⟧ < ⟦x₁ * x₂⟧
tactic: have := P3_of_lt_of_lt numeric_zero hx₁ numeric_zero hx₂ hp₁ hp₂
state_before: x x₁ x₂ y y₁ y₂ : PGame
hx : x.Numeric
hx₁ : x₁.Numeric
hx₂ : x₂.Numeric
hy : y.Numeric
hy₁ : y₁.Numeric
hy₂ : y₂.Numeric
hp₁ : 0 < x₁
hp₂ : 0 < x₂
this : P3 0 x₁ 0 x₂
⊢ ⟦0⟧ < ⟦x₁ * x₂⟧
state_after: x x₁ x₂ y y₁ y₂ : PGame
hx : x.Numeric
hx₁ : x₁.Numeric
hx₂ : x₂.Numeric
hy : y.Numeric
hy₁ : y₁.Numeric
hy₂ : y₂.Numeric
hp₁ : 0 < x₁
hp₂ : 0 < x₂
this : ⟦0⟧ < ⟦x₁ * x₂⟧
⊢ ⟦0⟧ < ⟦x₁ * x₂⟧
tactic: simp_rw [P3, quot_zero_mul, quot_mul_zero, add_lt_add_iff_left] at this
state_before: x x₁ x₂ y y₁ y₂ : PGame
hx : x.Numeric
hx₁ : x₁.Numeric
hx₂ : x₂.Numeric
hy : y.Numeric
hy₁ : y₁.Numeric
hy₂ : y₂.Numeric
hp₁ : 0 < x₁
hp₂ : 0 < x₂
this : ⟦0⟧ < ⟦x₁ * x₂⟧
⊢ ⟦0⟧ < ⟦x₁ * x₂⟧
state_after: no goals
tactic: exact this
Theorem: Metric.preimage_add_right_closedBall
File: Mathlib/Topology/MetricSpace/IsometricSMul.lean

Proof steps:
state_before: M : Type u
G : Type v
X : Type w
inst✝⁵ : PseudoMetricSpace X
inst✝⁴ : Group G
inst✝³ : MulAction G X
inst✝² : IsometricSMul G X
inst✝¹ : PseudoMetricSpace G
inst✝ : IsometricSMul Gᵐᵒᵖ G
a b : G
r : ℝ
⊢ (fun x => x * a) ⁻¹' closedBall b r = closedBall (b / a) r
state_after: M : Type u
G : Type v
X : Type w
inst✝⁵ : PseudoMetricSpace X
inst✝⁴ : Group G
inst✝³ : MulAction G X
inst✝² : IsometricSMul G X
inst✝¹ : PseudoMetricSpace G
inst✝ : IsometricSMul Gᵐᵒᵖ G
a b : G
r : ℝ
⊢ (fun x => x * a) ⁻¹' closedBall b r = closedBall (b * a⁻¹) r
tactic: rw [div_eq_mul_inv]
state_before: M : Type u
G : Type v
X : Type w
inst✝⁵ : PseudoMetricSpace X
inst✝⁴ : Group G
inst✝³ : MulAction G X
inst✝² : IsometricSMul G X
inst✝¹ : PseudoMetricSpace G
inst✝ : IsometricSMul Gᵐᵒᵖ G
a b : G
r : ℝ
⊢ (fun x => x * a) ⁻¹' closedBall b r = closedBall (b * a⁻¹) r
state_after: no goals
tactic: exact preimage_smul_closedBall (MulOpposite.op a) b r
Theorem: UpperSet.erase_eq
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 α
s : UpperSet α
t : Set α
a : α
⊢ s.erase a = s ↔ a ∉ s
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝ : Preorder α
s : UpperSet α
t : Set α
a : α
⊢ s.sdiff {a} = s ↔ a ∉ s
tactic: rw [← sdiff_singleton]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝ : Preorder α
s : UpperSet α
t : Set α
a : α
⊢ s.sdiff {a} = s ↔ a ∉ s
state_after: no goals
tactic: simp [-sdiff_singleton]
Theorem: tendstoUniformlyOn_univ
File: Mathlib/Topology/UniformSpace/UniformConvergence.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
⊢ TendstoUniformlyOn F f p univ ↔ TendstoUniformly F f p
state_after: no goals
tactic: simp [TendstoUniformlyOn, TendstoUniformly]
Theorem: ZMod.inv_mul_of_unit
File: Mathlib/Data/ZMod/Basic.lean

Proof steps:
state_before: m n✝ n : ℕ
a : ZMod n
h : IsUnit a
⊢ a⁻¹ * a = 1
state_after: no goals
tactic: rw [mul_comm, mul_inv_of_unit a h]
Theorem: Finmap.lookup_insert_of_ne
File: Mathlib/Data/Finmap.lean

Proof steps:
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
a a' : α
b : β a
s✝ : Finmap β
h : a' ≠ a
s : AList β
⊢ lookup a' (insert a b ⟦s⟧) = lookup a' ⟦s⟧
state_after: no goals
tactic: simp only [insert_toFinmap, lookup_toFinmap, lookup_insert_ne h]
Theorem: Combinatorics.Line.toSubspaceUnit_apply
File: Mathlib/Combinatorics/HalesJewett.lean

Proof steps:
state_before: η : Type u_1
α : Type u_2
ι : Type u_3
κ : Type u_4
l✝ : Line α ι
i : ι
a✝ x : α
l : Line α ι
a : Unit → α
⊢ ↑l.toSubspaceUnit a = (fun x i => (l.idxFun i).getD x) (a ())
state_after: case h
η : Type u_1
α : Type u_2
ι : Type u_3
κ : Type u_4
l✝ : Line α ι
i✝ : ι
a✝ x : α
l : Line α ι
a : Unit → α
i : ι
⊢ ↑l.toSubspaceUnit a i = (fun x i => (l.idxFun i).getD x) (a ()) i
tactic: ext i
state_before: case h
η : Type u_1
α : Type u_2
ι : Type u_3
κ : Type u_4
l✝ : Line α ι
i✝ : ι
a✝ x : α
l : Line α ι
a : Unit → α
i : ι
⊢ ↑l.toSubspaceUnit a i = (fun x i => (l.idxFun i).getD x) (a ()) i
state_after: no goals
tactic: cases h : l.idxFun i <;> simp [toSubspaceUnit, h, Subspace.coe_apply]
Theorem: Metric.ball_eq_empty
File: Mathlib/Topology/MetricSpace/Pseudo/Defs.lean

Proof steps:
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s : Set α
⊢ ball x ε = ∅ ↔ ε ≤ 0
state_after: no goals
tactic: rw [← not_nonempty_iff_eq_empty, nonempty_ball, not_lt]