ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Rel.core_comp
File: Mathlib/Data/Rel.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Rel β γ
t : Set γ
⊢ (r • s).core t = r.core (s.core t)
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Rel β γ
t : Set γ
x : α
⊢ x ∈ (r • s).core t ↔ x ∈ r.core (s.core t)
tactic: ext x
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Rel β γ
t : Set γ
x : α
⊢ x ∈ (r • s).core t ↔ x ∈ r.core (s.core t)
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Rel β γ
t : Set γ
x : α
⊢ (∀ (y : γ) (x_1 : β), r x x_1 → s x_1 y → y ∈ t) ↔ ∀ (y : β), r x y → ∀ (y_1 : γ), s y y_1 → y_1 ∈ t
tactic: simp only [core, comp, forall_exists_index, and_imp, Set.mem_setOf_eq]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Rel β γ
t : Set γ
x : α
⊢ (∀ (y : γ) (x_1 : β), r x x_1 → s x_1 y → y ∈ t) ↔ ∀ (y : β), r x y → ∀ (y_1 : γ), s y y_1 → y_1 ∈ t
state_after: case h.mp
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Rel β γ
t : Set γ
x : α
⊢ (∀ (y : γ) (x_1 : β), r x x_1 → s x_1 y → y ∈ t) → ∀ (y : β), r x y → ∀ (y_1 : γ), s y y_1 → y_1 ∈ t

case h.mpr
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Rel β γ
t : Set γ
x : α
⊢ (∀ (y : β), r x y → ∀ (y_1 : γ), s y y_1 → y_1 ∈ t) → ∀ (y : γ) (x_1 : β), r x x_1 → s x_1 y → y ∈ t
tactic: constructor
Theorem: Matroid.eq_loopyOn_iff
File: Mathlib/Data/Matroid/Constructions.lean

Proof steps:
state_before: α : Type u_1
M : Matroid α
E B I X R J : Set α
⊢ M = loopyOn E ↔ M.E = E ∧ ∀ X ⊆ M.E, M.Indep X → X = ∅
state_after: α : Type u_1
M : Matroid α
E B I X R J : Set α
⊢ M.E = E → ((∀ I ⊆ M.E, M.Indep I ↔ I = ∅) ↔ ∀ X ⊆ M.E, M.Indep X → X = ∅)
tactic: simp only [eq_iff_indep_iff_indep_forall, loopyOn_ground, loopyOn_indep_iff, and_congr_right_iff]
state_before: α : Type u_1
M : Matroid α
E B I X R J : Set α
⊢ M.E = E → ((∀ I ⊆ M.E, M.Indep I ↔ I = ∅) ↔ ∀ X ⊆ M.E, M.Indep X → X = ∅)
state_after: α : Type u_1
M : Matroid α
B I X R J : Set α
⊢ (∀ I ⊆ M.E, M.Indep I ↔ I = ∅) ↔ ∀ X ⊆ M.E, M.Indep X → X = ∅
tactic: rintro rfl
state_before: α : Type u_1
M : Matroid α
B I X R J : Set α
⊢ (∀ I ⊆ M.E, M.Indep I ↔ I = ∅) ↔ ∀ X ⊆ M.E, M.Indep X → X = ∅
state_after: no goals
tactic: refine ⟨fun h I hI ↦ (h I hI).1, fun h I hIE ↦ ⟨h I hIE, by rintro rfl; simp⟩⟩
Theorem: CliffordAlgebra.contractLeft_ι
File: Mathlib/LinearAlgebra/CliffordAlgebra/Contraction.lean

Proof steps:
state_before: R : Type u1
inst✝² : CommRing R
M : Type u2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
d d' : Module.Dual R M
x : M
⊢ (contractLeft d) ((ι Q) x) = (algebraMap R (CliffordAlgebra Q)) (d x)
state_after: R : Type u1
inst✝² : CommRing R
M : Type u2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
d d' : Module.Dual R M
x : M
⊢ ∀ (m : M) (x fx : CliffordAlgebra Q),
    ((contractLeftAux Q d) m) ((ι Q) m * x, ((contractLeftAux Q d) m) (x, fx)) = Q m • fx
