ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: AddMonoidHom.comp_neg
File: Mathlib/Algebra/Group/Hom/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
M : Type u_3
N : Type u_4
P : Type u_5
G : Type u_6
H : Type u_7
F : Type u_8
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : CommGroup G
inst✝ : CommGroup H
φ : G →* H
ψ : M →* G
⊢ φ.comp ψ⁻¹ = (φ.comp ψ)⁻¹
state_after: case h
α : Type u_1
β : Type u_2
M : Type u_3
N : Type u_4
P : Type u_5
G : Type u_6
H : Type u_7
F : Type u_8
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : CommGroup G
inst✝ : CommGroup H
φ : G →* H
ψ : M →* G
x✝ : M
⊢ (φ.comp ψ⁻¹) x✝ = (φ.comp ψ)⁻¹ x✝
tactic: ext
state_before: case h
α : Type u_1
β : Type u_2
M : Type u_3
N : Type u_4
P : Type u_5
G : Type u_6
H : Type u_7
F : Type u_8
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : CommGroup G
inst✝ : CommGroup H
φ : G →* H
ψ : M →* G
x✝ : M
⊢ (φ.comp ψ⁻¹) x✝ = (φ.comp ψ)⁻¹ x✝
state_after: no goals
tactic: simp only [Function.comp_apply, inv_apply, map_inv, coe_comp]
Theorem: Int.mul_dvd_mul
File: Mathlib/Data/Int/Defs.lean

Proof steps:
state_before: a b c d m n e : ℤ
he : b = a * e
f : ℤ
hf : d = c * f
⊢ b * d = a * c * (e * f)
state_after: no goals
tactic: simp [he, hf, Int.mul_assoc, Int.mul_left_comm, Nat.mul_comm]
Theorem: Monoid.PushoutI.homEquiv_apply_coe
File: Mathlib/GroupTheory/PushoutI.lean

Proof steps:
state_before: ι : Type u_1
G : ι → Type u_2
H : Type u_3
K : Type u_4
inst✝² : Monoid K
inst✝¹ : (i : ι) → Monoid (G i)
inst✝ : Monoid H
φ : (i : ι) → H →* G i
f : PushoutI φ →* K
i : ι
⊢ ((fun i => f.comp (of i), f.comp (base φ)).1 i).comp (φ i) = (fun i => f.comp (of i), f.comp (base φ)).2
state_after: no goals
tactic: rw [MonoidHom.comp_assoc, of_comp_eq_base]
state_before: ι : Type u_1
G : ι → Type u_2
H : Type u_3
K : Type u_4
inst✝² : Monoid K
inst✝¹ : (i : ι) → Monoid (G i)
inst✝ : Monoid H
φ : (i : ι) → H →* G i
x✝ : PushoutI φ →* K
⊢ ∀ (i : ι),
    ((fun f => lift (↑f).1 (↑f).2 ⋯) ((fun f => ⟨(fun i => f.comp (of i), f.comp (base φ)), ⋯⟩) x✝)).comp (of i) =
      x✝.comp (of i)
state_after: no goals
tactic: simp [DFunLike.ext_iff]
state_before: ι : Type u_1
G : ι → Type u_2
H : Type u_3
K : Type u_4
inst✝² : Monoid K
inst✝¹ : (i : ι) → Monoid (G i)
inst✝ : Monoid H
φ : (i : ι) → H →* G i
x✝ : PushoutI φ →* K
⊢ ((fun f => lift (↑f).1 (↑f).2 ⋯) ((fun f => ⟨(fun i => f.comp (of i), f.comp (base φ)), ⋯⟩) x✝)).comp (base φ) =
    x✝.comp (base φ)