tactic: refine (foldr'_ι _ _ ?_ _ _).trans <| by
    simp_rw [contractLeftAux_apply_apply, mul_zero, sub_zero,
      Algebra.algebraMap_eq_smul_one]
state_before: R : Type u1
inst✝² : CommRing R
M : Type u2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
d d' : Module.Dual R M
x : M
⊢ ∀ (m : M) (x fx : CliffordAlgebra Q),
    ((contractLeftAux Q d) m) ((ι Q) m * x, ((contractLeftAux Q d) m) (x, fx)) = Q m • fx
state_after: no goals
tactic: exact fun m x fx ↦ contractLeftAux_contractLeftAux Q d m x fx
Theorem: List.getLast?_isSome
File: Mathlib/Data/List/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
⊢ [].getLast?.isSome = true ↔ [] ≠ []
state_after: no goals
tactic: simp
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a : α
⊢ [a].getLast?.isSome = true ↔ [a] ≠ []
state_after: no goals
tactic: simp
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a b : α
l : List α
⊢ (a :: b :: l).getLast?.isSome = true ↔ a :: b :: l ≠ []
state_after: no goals
tactic: simp [@getLast?_isSome (b :: l)]
Theorem: Subtype.coind_injective
File: Mathlib/Data/Subtype.lean

Proof steps:
state_before: α✝ : Sort u_1
β✝ : Sort u_2
γ : Sort u_3
p✝ q : α✝ → Prop
α : Sort u_4
β : Sort u_5
f : α → β
p : β → Prop
h : ∀ (a : α), p (f a)
hf : Injective f
x y : α
hxy : coind f h x = coind f h y
⊢ f x = f y
state_after: no goals
tactic: apply congr_arg Subtype.val hxy
Theorem: AlgebraicGeometry.IsAffineOpen.image_of_isOpenImmersion
File: Mathlib/AlgebraicGeometry/AffineScheme.lean

Proof steps:
state_before: X Y : Scheme
U : X.Opens
hU : IsAffineOpen U
f✝ : ↑Γ(X, U)
f : X ⟶ Y
H : IsOpenImmersion f
⊢ IsAffineOpen (f ''ᵁ U)
state_after: X Y : Scheme
U : X.Opens
hU : IsAffineOpen U
f✝ : ↑Γ(X, U)
f : X ⟶ Y
H : IsOpenImmersion f
this : IsAffine ↑U
⊢ IsAffineOpen (f ''ᵁ U)
tactic: have : IsAffine _ := hU
state_before: X Y : Scheme
U : X.Opens
hU : IsAffineOpen U
f✝ : ↑Γ(X, U)
f : X ⟶ Y
H : IsOpenImmersion f
this : IsAffine ↑U
⊢ IsAffineOpen (f ''ᵁ U)
state_after: case h.e'_2
X Y : Scheme
U : X.Opens
hU : IsAffineOpen U
f✝ : ↑Γ(X, U)
f : X ⟶ Y
H : IsOpenImmersion f
this : IsAffine ↑U
⊢ f ''ᵁ U = Scheme.Hom.opensRange (U.ι ≫ f)
tactic: convert isAffineOpen_opensRange (U.ι ≫ f)
state_before: case h.e'_2
X Y : Scheme
U : X.Opens
hU : IsAffineOpen U
f✝ : ↑Γ(X, U)
f : X ⟶ Y
H : IsOpenImmersion f
this : IsAffine ↑U
⊢ f ''ᵁ U = Scheme.Hom.opensRange (U.ι ≫ f)
state_after: case h.e'_2.h
X Y : Scheme
U : X.Opens
hU : IsAffineOpen U
f✝ : ↑Γ(X, U)
f : X ⟶ Y
H : IsOpenImmersion f
this : IsAffine ↑U
⊢ ↑(f ''ᵁ U) = ↑(Scheme.Hom.opensRange (U.ι ≫ f))
tactic: ext1
state_before: case h.e'_2.h
X Y : Scheme
U : X.Opens
hU : IsAffineOpen U
f✝ : ↑Γ(X, U)
f : X ⟶ Y
H : IsOpenImmersion f
this : IsAffine ↑U
⊢ ↑(f ''ᵁ U) = ↑(Scheme.Hom.opensRange (U.ι ≫ f))
state_after: no goals
tactic: exact Set.image_eq_range _ _
Theorem: PartialHomeomorph.extend_preimage_mem_nhdsWithin
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
inst✝¹ : TopologicalSpace H'
inst✝ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
x : M
h : x ∈ f.source
ht : t ∈ 𝓝[s] x
⊢ ↑(f.extend I).symm ⁻¹' t ∈ 𝓝[↑(f.extend I).symm ⁻¹' s ∩ range ↑I] ↑(f.extend I) x
state_after: no goals
tactic: rwa [← map_extend_symm_nhdsWithin f I h, mem_map] at ht
Theorem: WithTop.mul_def
File: Mathlib/Algebra/Order/Ring/WithTop.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : MulZeroClass α
a✝ b✝ a b : WithTop α
⊢ a * b = if a = 0 ∨ b = 0 then 0 else map₂ (fun x x_1 => x * x_1) a b
state_after: no goals
tactic: cases a <;> cases b <;> aesop
Theorem: Mon_.trivial_mul
File: Mathlib/CategoryTheory/Monoidal/Mon_.lean

Proof steps:
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
⊢ (λ_ (𝟙_ C)).hom ▷ 𝟙_ C ≫ (λ_ (𝟙_ C)).hom = (α_ (𝟙_ C) (𝟙_ C) (𝟙_ C)).hom ≫ 𝟙_ C ◁ (λ_ (𝟙_ C)).hom ≫ (λ_ (𝟙_ C)).hom
state_after: no goals
tactic: coherence
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
⊢ 𝟙_ C ◁ 𝟙 (𝟙_ C) ≫ (λ_ (𝟙_ C)).hom = (ρ_ (𝟙_ C)).hom
state_after: no goals
tactic: coherence
Theorem: IsClosed.everywherePosSubset
File: Mathlib/MeasureTheory/Measure/EverywherePos.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : TopologicalSpace α
inst✝ : MeasurableSpace α
μ ν : Measure α
s k : Set α
hs : IsClosed s
⊢ IsClosed (μ.everywherePosSubset s)
state_after: case intro.intro
α : Type u_1
inst✝¹ : TopologicalSpace α
inst✝ : MeasurableSpace α
μ ν : Measure α
s k : Set α
hs : IsClosed s
u : Set α
u_open : IsOpen u
hu : μ.everywherePosSubset s = s \ u
⊢ IsClosed (μ.everywherePosSubset s)
tactic: rcases exists_isOpen_everywherePosSubset_eq_diff μ s with ⟨u, u_open, hu⟩
state_before: case intro.intro
α : Type u_1
inst✝¹ : TopologicalSpace α
inst✝ : MeasurableSpace α
μ ν : Measure α
s k : Set α
hs : IsClosed s
u : Set α
u_open : IsOpen u
hu : μ.everywherePosSubset s = s \ u
⊢ IsClosed (μ.everywherePosSubset s)
state_after: case intro.intro
α : Type u_1
inst✝¹ : TopologicalSpace α
inst✝ : MeasurableSpace α
μ ν : Measure α
s k : Set α
hs : IsClosed s
u : Set α
u_open : IsOpen u
hu : μ.everywherePosSubset s = s \ u
⊢ IsClosed (s \ u)
tactic: rw [hu]
state_before: case intro.intro
α : Type u_1
inst✝¹ : TopologicalSpace α
inst✝ : MeasurableSpace α
μ ν : Measure α
s k : Set α
hs : IsClosed s
u : Set α
u_open : IsOpen u
hu : μ.everywherePosSubset s = s \ u
⊢ IsClosed (s \ u)
state_after: no goals
tactic: exact hs.sdiff u_open
Theorem: Set.preimage_range_inter
File: Mathlib/Data/Set/Image.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : ι → α
s✝ t : Set α
f : α → β
s : Set β
⊢ f ⁻¹' (range f ∩ s) = f ⁻¹' s
state_after: no goals
tactic: rw [inter_comm, preimage_inter_range]
Theorem: isEmpty_pprod
File: Mathlib/Logic/IsEmpty.lean