state_after: no goals
tactic: simp [DFunLike.ext_iff]
state_before: ι : Type u_1
G : ι → Type u_2
H : Type u_3
K : Type u_4
inst✝² : Monoid K
inst✝¹ : (i : ι) → Monoid (G i)
inst✝ : Monoid H
φ : (i : ι) → H →* G i
x✝ : { f // ∀ (i : ι), (f.1 i).comp (φ i) = f.2 }
fst✝ : (i : ι) → G i →* K
snd✝ : H →* K
property✝ : ∀ (i : ι), ((fst✝, snd✝).1 i).comp (φ i) = (fst✝, snd✝).2
⊢ (fun f => ⟨(fun i => f.comp (of i), f.comp (base φ)), ⋯⟩)
      ((fun f => lift (↑f).1 (↑f).2 ⋯) ⟨(fst✝, snd✝), property✝⟩) =
    ⟨(fst✝, snd✝), property✝⟩
state_after: no goals
tactic: simp [DFunLike.ext_iff, Function.funext_iff]
Theorem: IsLocalization.mem_localizationLocalizationSubmodule
File: Mathlib/RingTheory/Localization/LocalizationLocalization.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
N : Submonoid S
T : Type u_4
inst✝³ : CommSemiring T
inst✝² : Algebra R T
inst✝¹ : Algebra S T
inst✝ : IsScalarTower R S T
x : R
⊢ x ∈ localizationLocalizationSubmodule M N ↔ ∃ y z, (algebraMap R S) x = ↑y * (algebraMap R S) ↑z
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
N : Submonoid S
T : Type u_4
inst✝³ : CommSemiring T
inst✝² : Algebra R T
inst✝¹ : Algebra S T
inst✝ : IsScalarTower R S T
x : R
⊢ (∃ y ∈ N, ∃ z ∈ Submonoid.map (algebraMap R S) M, y * z = (algebraMap R S) x) ↔
    ∃ y z, (algebraMap R S) x = ↑y * (algebraMap R S) ↑z
tactic: rw [localizationLocalizationSubmodule, Submonoid.mem_comap, Submonoid.mem_sup]
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
N : Submonoid S
T : Type u_4
inst✝³ : CommSemiring T
inst✝² : Algebra R T
inst✝¹ : Algebra S T
inst✝ : IsScalarTower R S T
x : R
⊢ (∃ y ∈ N, ∃ z ∈ Submonoid.map (algebraMap R S) M, y * z = (algebraMap R S) x) ↔
    ∃ y z, (algebraMap R S) x = ↑y * (algebraMap R S) ↑z
state_after: case mp
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
N : Submonoid S
T : Type u_4
inst✝³ : CommSemiring T
inst✝² : Algebra R T
inst✝¹ : Algebra S T
inst✝ : IsScalarTower R S T
x : R
⊢ (∃ y ∈ N, ∃ z ∈ Submonoid.map (algebraMap R S) M, y * z = (algebraMap R S) x) →
    ∃ y z, (algebraMap R S) x = ↑y * (algebraMap R S) ↑z

case mpr
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
N : Submonoid S
T : Type u_4
inst✝³ : CommSemiring T
inst✝² : Algebra R T
inst✝¹ : Algebra S T
inst✝ : IsScalarTower R S T
x : R
⊢ (∃ y z, (algebraMap R S) x = ↑y * (algebraMap R S) ↑z) →
    ∃ y ∈ N, ∃ z ∈ Submonoid.map (algebraMap R S) M, y * z = (algebraMap R S) x
tactic: constructor
Theorem: MeasureTheory.setLIntegral_strict_mono
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
s : Set α
hsm : MeasurableSet s
hs : μ s ≠ 0
hg : Measurable g
hfi : ∫⁻ (x : α) in s, f x ∂μ ≠ ⊤
h : ∀ᵐ (x : α) ∂μ, x ∈ s → f x < g x
⊢ μ.restrict s ≠ 0
state_after: no goals
tactic: simp [hs]
Theorem: Fin.castPred_inj
File: Mathlib/Data/Fin/Basic.lean

Proof steps:
state_before: n m : ℕ
i j : Fin (n + 1)
hi : i ≠ last n
hj : j ≠ last n
⊢ i.castPred hi = j.castPred hj ↔ i = j
state_after: no goals
tactic: simp_rw [Fin.ext_iff, le_antisymm_iff, ← le_def, castPred_le_castPred_iff]
Theorem: AddTorsor.subsingleton_iff
File: Mathlib/Algebra/AddTorsor.lean

Proof steps:
state_before: G : Type u_1
P : Type u_2
inst✝¹ : AddGroup G
inst✝ : AddTorsor G P
⊢ Subsingleton G ↔ Subsingleton P
state_after: G : Type u_1
P : Type u_2
inst✝¹ : AddGroup G
inst✝ : AddTorsor G P
inhabited_h : Inhabited P
⊢ Subsingleton G ↔ Subsingleton P
tactic: inhabit P
state_before: G : Type u_1
P : Type u_2
inst✝¹ : AddGroup G
inst✝ : AddTorsor G P
inhabited_h : Inhabited P
⊢ Subsingleton G ↔ Subsingleton P
state_after: no goals
tactic: exact (Equiv.vaddConst default).subsingleton_congr
Theorem: MeasureTheory.pdf.congr
File: Mathlib/Probability/Density.lean

Proof steps:
state_before: Ω : Type u_1
E : Type u_2
inst✝ : MeasurableSpace E
m : MeasurableSpace Ω
ℙ : Measure Ω
μ : Measure E
X Y : Ω → E
hXY : X =ᶠ[ae ℙ] Y
⊢ pdf X ℙ μ = pdf Y ℙ μ
state_after: no goals
tactic: rw [pdf_def, pdf_def, map_congr hXY]
Theorem: LinearMap.ker_id_sub_eq_of_proj
File: Mathlib/LinearAlgebra/Projection.lean

Proof steps:
state_before: R : Type u_1
inst✝⁹ : Ring R
E : Type u_2
inst✝⁸ : AddCommGroup E
inst✝⁷ : Module R E
F : Type u_3
inst✝⁶ : AddCommGroup F
inst✝⁵ : Module R F
G : Type u_4
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
p q : Submodule R E
S : Type u_5
inst✝² : Semiring S
M : Type u_6
inst✝¹ : AddCommMonoid M
inst✝ : Module S M
m : Submodule S M
f : E →ₗ[R] ↥p
hf : ∀ (x : ↥p), f ↑x = x
⊢ ker (id - p.subtype ∘ₗ f) = p
state_after: case h
R : Type u_1
inst✝⁹ : Ring R
E : Type u_2
inst✝⁸ : AddCommGroup E
inst✝⁷ : Module R E
F : Type u_3
inst✝⁶ : AddCommGroup F
inst✝⁵ : Module R F
G : Type u_4
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
p q : Submodule R E
S : Type u_5
inst✝² : Semiring S
M : Type u_6
inst✝¹ : AddCommMonoid M
inst✝ : Module S M
m : Submodule S M
f : E →ₗ[R] ↥p
hf : ∀ (x : ↥p), f ↑x = x
x : E
⊢ x ∈ ker (id - p.subtype ∘ₗ f) ↔ x ∈ p
tactic: ext x
state_before: case h
R : Type u_1
inst✝⁹ : Ring R
E : Type u_2
inst✝⁸ : AddCommGroup E
inst✝⁷ : Module R E
F : Type u_3
inst✝⁶ : AddCommGroup F
inst✝⁵ : Module R F
G : Type u_4
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
p q : Submodule R E
S : Type u_5
inst✝² : Semiring S
M : Type u_6
inst✝¹ : AddCommMonoid M
inst✝ : Module S M
m : Submodule S M
f : E →ₗ[R] ↥p
hf : ∀ (x : ↥p), f ↑x = x
x : E
⊢ x ∈ ker (id - p.subtype ∘ₗ f) ↔ x ∈ p
state_after: case h
R : Type u_1
inst✝⁹ : Ring R
E : Type u_2
inst✝⁸ : AddCommGroup E
inst✝⁷ : Module R E
F : Type u_3
inst✝⁶ : AddCommGroup F
inst✝⁵ : Module R F
G : Type u_4
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
p q : Submodule R E
S : Type u_5
inst✝² : Semiring S
M : Type u_6
inst✝¹ : AddCommMonoid M
inst✝ : Module S M
m : Submodule S M
f : E →ₗ[R] ↥p
hf : ∀ (x : ↥p), f ↑x = x
x : E
⊢ x = ↑(f x) ↔ x ∈ p
tactic: simp only [comp_apply, mem_ker, subtype_apply, sub_apply, id_apply, sub_eq_zero]
state_before: case h
R : Type u_1
inst✝⁹ : Ring R
E : Type u_2
inst✝⁸ : AddCommGroup E
inst✝⁷ : Module R E
F : Type u_3
inst✝⁶ : AddCommGroup F
inst✝⁵ : Module R F
G : Type u_4
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
p q : Submodule R E
S : Type u_5
inst✝² : Semiring S
M : Type u_6
inst✝¹ : AddCommMonoid M
inst✝ : Module S M
m : Submodule S M
f : E →ₗ[R] ↥p
hf : ∀ (x : ↥p), f ↑x = x
x : E
⊢ x = ↑(f x) ↔ x ∈ p
state_after: no goals
tactic: exact ⟨fun h => h.symm ▸ Submodule.coe_mem _, fun hx => by erw [hf ⟨x, hx⟩, Subtype.coe_mk]⟩
Theorem: Units.embedProduct_apply
File: Mathlib/Algebra/Group/Prod.lean

Proof steps:
state_before: A : Type u_1
B : Type u_2
G : Type u_3
H : Type u_4
M : Type u_5
N : Type u_6
P : Type u_7
α : Type u_8
inst✝ : Monoid α
⊢ (fun x => (↑x, op ↑x⁻¹)) 1 = 1
state_after: no goals
tactic: simp only [inv_one, eq_self_iff_true, Units.val_one, op_one, Prod.mk_eq_one, and_self_iff]
state_before: A : Type u_1
B : Type u_2
G : Type u_3
H : Type u_4
M : Type u_5
N : Type u_6
P : Type u_7
α : Type u_8
inst✝ : Monoid α
x y : αˣ
⊢ { toFun := fun x => (↑x, op ↑x⁻¹), map_one' := ⋯ }.toFun (x * y) =
    { toFun := fun x => (↑x, op ↑x⁻¹), map_one' := ⋯ }.toFun x *
      { toFun := fun x => (↑x, op ↑x⁻¹), map_one' := ⋯ }.toFun y
state_after: no goals
tactic: simp only [mul_inv_rev, op_mul, Units.val_mul, Prod.mk_mul_mk]
Theorem: TopCat.Presheaf.app_injective_of_stalkFunctor_map_injective
File: Mathlib/Topology/Sheaves/Stalks.lean

Proof steps:
state_before: C : Type u
inst✝⁶ : Category.{v, u} C
inst✝⁵ : HasColimits C
X Y Z : TopCat
inst✝⁴ : ConcreteCategory C
inst✝³ : PreservesFilteredColimits (forget C)
inst✝² : HasLimits C
inst✝¹ : PreservesLimits (forget C)
inst✝ : (forget C).ReflectsIsomorphisms
F : Sheaf C X
G : Presheaf C X
f : F.val ⟶ G
U : Opens ↑X
h : ∀ (x : ↥U), Function.Injective ⇑((stalkFunctor C ↑x).map f)
s t : (forget C).obj (F.val.obj (op U))
hst : (f.app (op U)) s = (f.app (op U)) t
x : ↥U
⊢ ((stalkFunctor C ↑x).map f) ((F.presheaf.germ x) s) = ((stalkFunctor C ↑x).map f) ((F.presheaf.germ x) t)
state_after: no goals
tactic: erw [stalkFunctor_map_germ_apply, stalkFunctor_map_germ_apply, hst]
Theorem: abs_le_one_iff_mul_self_le_one
File: Mathlib/Algebra/Order/Ring/Abs.lean

Proof steps:
state_before: α : Type u_1
inst✝ : LinearOrderedRing α
n : ℕ
a b c : α
⊢ |a| ≤ 1 ↔ a * a ≤ 1
state_after: no goals
tactic: simpa only [abs_one, one_mul] using @abs_le_iff_mul_self_le α _ a 1
Theorem: singleton_span_mem_normalizedFactors_of_mem_normalizedFactors
File: Mathlib/RingTheory/DedekindDomain/Ideal.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
K : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain R
inst✝¹ : IsPrincipalIdealRing R
inst✝ : NormalizationMonoid R
a b : R
ha : a ∈ normalizedFactors b
⊢ span {a} ∈ normalizedFactors (span {b})
state_after: case pos
R : Type u_1
A : Type u_2
K : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain R
inst✝¹ : IsPrincipalIdealRing R
inst✝ : NormalizationMonoid R
a b : R
ha : a ∈ normalizedFactors b
hb : b = 0
⊢ span {a} ∈ normalizedFactors (span {b})

case neg
R : Type u_1
A : Type u_2
K : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain R
inst✝¹ : IsPrincipalIdealRing R
inst✝ : NormalizationMonoid R
a b : R
ha : a ∈ normalizedFactors b
hb : ¬b = 0
⊢ span {a} ∈ normalizedFactors (span {b})
tactic: by_cases hb : b = 0
Theorem: SimpleGraph.nonempty_of_pos_dist
File: Mathlib/Combinatorics/SimpleGraph/Metric.lean

Proof steps:
state_before: V : Type u_1
G : SimpleGraph V
u v w : V
h : 0 < G.dist u v
⊢ Set.univ.Nonempty
state_after: V : Type u_1
G : SimpleGraph V
u v w : V
h : 0 < sInf (Set.range Walk.length)
⊢ Set.univ.Nonempty
tactic: rw [dist_eq_sInf] at h
state_before: V : Type u_1
G : SimpleGraph V
u v w : V
h : 0 < sInf (Set.range Walk.length)
⊢ Set.univ.Nonempty
state_after: no goals
tactic: simpa [Set.range_nonempty_iff_nonempty, Set.nonempty_iff_univ_nonempty] using
    Nat.nonempty_of_pos_sInf h
Theorem: IsCompact.lift'_closure_nhdsSet
File: Mathlib/Topology/Separation.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : RegularSpace X
x : X
s K : Set X
hK : IsCompact K
⊢ (𝓝ˢ K).lift' closure = 𝓝ˢ K
state_after: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : RegularSpace X
x : X
s K : Set X
hK : IsCompact K
U : Set X
hU : U ∈ 𝓝ˢ K
⊢ U ∈ (𝓝ˢ K).lift' closure
tactic: refine le_antisymm (fun U hU ↦ ?_) (le_lift'_closure _)
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : RegularSpace X
x : X
s K : Set X
hK : IsCompact K
U : Set X
hU : U ∈ 𝓝ˢ K
⊢ U ∈ (𝓝ˢ K).lift' closure
state_after: case intro.intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : RegularSpace X
x : X
s K : Set X
hK : IsCompact K
U : Set X
hU : U ∈ 𝓝ˢ K
V : Set X
hVo : IsOpen V
hKV : K ⊆ V
hVU : closure V ⊆ U
⊢ U ∈ (𝓝ˢ K).lift' closure
tactic: rcases hK.exists_isOpen_closure_subset hU with ⟨V, hVo, hKV, hVU⟩
state_before: case intro.intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : RegularSpace X
x : X
s K : Set X
hK : IsCompact K
U : Set X
hU : U ∈ 𝓝ˢ K
V : Set X
hVo : IsOpen V
hKV : K ⊆ V
hVU : closure V ⊆ U
⊢ U ∈ (𝓝ˢ K).lift' closure
state_after: no goals
tactic: exact mem_of_superset (mem_lift' <| hVo.mem_nhdsSet.2 hKV) hVU
Theorem: ENNReal.add_iSup
File: Mathlib/Topology/Instances/ENNReal.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s✝ : Set ℝ≥0∞
ι : Sort u_4
s : ι → ℝ≥0∞
inst✝ : Nonempty ι
⊢ a + iSup s = ⨆ b, a + s b
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s✝ : Set ℝ≥0∞
ι : Sort u_4
s : ι → ℝ≥0∞
inst✝ : Nonempty ι
⊢ ⨆ b, s b + a = ⨆ b, a + s b
tactic: rw [add_comm, iSup_add]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s✝ : Set ℝ≥0∞
ι : Sort u_4
s : ι → ℝ≥0∞
inst✝ : Nonempty ι
⊢ ⨆ b, s b + a = ⨆ b, a + s b
state_after: no goals
tactic: simp [add_comm]
Theorem: Polynomial.coeff_C_mul_X
File: Mathlib/Algebra/Polynomial/Coeff.lean

Proof steps:
state_before: R : Type u
S : Type v
a b : R
n✝ m : ℕ
inst✝ : Semiring R
p q r : R[X]
x : R
n : ℕ
⊢ (C x * X).coeff n = if n = 1 then x else 0
state_after: no goals
tactic: rw [← pow_one X, coeff_C_mul_X_pow]
Theorem: Pi.mulSupport_mulSingle_one
File: Mathlib/Algebra/Group/Support.lean

Proof steps:
state_before: A : Type u_1
B : Type u_2
inst✝¹ : DecidableEq A
inst✝ : One B
a : A
b : B
⊢ mulSupport (mulSingle a 1) = ∅
state_after: no goals
tactic: simp
Theorem: Matrix.PosSemidef.fromBlocks₂₂
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
𝕜 : Type u_5
inst✝⁷ : CommRing 𝕜
inst✝⁶ : PartialOrder 𝕜
inst✝⁵ : StarRing 𝕜
inst✝⁴ : StarOrderedRing 𝕜
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq n
A : Matrix m m 𝕜
B : Matrix m n 𝕜
D : Matrix n n 𝕜
hD : D.PosDef
inst✝ : Invertible D
⊢ (fromBlocks A B Bᴴ D).PosSemidef ↔ (A - B * D⁻¹ * Bᴴ).PosSemidef
state_after: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
𝕜 : Type u_5
inst✝⁷ : CommRing 𝕜
inst✝⁶ : PartialOrder 𝕜
inst✝⁵ : StarRing 𝕜
inst✝⁴ : StarOrderedRing 𝕜
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq n
A : Matrix m m 𝕜
B : Matrix m n 𝕜
D : Matrix n n 𝕜
hD : D.PosDef
inst✝ : Invertible D
⊢ (fromBlocks D Bᴴ B A).PosSemidef ↔ (A - B * D⁻¹ * Bᴴ).PosSemidef
tactic: rw [← posSemidef_submatrix_equiv (Equiv.sumComm n m), Equiv.sumComm_apply,
    fromBlocks_submatrix_sum_swap_sum_swap]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
𝕜 : Type u_5
inst✝⁷ : CommRing 𝕜
inst✝⁶ : PartialOrder 𝕜
inst✝⁵ : StarRing 𝕜
inst✝⁴ : StarOrderedRing 𝕜
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq n
A : Matrix m m 𝕜
B : Matrix m n 𝕜
D : Matrix n n 𝕜
hD : D.PosDef
inst✝ : Invertible D
⊢ (fromBlocks D Bᴴ B A).PosSemidef ↔ (A - B * D⁻¹ * Bᴴ).PosSemidef
state_after: no goals
tactic: convert PosSemidef.fromBlocks₁₁ Bᴴ A hD <;>
    simp
Theorem: Function.Embedding.sigmaSet_preimage
File: Mathlib/Logic/Embedding/Set.lean

Proof steps:
state_before: α : Type u_1
ι : Type u_2
s✝ t r✝ : Set α
s : ι → Set α
h : Pairwise (Disjoint on s)
i : ι
r : Set α
⊢ ↑(Sigma.mk i ⁻¹' (⇑(sigmaSet h) ⁻¹' r)) = r ∩ s i
state_after: no goals
tactic: simp [Set.ext_iff]
Theorem: MeasureTheory.Measure.iSup_restrict_spanningSets
File: Mathlib/MeasureTheory/Measure/Typeclasses.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
δ : Type u_3
ι : Type u_4
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
μ ν ν₁ ν₂ : Measure α
s✝ t : Set α
inst✝ : SigmaFinite μ
s : Set α
⊢ ⨆ i, (μ.restrict (spanningSets μ i)) s = μ s
state_after: α : Type u_1
β : Type u_2
δ : Type u_3
ι : Type u_4
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
μ ν ν₁ ν₂ : Measure α
s✝ t : Set α
inst✝ : SigmaFinite μ
s : Set α
⊢ ⨆ i, (μ.restrict (spanningSets μ i)) s = ⨆ i, (μ.restrict (spanningSets μ i)) (toMeasurable μ s)
tactic: rw [← measure_toMeasurable s,
    ← iSup_restrict_spanningSets_of_measurableSet (measurableSet_toMeasurable _ _)]
state_before: α : Type u_1
β : Type u_2
δ : Type u_3
ι : Type u_4
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
μ ν ν₁ ν₂ : Measure α
s✝ t : Set α
inst✝ : SigmaFinite μ
s : Set α
⊢ ⨆ i, (μ.restrict (spanningSets μ i)) s = ⨆ i, (μ.restrict (spanningSets μ i)) (toMeasurable μ s)
state_after: no goals
tactic: simp_rw [restrict_apply' (measurable_spanningSets μ _), Set.inter_comm s,
    ← restrict_apply (measurable_spanningSets μ _), ← restrict_toMeasurable_of_sFinite s,
    restrict_apply (measurable_spanningSets μ _), Set.inter_comm _ (toMeasurable μ s)]
Theorem: FreeAddGroup.negRev_length
File: Mathlib/GroupTheory/FreeGroup/Basic.lean

Proof steps:
state_before: α : Type u
L L₁ L₂ L₃ L₄ : List (α × Bool)
⊢ (invRev L₁).length = L₁.length
state_after: no goals
tactic: simp [invRev]
Theorem: CategoryTheory.Endofunctor.Coalgebra.isoMk_hom_f
File: Mathlib/CategoryTheory/Endofunctor/Algebra.lean

Proof steps:
state_before: C : Type u
inst✝ : Category.{v, u} C
F : C ⥤ C
V V₀ V₁ V₂ : Coalgebra F
f : V₀ ⟶ V₁
g : V₁ ⟶ V₂
h : V₀.V ≅ V₁.V
w : autoParam (V₀.str ≫ F.map h.hom = h.hom ≫ V₁.str) _auto✝
⊢ V₁.str ≫ F.map h.inv = h.inv ≫ V₀.str
state_after: C : Type u
inst✝ : Category.{v, u} C
F : C ⥤ C
V V₀ V₁ V₂ : Coalgebra F
f : V₀ ⟶ V₁
g : V₁ ⟶ V₂
h : V₀.V ≅ V₁.V
w : autoParam (V₀.str ≫ F.map h.hom = h.hom ≫ V₁.str) _auto✝
⊢ V₀.str ≫ F.map (h.hom ≫ h.inv) = V₀.str
tactic: rw [h.eq_inv_comp, ← Category.assoc, ← w, Category.assoc, ← F.map_comp]
state_before: C : Type u
inst✝ : Category.{v, u} C
F : C ⥤ C
V V₀ V₁ V₂ : Coalgebra F
f : V₀ ⟶ V₁
g : V₁ ⟶ V₂
h : V₀.V ≅ V₁.V
w : autoParam (V₀.str ≫ F.map h.hom = h.hom ≫ V₁.str) _auto✝
⊢ V₀.str ≫ F.map (h.hom ≫ h.inv) = V₀.str
state_after: no goals
tactic: simp only [Iso.hom_inv_id, Functor.map_id, Category.comp_id]
Theorem: LieSubalgebra.isCartanSubalgebra_iff_isUcsLimit
File: Mathlib/Algebra/Lie/CartanSubalgebra.lean

Proof steps:
state_before: R : Type u
L : Type v
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
H : LieSubalgebra R L
⊢ H.IsCartanSubalgebra ↔ H.toLieSubmodule.IsUcsLimit
state_after: case mp
R : Type u
L : Type v
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
H : LieSubalgebra R L
⊢ H.IsCartanSubalgebra → H.toLieSubmodule.IsUcsLimit

case mpr
R : Type u
L : Type v
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
H : LieSubalgebra R L
⊢ H.toLieSubmodule.IsUcsLimit → H.IsCartanSubalgebra
tactic: constructor
Theorem: nnnorm_mul_le
File: Mathlib/Analysis/Normed/Field/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝ : NonUnitalSeminormedRing α
a b : α
⊢ ‖a * b‖₊ ≤ ‖a‖₊ * ‖b‖₊
state_after: no goals
tactic: simpa only [← norm_toNNReal, ← Real.toNNReal_mul (norm_nonneg _)] using
    Real.toNNReal_mono (norm_mul_le _ _)
Theorem: CFC.eq_algebraMap_of_spectrum_subset_singleton
File: Mathlib/Analysis/CstarAlgebra/ContinuousFunctionalCalculus/Unital.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹⁰ : CommSemiring R
inst✝⁹ : StarRing R
inst✝⁸ : MetricSpace R
inst✝⁷ : TopologicalSemiring R
inst✝⁶ : ContinuousStar R
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra R A
inst✝¹ : ContinuousFunctionalCalculus R p
f g : R → R
a : A
ha✝ : autoParam (p a) _auto✝
hf : autoParam (ContinuousOn f (spectrum R a)) _auto✝
hg : autoParam (ContinuousOn g (spectrum R a)) _auto✝
inst✝ : UniqueContinuousFunctionalCalculus R A
r : R
h_spec : spectrum R a ⊆ {r}
ha : autoParam (p a) _auto✝
⊢ a = (algebraMap R A) r
state_after: no goals
tactic: simpa [cfc_id R a, cfc_const r a] using
    cfc_congr (f := id) (g := fun _ : R ↦ r) (a := a) fun x hx ↦ by simpa using h_spec hx
Theorem: AlgebraicGeometry.Scheme.toΓSpec_image_zeroLocus_eq_of_isAffine
File: Mathlib/AlgebraicGeometry/AffineScheme.lean

Proof steps:
state_before: X : Scheme
inst✝ : IsAffine X
s : Set ↑Γ(X, ⊤)
⊢ ⇑X.isoSpec.hom.val.base '' X.zeroLocus s = PrimeSpectrum.zeroLocus s
state_after: case h
X : Scheme
inst✝ : IsAffine X
s : Set ↑Γ(X, ⊤)
⊢ Function.Surjective ⇑X.isoSpec.hom.val.base
tactic: erw [← X.toΓSpec_preimage_zeroLocus_eq, Set.image_preimage_eq]
state_before: case h
X : Scheme
inst✝ : IsAffine X
s : Set ↑Γ(X, ⊤)
⊢ Function.Surjective ⇑X.isoSpec.hom.val.base
state_after: no goals
tactic: exact (bijective_of_isIso X.isoSpec.hom.val.base).surjective
Theorem: inv_pow
File: Mathlib/Algebra/Group/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : DivisionMonoid α
a✝ b c d a : α
⊢ a⁻¹ ^ 0 = (a ^ 0)⁻¹
state_after: no goals
tactic: rw [pow_zero, pow_zero, inv_one]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : DivisionMonoid α
a✝ b c d a : α
n : ℕ
⊢ a⁻¹ ^ (n + 1) = (a ^ (n + 1))⁻¹
state_after: no goals
tactic: rw [pow_succ', pow_succ, inv_pow _ n, mul_inv_rev]
Theorem: fderiv_mem_iff
File: Mathlib/Analysis/Calculus/FDeriv/Basic.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f✝ f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x✝ : E
s✝ t : Set E
L L₁ L₂ : Filter E
f : E → F
s : Set (E →L[𝕜] F)
x : E
⊢ fderiv 𝕜 f x ∈ s ↔ DifferentiableAt 𝕜 f x ∧ fderiv 𝕜 f x ∈ s ∨ ¬DifferentiableAt 𝕜 f x ∧ 0 ∈ s
state_after: no goals
tactic: by_cases hx : DifferentiableAt 𝕜 f x <;> simp [fderiv_zero_of_not_differentiableAt, *]