Proof steps:
state_before: α : Sort u_1
β : Sort u_2
γ : Sort u_3
⊢ IsEmpty (PProd α β) ↔ IsEmpty α ∨ IsEmpty β
state_after: no goals
tactic: simp only [← not_nonempty_iff, nonempty_pprod, not_and_or]
Theorem: Equiv.Perm.mclosure_isSwap
File: Mathlib/GroupTheory/Perm/Sign.lean

Proof steps:
state_before: α : Type u
inst✝¹ : DecidableEq α
β : Type v
inst✝ : Finite α
⊢ Submonoid.closure {σ | σ.IsSwap} = ⊤
state_after: case intro
α : Type u
inst✝¹ : DecidableEq α
β : Type v
inst✝ : Finite α
val✝ : Fintype α
⊢ Submonoid.closure {σ | σ.IsSwap} = ⊤
tactic: cases nonempty_fintype α
state_before: case intro
α : Type u
inst✝¹ : DecidableEq α
β : Type v
inst✝ : Finite α
val✝ : Fintype α
⊢ Submonoid.closure {σ | σ.IsSwap} = ⊤
state_after: case intro
α : Type u
inst✝¹ : DecidableEq α
β : Type v
inst✝ : Finite α
val✝ : Fintype α
x : Perm α
x✝ : x ∈ ⊤
⊢ x ∈ Submonoid.closure {σ | σ.IsSwap}
tactic: refine top_unique fun x _ ↦ ?_
state_before: case intro
α : Type u
inst✝¹ : DecidableEq α
β : Type v
inst✝ : Finite α
val✝ : Fintype α
x : Perm α
x✝ : x ∈ ⊤
⊢ x ∈ Submonoid.closure {σ | σ.IsSwap}
state_after: case intro.intro
α : Type u
inst✝¹ : DecidableEq α
β : Type v
inst✝ : Finite α
val✝ : Fintype α
x : Perm α
x✝ : x ∈ ⊤
h1 : (↑x.truncSwapFactors.out).prod = x
h2 : ∀ g ∈ ↑x.truncSwapFactors.out, g.IsSwap
⊢ x ∈ Submonoid.closure {σ | σ.IsSwap}
tactic: obtain ⟨h1, h2⟩ := Subtype.mem (truncSwapFactors x).out
state_before: case intro.intro
α : Type u
inst✝¹ : DecidableEq α
β : Type v
inst✝ : Finite α
val✝ : Fintype α
x : Perm α
x✝ : x ∈ ⊤
h1 : (↑x.truncSwapFactors.out).prod = x
h2 : ∀ g ∈ ↑x.truncSwapFactors.out, g.IsSwap
⊢ x ∈ Submonoid.closure {σ | σ.IsSwap}
state_after: case intro.intro
α : Type u
inst✝¹ : DecidableEq α
β : Type v
inst✝ : Finite α
val✝ : Fintype α
x : Perm α
x✝ : x ∈ ⊤
h1 : (↑x.truncSwapFactors.out).prod = x
h2 : ∀ g ∈ ↑x.truncSwapFactors.out, g.IsSwap
⊢ (↑x.truncSwapFactors.out).prod ∈ Submonoid.closure {σ | σ.IsSwap}
tactic: rw [← h1]
state_before: case intro.intro
α : Type u
inst✝¹ : DecidableEq α
β : Type v
inst✝ : Finite α
val✝ : Fintype α
x : Perm α
x✝ : x ∈ ⊤
h1 : (↑x.truncSwapFactors.out).prod = x
h2 : ∀ g ∈ ↑x.truncSwapFactors.out, g.IsSwap
⊢ (↑x.truncSwapFactors.out).prod ∈ Submonoid.closure {σ | σ.IsSwap}
state_after: no goals
tactic: exact Submonoid.list_prod_mem _ fun y hy ↦ Submonoid.subset_closure (h2 y hy)
Theorem: RatFunc.natDegree_num_mul_right_sub_natDegree_denom_mul_left_eq_intDegree
File: Mathlib/FieldTheory/RatFunc/Degree.lean

Proof steps:
state_before: K : Type u
inst✝ : Field K
x : RatFunc K
hx : x ≠ 0
s : K[X]
hs : s ≠ 0
⊢ ↑(x.num * s).natDegree - ↑(s * x.denom).natDegree = x.intDegree
state_after: K : Type u
inst✝ : Field K
x : RatFunc K
hx : x ≠ 0
s : K[X]
hs : s ≠ 0
⊢ x.num * s * x.denom = x.num * (s * x.denom)
tactic: apply natDegree_sub_eq_of_prod_eq (mul_ne_zero (num_ne_zero hx) hs)
    (mul_ne_zero hs x.denom_ne_zero) (num_ne_zero hx) x.denom_ne_zero
state_before: K : Type u
inst✝ : Field K
x : RatFunc K
hx : x ≠ 0
s : K[X]
hs : s ≠ 0
⊢ x.num * s * x.denom = x.num * (s * x.denom)
state_after: no goals
tactic: rw [mul_assoc]
Theorem: Complex.cos_pi_div_two_sub
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

Proof steps:
state_before: x : ℂ
⊢ cos (↑π / 2 - x) = sin x
state_after: no goals
tactic: rw [← cos_neg, neg_sub, cos_sub_pi_div_two]
Theorem: CategoryTheory.Limits.biproduct.fromSubtype_toSubtype
File: Mathlib/CategoryTheory/Limits/Shapes/Biproducts.lean

Proof steps:
state_before: J : Type w
K : Type u_1
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
f : J → C
inst✝¹ : HasBiproduct f
p : J → Prop
inst✝ : HasBiproduct (Subtype.restrict p f)
⊢ fromSubtype f p ≫ toSubtype f p = 𝟙 (⨁ Subtype.restrict p f)
state_after: J : Type w
K : Type u_1
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
f : J → C
inst✝¹ : HasBiproduct f
p : J → Prop
inst✝ : HasBiproduct (Subtype.restrict p f)
j : Subtype p
⊢ (fromSubtype f p ≫ toSubtype f p) ≫ π (Subtype.restrict p f) j =
    𝟙 (⨁ Subtype.restrict p f) ≫ π (Subtype.restrict p f) j
tactic: refine biproduct.hom_ext _ _ fun j => ?_
state_before: J : Type w
K : Type u_1
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
f : J → C
inst✝¹ : HasBiproduct f
p : J → Prop
inst✝ : HasBiproduct (Subtype.restrict p f)
j : Subtype p
⊢ (fromSubtype f p ≫ toSubtype f p) ≫ π (Subtype.restrict p f) j =
    𝟙 (⨁ Subtype.restrict p f) ≫ π (Subtype.restrict p f) j
state_after: no goals
tactic: rw [Category.assoc, biproduct.toSubtype_π, biproduct.fromSubtype_π_subtype, Category.id_comp]
Theorem: Filter.inter_eventuallyEq_left
File: Mathlib/Order/Filter/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
s t : Set α
l : Filter α
⊢ s ∩ t =ᶠ[l] s ↔ ∀ᶠ (x : α) in l, x ∈ s → x ∈ t
state_after: no goals
tactic: simp only [eventuallyEq_set, mem_inter_iff, and_iff_left_iff_imp]
Theorem: AddCon.vadd
File: Mathlib/GroupTheory/Congruence/Basic.lean

Proof steps:
state_before: M✝ : Type u_1
N : Type u_2
P : Type u_3
α : Type u_4
M : Type u_5
inst✝² : MulOneClass M
inst✝¹ : SMul α M
inst✝ : IsScalarTower α M M
c : Con M
a : α
w x : M
h : c w x
⊢ c (a • w) (a • x)
state_after: no goals
tactic: simpa only [smul_one_mul] using c.mul (c.refl' (a • (1 : M) : M)) h
Theorem: MeasureTheory.integral_fintype_prod_eq_pow
File: Mathlib/MeasureTheory/Integral/Pi.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
ι : Type u_3
inst✝² : Fintype ι
f : E → 𝕜
inst✝¹ : MeasureSpace E
inst✝ : SigmaFinite volume
⊢ ∫ (x : ι → E), ∏ i : ι, f (x i) = (∫ (x : E), f x) ^ card ι
state_after: no goals
tactic: rw [integral_fintype_prod_eq_prod, Finset.prod_const, card]
Theorem: t2_iff_isClosed_diagonal
File: Mathlib/Topology/Separation.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : FirstCountableTopology X
⊢ T2Space X ↔ IsClosed (diagonal X)
state_after: no goals
tactic: simp only [t2Space_iff_disjoint_nhds, ← isOpen_compl_iff, isOpen_iff_mem_nhds, Prod.forall,
    nhds_prod_eq, compl_diagonal_mem_prod, mem_compl_iff, mem_diagonal_iff, Pairwise]
Theorem: Composition.ones_embedding
File: Mathlib/Combinatorics/Enumerative/Composition.lean

Proof steps:
state_before: n : ℕ
c : Composition n
i : Fin (ones n).length
h : 0 < (ones n).blocksFun i
⊢ ((ones n).embedding i) ⟨0, h⟩ = ⟨↑i, ⋯⟩
state_after: case h
n : ℕ
c : Composition n
i : Fin (ones n).length
h : 0 < (ones n).blocksFun i
⊢ ↑(((ones n).embedding i) ⟨0, h⟩) = ↑⟨↑i, ⋯⟩
tactic: ext
state_before: case h
n : ℕ
c : Composition n
i : Fin (ones n).length
h : 0 < (ones n).blocksFun i
⊢ ↑(((ones n).embedding i) ⟨0, h⟩) = ↑⟨↑i, ⋯⟩
state_after: no goals
tactic: simpa using i.2.le
Theorem: Polynomial.smeval_mul_X_pow
File: Mathlib/Algebra/Polynomial/Smeval.lean

Proof steps:
state_before: R : Type u_1
inst✝⁶ : Semiring R
p✝ : R[X]
r : R
p q : R[X]
S : Type u_2
inst✝⁵ : NonAssocSemiring S
inst✝⁴ : Module R S
inst✝³ : IsScalarTower R S S
inst✝² : SMulCommClass R S S
inst✝¹ : Pow S ℕ
inst✝ : NatPowAssoc S
x : S
⊢ (p * X ^ 0).smeval x = p.smeval x * x ^ 0
state_after: no goals
tactic: simp only [npow_zero, mul_one]
state_before: R : Type u_1
inst✝⁶ : Semiring R
p✝ : R[X]
r : R
p q : R[X]
S : Type u_2
inst✝⁵ : NonAssocSemiring S
inst✝⁴ : Module R S
inst✝³ : IsScalarTower R S S
inst✝² : SMulCommClass R S S
inst✝¹ : Pow S ℕ
inst✝ : NatPowAssoc S
x : S
n : ℕ
⊢ (p * X ^ (n + 1)).smeval x = p.smeval x * x ^ (n + 1)
state_after: no goals
tactic: rw [npow_add, ← mul_assoc, npow_one, smeval_mul_X, smeval_mul_X_pow n, npow_add,
      ← smeval_assoc_X_pow, npow_one]
Theorem: Filter.lift'_pure
File: Mathlib/Order/Filter/Lift.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
f f₁ f₂ : Filter α
h h₁ h₂ : Set α → Set β
a : α
hh : Monotone h
⊢ (pure a).lift' h = 𝓟 (h {a})
state_after: no goals
tactic: rw [← principal_singleton, lift'_principal hh]
Theorem: MeasureTheory.eLpNorm_add_lt_top
File: Mathlib/MeasureTheory/Function/LpSeminorm/TriangleInequality.lean

Proof steps:
state_before: α : Type u_1
E : Type u_2
m : MeasurableSpace α
inst✝ : NormedAddCommGroup E
p : ℝ≥0∞
q : ℝ
μ : Measure α
f✝ g✝ f g : α → E
hf : Memℒp f p μ
hg : Memℒp g p μ
⊢ LpAddConst p * (eLpNorm f p μ + eLpNorm g p μ) < ⊤
state_after: α : Type u_1
E : Type u_2
m : MeasurableSpace α
inst✝ : NormedAddCommGroup E
p : ℝ≥0∞
q : ℝ
μ : Measure α
f✝ g✝ f g : α → E
hf : Memℒp f p μ
hg : Memℒp g p μ
⊢ eLpNorm f p μ + eLpNorm g p μ ≠ ⊤
tactic: apply ENNReal.mul_lt_top (LpAddConst_lt_top p).ne
state_before: α : Type u_1
E : Type u_2
m : MeasurableSpace α
inst✝ : NormedAddCommGroup E
p : ℝ≥0∞
q : ℝ
μ : Measure α
f✝ g✝ f g : α → E
hf : Memℒp f p μ
hg : Memℒp g p μ
⊢ eLpNorm f p μ + eLpNorm g p μ ≠ ⊤
state_after: no goals
tactic: exact (ENNReal.add_lt_top.2 ⟨hf.2, hg.2⟩).ne
Theorem: Sum.isRight_iff
File: .lake/packages/batteries/Batteries/Data/Sum/Lemmas.lean

Proof steps:
state_before: α✝ : Type u_1
β✝ : Type u_2
x : α✝ ⊕ β✝
⊢ x.isRight = true ↔ ∃ y, x = inr y
state_after: no goals
tactic: cases x <;> simp
Theorem: Set.Ioo_inter_Iio
File: Mathlib/Order/Interval/Set/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : LinearOrder α
inst✝ : LinearOrder β
f : α → β
a a₁ a₂ b b₁ b₂ c d : α
⊢ Ioo a b ∩ Iio c = Ioo a (min b c)
state_after: case h
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrder α
inst✝ : LinearOrder β
f : α → β
a a₁ a₂ b b₁ b₂ c d x✝ : α
⊢ x✝ ∈ Ioo a b ∩ Iio c ↔ x✝ ∈ Ioo a (min b c)
tactic: ext
state_before: case h
α : Type u_1
β : Type u_2
inst✝¹ : LinearOrder α
inst✝ : LinearOrder β
f : α → β
a a₁ a₂ b b₁ b₂ c d x✝ : α
⊢ x✝ ∈ Ioo a b ∩ Iio c ↔ x✝ ∈ Ioo a (min b c)
state_after: no goals
tactic: simp_rw [mem_inter_iff, mem_Ioo, mem_Iio, lt_min_iff, and_assoc]
Theorem: MeasurableEmbedding.withDensity_ofReal_comap_apply_eq_integral_abs_det_fderiv_mul
File: Mathlib/MeasureTheory/Function/Jacobian.lean

Proof steps:
state_before: E : Type u_1
F : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : μ.IsAddHaarMeasure
hs : MeasurableSet s
hf : MeasurableEmbedding f
g : E → ℝ
hg : ∀ᵐ (x : E) ∂μ, x ∈ f '' s → 0 ≤ g x
hg_int : IntegrableOn g (f '' s) μ
hf' : ∀ x ∈ s, HasFDerivWithinAt f (f' x) s x
⊢ (Measure.comap f (μ.withDensity fun x => ENNReal.ofReal (g x))) s =
    ENNReal.ofReal (∫ (x : E) in s, |(f' x).det| * g (f x) ∂μ)
state_after: E : Type u_1
F : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : μ.IsAddHaarMeasure
hs : MeasurableSet s
hf : MeasurableEmbedding f
g : E → ℝ
hg : ∀ᵐ (x : E) ∂μ, x ∈ f '' s → 0 ≤ g x
hg_int : IntegrableOn g (f '' s) μ
hf' : ∀ x ∈ s, HasFDerivWithinAt f (f' x) s x
⊢ ENNReal.ofReal (∫ (x : E) in s, |(f' x).det| • g (f x) ∂μ) =
    ENNReal.ofReal (∫ (x : E) in s, |(f' x).det| * g (f x) ∂μ)
tactic: rw [Measure.comap_apply f hf.injective (fun t ht ↦ hf.measurableSet_image' ht) _ hs,
    withDensity_apply _ (hf.measurableSet_image' hs),
    ← ofReal_integral_eq_lintegral_ofReal hg_int
      ((ae_restrict_iff' (hf.measurableSet_image' hs)).mpr hg),
    integral_image_eq_integral_abs_det_fderiv_smul μ hs hf' hf.injective.injOn]
state_before: E : Type u_1
F : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : μ.IsAddHaarMeasure
hs : MeasurableSet s
hf : MeasurableEmbedding f
g : E → ℝ
hg : ∀ᵐ (x : E) ∂μ, x ∈ f '' s → 0 ≤ g x
hg_int : IntegrableOn g (f '' s) μ
hf' : ∀ x ∈ s, HasFDerivWithinAt f (f' x) s x
⊢ ENNReal.ofReal (∫ (x : E) in s, |(f' x).det| • g (f x) ∂μ) =
    ENNReal.ofReal (∫ (x : E) in s, |(f' x).det| * g (f x) ∂μ)
state_after: no goals
tactic: simp_rw [smul_eq_mul]
Theorem: borel_eq_generateFrom_of_subbasis
File: Mathlib/MeasureTheory/Constructions/BorelSpace/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
γ₂ : Type u_4
δ : Type u_5
ι : Sort y
s✝ t✝ u✝ : Set α
s : Set (Set α)
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
hs : t = TopologicalSpace.generateFrom s
u : Set α
hu : TopologicalSpace.IsOpen u
⊢ MeasurableSet u
state_after: no goals
tactic: induction hu with
      | basic u hu => exact GenerateMeasurable.basic u hu
      | univ => exact @MeasurableSet.univ α (generateFrom s)
      | inter s₁ s₂ _ _ hs₁ hs₂ => exact @MeasurableSet.inter α (generateFrom s) _ _ hs₁ hs₂
      | sUnion f hf ih =>
        rcases isOpen_sUnion_countable f (by rwa [hs]) with ⟨v, hv, vf, vu⟩
        rw [← vu]
        exact @MeasurableSet.sUnion α (generateFrom s) _ hv fun x xv => ih _ (vf xv)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
γ₂ : Type u_4
δ : Type u_5
ι : Sort y
s✝ t✝ u✝ : Set α
s : Set (Set α)
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
hs : t = TopologicalSpace.generateFrom s
u : Set α
hu : u ∈ s
⊢ TopologicalSpace.IsOpen u
state_after: no goals
tactic: exact GenerateOpen.basic _ hu
Theorem: mulIndicator_eventuallyEq
File: Mathlib/Order/Filter/IndicatorFunction.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
M : Type u_3
E : Type u_4
inst✝ : One M
s t : Set α
f g : α → M
a : α
l : Filter α
hf : f =ᶠ[l ⊓ 𝓟 s] g
hs : s =ᶠ[l] t
x : α
hst : x ∈ s ↔ x ∈ t
hfg : x ∈ s → f x = g x
hxs : x ∈ s
⊢ s.mulIndicator f x = t.mulIndicator g x
state_after: no goals
tactic: simp only [*, hst.1 hxs, mulIndicator_of_mem]
state_before: α : Type u_1
β : Type u_2
M : Type u_3
E : Type u_4
inst✝ : One M
s t : Set α
f g : α → M
a : α
l : Filter α
hf : f =ᶠ[l ⊓ 𝓟 s] g
hs : s =ᶠ[l] t
x : α
hst : x ∈ s ↔ x ∈ t
hfg : x ∈ s → f x = g x
hxs : x ∉ s
⊢ s.mulIndicator f x = t.mulIndicator g x
state_after: no goals
tactic: simp only [mulIndicator_of_not_mem, hxs, mt hst.2 hxs, not_false_eq_true]
Theorem: Multiset.countP_cons
File: Mathlib/Data/Multiset/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type v
γ : Type u_2
p : α → Prop
inst✝ : DecidablePred p
b : α
s : Multiset α
⊢ ∀ (a : List α), countP p (b ::ₘ Quot.mk Setoid.r a) = countP p (Quot.mk Setoid.r a) + if p b then 1 else 0
state_after: no goals
tactic: simp [List.countP_cons]
Theorem: Surreal.Multiplication.P2_neg_right
File: Mathlib/SetTheory/Surreal/Multiplication.lean

Proof steps:
state_before: x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
⊢ P2 x₁ x₂ y ↔ P2 x₁ x₂ (-y)
state_after: no goals
tactic: rw [P2, P2, quot_mul_neg, quot_mul_neg, neg_inj]
Theorem: Finset.disjSups_left_comm
File: Mathlib/Data/Finset/Sups.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝⁴ : DecidableEq α
inst✝³ : DecidableEq β
inst✝² : DistribLattice α
inst✝¹ : OrderBot α
inst✝ : DecidableRel Disjoint
s t u v : Finset α
⊢ s ○ (t ○ u) = t ○ (s ○ u)
state_after: no goals
tactic: simp_rw [← disjSups_assoc, disjSups_comm s]