ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: StarSubalgebra.iInf_toSubalgebra
File: Mathlib/Algebra/Star/Subalgebra.lean

Proof steps:
state_before: F : Type u_1
R : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring R
inst✝⁸ : StarRing R
inst✝⁷ : Semiring A
inst✝⁶ : Algebra R A
inst✝⁵ : StarRing A
inst✝⁴ : StarModule R A
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : StarModule R B
ι : Sort u_5
S : ι → StarSubalgebra R A
⊢ ↑(⨅ i, S i).toSubalgebra = ↑(⨅ i, (S i).toSubalgebra)
state_after: no goals
tactic: simp
Theorem: Mathlib.Tactic.Abel.term_smulg
File: Mathlib/Tactic/Abel.lean

Proof steps:
state_before: α : Type u_1
inst✝ : AddCommGroup α
c n : ℤ
x a : α
n' : ℤ
a' : α
h₁ : c * n = n'
h₂ : smulg c a = a'
⊢ smulg c (termg n x a) = termg n' x a'
state_after: no goals
tactic: simp [h₂.symm, h₁.symm, termg, smulg, zsmul_add, mul_zsmul]
Theorem: Measurable.dite
File: Mathlib/MeasureTheory/MeasurableSpace/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
m : MeasurableSpace α
mβ : MeasurableSpace β
inst✝ : (x : α) → Decidable (x ∈ s)
f : ↑s → β
hf : Measurable f
g : ↑sᶜ → β
hg : Measurable g
hs : MeasurableSet s
⊢ Measurable (s.restrict fun x => if hx : x ∈ s then f ⟨x, hx⟩ else g ⟨x, hx⟩)
state_after: no goals
tactic: simpa
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
m : MeasurableSpace α
mβ : MeasurableSpace β
inst✝ : (x : α) → Decidable (x ∈ s)
f : ↑s → β
hf : Measurable f
g : ↑sᶜ → β
hg : Measurable g
hs : MeasurableSet s
⊢ Measurable (sᶜ.restrict fun x => if hx : x ∈ s then f ⟨x, hx⟩ else g ⟨x, hx⟩)
state_after: no goals
tactic: simpa
Theorem: Real.Angle.two_zsmul_neg_pi_div_two
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

Proof steps:
state_before: ⊢ 2 • ↑(-π / 2) = ↑π
state_after: no goals
tactic: rw [two_zsmul, ← two_nsmul, two_nsmul_neg_pi_div_two]
Theorem: Ideal.mem_span_singleton_sup
File: Mathlib/RingTheory/Ideal/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
inst✝¹ : Semiring α
I✝ : Ideal α
a b : α
S : Type u_1
inst✝ : CommSemiring S
x y : S
I : Ideal S
⊢ x ∈ span {y} ⊔ I ↔ ∃ a, ∃ b ∈ I, a * y + b = x
state_after: α : Type u
β : Type v
inst✝¹ : Semiring α
I✝ : Ideal α
a b : α
S : Type u_1
inst✝ : CommSemiring S
x y : S
I : Ideal S
⊢ (∃ y_1 ∈ span {y}, ∃ z ∈ I, y_1 + z = x) ↔ ∃ a, ∃ b ∈ I, a * y + b = x
tactic: rw [Submodule.mem_sup]
state_before: α : Type u
β : Type v
inst✝¹ : Semiring α
I✝ : Ideal α
a b : α
S : Type u_1
inst✝ : CommSemiring S
x y : S
I : Ideal S
⊢ (∃ y_1 ∈ span {y}, ∃ z ∈ I, y_1 + z = x) ↔ ∃ a, ∃ b ∈ I, a * y + b = x
state_after: case mp
α : Type u
β : Type v
inst✝¹ : Semiring α
I✝ : Ideal α
a b : α
S : Type u_1
inst✝ : CommSemiring S
x y : S
I : Ideal S
⊢ (∃ y_1 ∈ span {y}, ∃ z ∈ I, y_1 + z = x) → ∃ a, ∃ b ∈ I, a * y + b = x

case mpr
α : Type u
β : Type v
inst✝¹ : Semiring α
I✝ : Ideal α
a b : α
S : Type u_1
inst✝ : CommSemiring S
x y : S
I : Ideal S
⊢ (∃ a, ∃ b ∈ I, a * y + b = x) → ∃ y_1 ∈ span {y}, ∃ z ∈ I, y_1 + z = x
tactic: constructor
Theorem: Set.pi_univ_Iic
File: Mathlib/Order/Interval/Set/Pi.lean

Proof steps:
state_before: ι : Type u_1
α : ι → Type u_2
inst✝ : (i : ι) → Preorder (α i)
x y✝ y : (i : ι) → α i
⊢ (y ∈ univ.pi fun i => Iic (x i)) ↔ y ∈ Iic x
state_after: no goals
tactic: simp [Pi.le_def]
Theorem: Orientation.oangle_neg_right
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Basic.lean

Proof steps:
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y : V
hx : x ≠ 0
hy : y ≠ 0
⊢ o.oangle x (-y) = o.oangle x y + ↑π
state_after: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y : V
hx : x ≠ 0
hy : y ≠ 0
⊢ ↑(-(o.kahler x) y).arg = ↑((o.kahler x) y).arg + ↑π
tactic: simp only [oangle, map_neg]
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y : V
hx : x ≠ 0
hy : y ≠ 0
⊢ ↑(-(o.kahler x) y).arg = ↑((o.kahler x) y).arg + ↑π
state_after: case convert_2
V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y : V
hx : x ≠ 0
hy : y ≠ 0
⊢ (o.kahler x) y ≠ 0
tactic: convert Complex.arg_neg_coe_angle _
state_before: case convert_2
V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y : V
hx : x ≠ 0
hy : y ≠ 0
⊢ (o.kahler x) y ≠ 0
state_after: no goals
tactic: exact o.kahler_ne_zero hx hy
Theorem: CategoryTheory.Functor.isRightDerivedFunctor_iff_isLeftKanExtension
File: Mathlib/CategoryTheory/Functor/Derived/RightDerived.lean

Proof steps:
state_before: C : Type u_1
C' : Type ?u.9461
D : Type u_2
D' : Type ?u.9467
H : Type u_5
H' : Type ?u.9473
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{?u.9481, ?u.9461} C'
inst✝⁴ : Category.{u_4, u_2} D
inst✝³ : Category.{?u.9489, ?u.9467} D'
inst✝² : Category.{u_6, u_5} H
inst✝¹ : Category.{?u.9497, ?u.9473} H'
RF RF' RF'' : D ⥤ H
F F' F'' : C ⥤ H
e : F ≅ F'
L : C ⥤ D
α : F ⟶ L ⋙ RF
α' : F' ⟶ L ⋙ RF'
α'' : F'' ⟶ L ⋙ RF''
α'₂ : F ⟶ L ⋙ RF'
W : MorphismProperty C
inst✝ : L.IsLocalization W
⊢ RF.IsRightDerivedFunctor α W ↔ RF.IsLeftKanExtension α
state_after: case mp
C : Type u_1
C' : Type ?u.9461
D : Type u_2
D' : Type ?u.9467
H : Type u_5
H' : Type ?u.9473
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{?u.9481, ?u.9461} C'
inst✝⁴ : Category.{u_4, u_2} D
inst✝³ : Category.{?u.9489, ?u.9467} D'
inst✝² : Category.{u_6, u_5} H
inst✝¹ : Category.{?u.9497, ?u.9473} H'
RF RF' RF'' : D ⥤ H
F F' F'' : C ⥤ H
e : F ≅ F'
L : C ⥤ D
α : F ⟶ L ⋙ RF
α' : F' ⟶ L ⋙ RF'
α'' : F'' ⟶ L ⋙ RF''
α'₂ : F ⟶ L ⋙ RF'
W : MorphismProperty C
inst✝ : L.IsLocalization W
⊢ RF.IsRightDerivedFunctor α W → RF.IsLeftKanExtension α

case mpr
C : Type u_1
C' : Type ?u.9461
D : Type u_2
D' : Type ?u.9467
H : Type u_5
H' : Type ?u.9473
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{?u.9481, ?u.9461} C'
inst✝⁴ : Category.{u_4, u_2} D
inst✝³ : Category.{?u.9489, ?u.9467} D'
inst✝² : Category.{u_6, u_5} H
inst✝¹ : Category.{?u.9497, ?u.9473} H'
RF RF' RF'' : D ⥤ H
F F' F'' : C ⥤ H
e : F ≅ F'
L : C ⥤ D
α : F ⟶ L ⋙ RF
α' : F' ⟶ L ⋙ RF'
α'' : F'' ⟶ L ⋙ RF''
α'₂ : F ⟶ L ⋙ RF'
W : MorphismProperty C
inst✝ : L.IsLocalization W
⊢ RF.IsLeftKanExtension α → RF.IsRightDerivedFunctor α W
tactic: constructor
Theorem: IsAddUnit.add_sub_add_left
File: Mathlib/Algebra/Group/Units.lean

Proof steps:
state_before: α : Type u
M : Type u_1
N : Type u_2
inst✝ : DivisionCommMonoid α
a✝ b✝ c d : α
h : IsUnit c
a b : α
⊢ c * a / (c * b) = a / b
state_after: no goals
tactic: rw [mul_comm c, mul_comm c, h.mul_div_mul_right]
Theorem: BoxIntegral.Box.coe_ae_eq_Icc
File: Mathlib/Analysis/BoxIntegral/Partition/Measure.lean

Proof steps:
state_before: ι : Type u_1
I : Box ι
inst✝ : Fintype ι
⊢ ↑I =ᶠ[ae volume] Box.Icc I
state_after: ι : Type u_1
I : Box ι
inst✝ : Fintype ι
⊢ (univ.pi fun i => Ioc (I.lower i) (I.upper i)) =ᶠ[ae volume] Box.Icc I
tactic: rw [coe_eq_pi]
state_before: ι : Type u_1
I : Box ι
inst✝ : Fintype ι
⊢ (univ.pi fun i => Ioc (I.lower i) (I.upper i)) =ᶠ[ae volume] Box.Icc I
state_after: no goals
tactic: exact Measure.univ_pi_Ioc_ae_eq_Icc
Theorem: Matrix.TransvectionStruct.mul_inv
File: Mathlib/LinearAlgebra/Matrix/Transvection.lean

Proof steps:
state_before: n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝⁴ : Field 𝕜
inst✝³ : DecidableEq n
inst✝² : DecidableEq p
inst✝¹ : CommRing R
i j : n
inst✝ : Fintype n
t : TransvectionStruct n R
⊢ t.toMatrix * t.inv.toMatrix = 1
state_after: case mk
n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝⁴ : Field 𝕜
inst✝³ : DecidableEq n
inst✝² : DecidableEq p
inst✝¹ : CommRing R
i j : n
inst✝ : Fintype n
i✝ j✝ : n
t_hij : i✝ ≠ j✝
c✝ : R
⊢ { i := i✝, j := j✝, hij := t_hij, c := c✝ }.toMatrix * { i := i✝, j := j✝, hij := t_hij, c := c✝ }.inv.toMatrix = 1
tactic: rcases t with ⟨_, _, t_hij⟩
state_before: case mk
n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝⁴ : Field 𝕜
inst✝³ : DecidableEq n
inst✝² : DecidableEq p
inst✝¹ : CommRing R
i j : n
inst✝ : Fintype n
i✝ j✝ : n
t_hij : i✝ ≠ j✝
c✝ : R
⊢ { i := i✝, j := j✝, hij := t_hij, c := c✝ }.toMatrix * { i := i✝, j := j✝, hij := t_hij, c := c✝ }.inv.toMatrix = 1
state_after: no goals
tactic: simp [toMatrix, transvection_mul_transvection_same, t_hij]
Theorem: Setoid.sSup_eq_eqvGen
File: Mathlib/Data/Setoid/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
S : Set (Setoid α)
⊢ sSup S = EqvGen.Setoid fun x y => ∃ r ∈ S, r.Rel x y
state_after: α : Type u_1
β : Type u_2
S : Set (Setoid α)
⊢ sSup S = sInf {s | ∀ ⦃x y : α⦄, (∃ r ∈ S, r.Rel x y) → s.Rel x y}
tactic: rw [eqvGen_eq]
state_before: α : Type u_1
β : Type u_2
S : Set (Setoid α)
⊢ sSup S = sInf {s | ∀ ⦃x y : α⦄, (∃ r ∈ S, r.Rel x y) → s.Rel x y}
state_after: α : Type u_1
β : Type u_2
S : Set (Setoid α)
⊢ upperBounds S = {s | ∀ ⦃x y : α⦄, (∃ r ∈ S, r.Rel x y) → s.Rel x y}
tactic: apply congr_arg sInf
state_before: α : Type u_1
β : Type u_2
S : Set (Setoid α)
⊢ upperBounds S = {s | ∀ ⦃x y : α⦄, (∃ r ∈ S, r.Rel x y) → s.Rel x y}
state_after: α : Type u_1
β : Type u_2
S : Set (Setoid α)
⊢ {x | ∀ ⦃a : Setoid α⦄, a ∈ S → ∀ {x_1 y : α}, a.Rel x_1 y → x.Rel x_1 y} =
    {s | ∀ ⦃x y : α⦄, ∀ x_1 ∈ S, x_1.Rel x y → s.Rel x y}
tactic: simp only [upperBounds, le_def, and_imp, exists_imp]
state_before: α : Type u_1
β : Type u_2
S : Set (Setoid α)
⊢ {x | ∀ ⦃a : Setoid α⦄, a ∈ S → ∀ {x_1 y : α}, a.Rel x_1 y → x.Rel x_1 y} =
    {s | ∀ ⦃x y : α⦄, ∀ x_1 ∈ S, x_1.Rel x y → s.Rel x y}
state_after: case h
α : Type u_1
β : Type u_2
S : Set (Setoid α)
x✝ : Setoid α
⊢ x✝ ∈ {x | ∀ ⦃a : Setoid α⦄, a ∈ S → ∀ {x_1 y : α}, a.Rel x_1 y → x.Rel x_1 y} ↔
    x✝ ∈ {s | ∀ ⦃x y : α⦄, ∀ x_1 ∈ S, x_1.Rel x y → s.Rel x y}
tactic: ext
state_before: case h
α : Type u_1
β : Type u_2
S : Set (Setoid α)
x✝ : Setoid α
⊢ x✝ ∈ {x | ∀ ⦃a : Setoid α⦄, a ∈ S → ∀ {x_1 y : α}, a.Rel x_1 y → x.Rel x_1 y} ↔
    x✝ ∈ {s | ∀ ⦃x y : α⦄, ∀ x_1 ∈ S, x_1.Rel x y → s.Rel x y}
state_after: no goals
tactic: exact ⟨fun H x y r hr => H hr, fun H r hr x y => H r hr⟩
Theorem: Matrix.map_mul
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✝² : NonAssocSemiring α
inst✝¹ : Fintype n
L : Matrix m n α
M : Matrix n o α
inst✝ : NonAssocSemiring β
f : α →+* β
⊢ (L * M).map ⇑f = L.map ⇑f * M.map ⇑f
state_after: case a
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✝² : NonAssocSemiring α
inst✝¹ : Fintype n
L : Matrix m n α
M : Matrix n o α
inst✝ : NonAssocSemiring β
f : α →+* β
i✝ : m
j✝ : o
⊢ (L * M).map (⇑f) i✝ j✝ = (L.map ⇑f * M.map ⇑f) i✝ j✝
tactic: ext
state_before: case a
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✝² : NonAssocSemiring α
inst✝¹ : Fintype n
L : Matrix m n α
M : Matrix n o α
inst✝ : NonAssocSemiring β
f : α →+* β
i✝ : m
j✝ : o
⊢ (L * M).map (⇑f) i✝ j✝ = (L.map ⇑f * M.map ⇑f) i✝ j✝
state_after: no goals
tactic: simp [mul_apply, map_sum]
Theorem: Ordnode.splitMin_eq
File: Mathlib/Data/Ordmap/Ordset.lean

Proof steps:
state_before: α : Type u_1
x✝ ls : ℕ
ll : Ordnode α
lx : α
lr : Ordnode α
x : α
r : Ordnode α
⊢ (node ls ll lx lr).splitMin' x r = ((node ls ll lx lr).findMin' x, (node x✝ (node ls ll lx lr) x r).eraseMin)
state_after: no goals
tactic: rw [splitMin', splitMin_eq ls ll lx lr, findMin', eraseMin]
Theorem: ZMod.isQuadratic_χ₄
File: Mathlib/NumberTheory/LegendreSymbol/ZModChar.lean

Proof steps:
state_before: ⊢ χ₄.IsQuadratic
state_after: ⊢ ∀ (a : ZMod 4), χ₄ a = 0 ∨ χ₄ a = 1 ∨ χ₄ a = -1
tactic: unfold MulChar.IsQuadratic
state_before: ⊢ ∀ (a : ZMod 4), χ₄ a = 0 ∨ χ₄ a = 1 ∨ χ₄ a = -1
state_after: no goals
tactic: decide
Theorem: Nat.xor_cancel_right
File: Mathlib/Data/Nat/Bitwise.lean

Proof steps:
state_before: n m : ℕ
⊢ m ^^^ n ^^^ n = m
state_after: no goals
tactic: rw [Nat.xor_assoc, xor_self, xor_zero]
Theorem: WeierstrassCurve.Affine.negY_negY
File: Mathlib/AlgebraicGeometry/EllipticCurve/Affine.lean

Proof steps:
state_before: R : Type u
inst✝ : CommRing R
W : Affine R
x y : R
⊢ W.negY x (W.negY x y) = y
state_after: R : Type u
inst✝ : CommRing R
W : Affine R
x y : R
⊢ -(-y - W.a₁ * x - W.a₃) - W.a₁ * x - W.a₃ = y
tactic: simp only [negY]
state_before: R : Type u
inst✝ : CommRing R
W : Affine R
x y : R
⊢ -(-y - W.a₁ * x - W.a₃) - W.a₁ * x - W.a₃ = y
state_after: no goals
tactic: ring1
Theorem: t0Space_iff_uniformity
File: Mathlib/Topology/UniformSpace/Separation.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
⊢ T0Space α ↔ ∀ (x y : α), (∀ r ∈ 𝓤 α, (x, y) ∈ r) → x = y
state_after: no goals
tactic: simp only [t0Space_iff_inseparable, inseparable_iff_ker_uniformity, mem_ker, id]
Theorem: IsAdjoinRootMonic.coeff_apply
File: Mathlib/RingTheory/IsAdjoinRoot.lean

Proof steps:
state_before: R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : Ring S
f : R[X]
inst✝ : Algebra R S
h : IsAdjoinRootMonic S f
z : S
i : ℕ
⊢ h.coeff z i = if hi : i < f.natDegree then (h.basis.repr z) ⟨i, hi⟩ else 0
state_after: case pos
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : Ring S
f : R[X]
inst✝ : Algebra R S
h : IsAdjoinRootMonic S f
z : S
i : ℕ
hi : i < f.natDegree
⊢ h.coeff z i = (h.basis.repr z) ⟨i, hi⟩

case neg
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : Ring S
f : R[X]
inst✝ : Algebra R S
h : IsAdjoinRootMonic S f
z : S
i : ℕ
hi : ¬i < f.natDegree
⊢ h.coeff z i = 0
tactic: split_ifs with hi
Theorem: MeasurableEmbedding.aemeasurable_comp_iff
File: Mathlib/MeasureTheory/Measure/AEMeasurable.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
R : Type u_6
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f g✝ : α → β
μ✝ ν : Measure α
g : β → γ
hg : MeasurableEmbedding g
μ : Measure α
⊢ AEMeasurable (g ∘ f) μ ↔ AEMeasurable f μ
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
R : Type u_6
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f g✝ : α → β
μ✝ ν : Measure α
g : β → γ
hg : MeasurableEmbedding g
μ : Measure α
H : AEMeasurable (g ∘ f) μ
⊢ AEMeasurable f μ
tactic: refine ⟨fun H => ?_, hg.measurable.comp_aemeasurable⟩
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
R : Type u_6
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f g✝ : α → β
μ✝ ν : Measure α
g : β → γ
hg : MeasurableEmbedding g
μ : Measure α
H : AEMeasurable (g ∘ f) μ
⊢ AEMeasurable f μ
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
R : Type u_6
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f g✝ : α → β
μ✝ ν : Measure α
g : β → γ
hg : MeasurableEmbedding g
μ : Measure α
H : AEMeasurable (g ∘ f) μ
⊢ AEMeasurable ((rangeSplitting g ∘ rangeFactorization g) ∘ f) μ
tactic: suffices AEMeasurable ((rangeSplitting g ∘ rangeFactorization g) ∘ f) μ by
    rwa [(rightInverse_rangeSplitting hg.injective).comp_eq_id] at this
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
R : Type u_6
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f g✝ : α → β
μ✝ ν : Measure α
g : β → γ
hg : MeasurableEmbedding g
μ : Measure α
H : AEMeasurable (g ∘ f) μ
⊢ AEMeasurable ((rangeSplitting g ∘ rangeFactorization g) ∘ f) μ
state_after: no goals
tactic: exact hg.measurable_rangeSplitting.comp_aemeasurable H.subtype_mk
Theorem: MeasurableEquiv.toEquiv_injective
File: Mathlib/MeasureTheory/MeasurableSpace/Embedding.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
inst✝³ : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
⊢ Injective toEquiv
state_after: case mk.mk
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
inst✝³ : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
e₁ : α ≃ β
measurable_toFun✝¹ : Measurable ⇑e₁
measurable_invFun✝¹ : Measurable ⇑e₁.symm
measurable_toFun✝ : Measurable ⇑e₁
measurable_invFun✝ : Measurable ⇑e₁.symm
⊢ { toEquiv := e₁, measurable_toFun := measurable_toFun✝¹, measurable_invFun := measurable_invFun✝¹ } =
    { toEquiv := e₁, measurable_toFun := measurable_toFun✝, measurable_invFun := measurable_invFun✝ }
tactic: rintro ⟨e₁, _, _⟩ ⟨e₂, _, _⟩ (rfl : e₁ = e₂)
state_before: case mk.mk
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
inst✝³ : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
e₁ : α ≃ β
measurable_toFun✝¹ : Measurable ⇑e₁
measurable_invFun✝¹ : Measurable ⇑e₁.symm
measurable_toFun✝ : Measurable ⇑e₁
measurable_invFun✝ : Measurable ⇑e₁.symm
⊢ { toEquiv := e₁, measurable_toFun := measurable_toFun✝¹, measurable_invFun := measurable_invFun✝¹ } =
    { toEquiv := e₁, measurable_toFun := measurable_toFun✝, measurable_invFun := measurable_invFun✝ }
state_after: no goals
tactic: rfl
Theorem: Finset.card_filter_le_iff
File: Mathlib/Data/Finset/Card.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
R : Type u_3
s✝ t u : Finset α
f : α → β
n✝ : ℕ
s : Finset α
P : α → Prop
inst✝ : DecidablePred P
n : ℕ
H : ∀ s' ≤ s.val, n < Multiset.card s' → ∃ a ∈ s', ¬P a
s' : Finset α
hs' : s' ⊆ s
h : n < s'.card
⊢ s'.val ≤ s.val
state_after: no goals
tactic: aesop
Theorem: CategoryTheory.CosimplicialObject.δ_comp_σ_of_gt'
File: Mathlib/AlgebraicTopology/SimplicialObject.lean

Proof steps:
state_before: C : Type u
inst✝ : Category.{v, u} C
X : CosimplicialObject C
n : ℕ
i : Fin (n + 3)
j : Fin (n + 2)
H : j.succ < i
hi : i = 0
⊢ False
state_after: no goals
tactic: simp only [Fin.not_lt_zero, hi] at H
state_before: C : Type u
inst✝ : Category.{v, u} C
X : CosimplicialObject C
n : ℕ
i : Fin (n + 3)
j : Fin (n + 2)
H : j.succ < i
⊢ X.δ i ≫ X.σ j = X.σ (j.castLT ⋯) ≫ X.δ (i.pred ⋯)
state_after: C : Type u
inst✝ : Category.{v, u} C
X : CosimplicialObject C
n : ℕ
i : Fin (n + 3)
j : Fin (n + 2)
H : j.succ < i
⊢ X.map (SimplexCategory.δ i) ≫ X.map (SimplexCategory.σ j) =
    X.map (SimplexCategory.σ (j.castLT ⋯)) ≫ X.map (SimplexCategory.δ (i.pred ⋯))
tactic: dsimp [δ, σ]
state_before: C : Type u
inst✝ : Category.{v, u} C
X : CosimplicialObject C
n : ℕ
i : Fin (n + 3)
j : Fin (n + 2)
H : j.succ < i
⊢ X.map (SimplexCategory.δ i) ≫ X.map (SimplexCategory.σ j) =
    X.map (SimplexCategory.σ (j.castLT ⋯)) ≫ X.map (SimplexCategory.δ (i.pred ⋯))
state_after: no goals
tactic: simp only [← X.map_comp, ← op_comp, SimplexCategory.δ_comp_σ_of_gt' H]
Theorem: Polynomial.Chebyshev.U_neg_sub_two
File: Mathlib/RingTheory/Polynomial/Chebyshev.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
n : ℤ
⊢ U R (-n - 2) = -U R n
state_after: no goals
tactic: simpa [sub_eq_add_neg, add_comm] using U_neg R (n + 2)
Theorem: MeasureTheory.Integrable.measure_le_integral
File: Mathlib/MeasureTheory/Integral/SetIntegral.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝ : MeasurableSpace X
μ : Measure X
f✝ : X → ℝ
s✝ : Set X
f : X → ℝ
f_int : Integrable f μ
f_nonneg : 0 ≤ᶠ[ae μ] f
s : Set X
hs : ∀ x ∈ s, 1 ≤ f x
⊢ μ s ≤ ENNReal.ofReal (∫ (x : X), f x ∂μ)
state_after: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝ : MeasurableSpace X
μ : Measure X
f✝ : X → ℝ
s✝ : Set X
f : X → ℝ
f_int : Integrable f μ
f_nonneg : 0 ≤ᶠ[ae μ] f
s : Set X
hs : ∀ x ∈ s, 1 ≤ f x
⊢ μ s ≤ ∫⁻ (x : X), ENNReal.ofReal (f x) ∂μ
tactic: rw [ofReal_integral_eq_lintegral_ofReal f_int f_nonneg]
state_before: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝ : MeasurableSpace X
μ : Measure X
f✝ : X → ℝ
s✝ : Set X
f : X → ℝ
f_int : Integrable f μ
f_nonneg : 0 ≤ᶠ[ae μ] f
s : Set X
hs : ∀ x ∈ s, 1 ≤ f x
⊢ μ s ≤ ∫⁻ (x : X), ENNReal.ofReal (f x) ∂μ
state_after: case hf
X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝ : MeasurableSpace X
μ : Measure X
f✝ : X → ℝ
s✝ : Set X
f : X → ℝ
f_int : Integrable f μ
f_nonneg : 0 ≤ᶠ[ae μ] f
s : Set X
hs : ∀ x ∈ s, 1 ≤ f x
⊢ AEMeasurable (fun a => ENNReal.ofReal (f a)) μ

case hs
X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝ : MeasurableSpace X
μ : Measure X
f✝ : X → ℝ
s✝ : Set X
f : X → ℝ
f_int : Integrable f μ
f_nonneg : 0 ≤ᶠ[ae μ] f
s : Set X
hs : ∀ x ∈ s, 1 ≤ f x
⊢ ∀ x ∈ s, 1 ≤ ENNReal.ofReal (f x)
tactic: apply meas_le_lintegral₀
Theorem: LinearMap.toSpanSingleton_zero
File: Mathlib/LinearAlgebra/Span.lean

Proof steps:
state_before: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
⊢ toSpanSingleton R M 0 = 0
state_after: case h
R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
⊢ (toSpanSingleton R M 0) 1 = 0 1
tactic: ext
state_before: case h
R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
⊢ (toSpanSingleton R M 0) 1 = 0 1
state_after: no goals
tactic: simp
Theorem: Associated.prime
File: Mathlib/Algebra/Associated/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CommMonoidWithZero α
p q : α
h : p ~ᵤ q
hp : Prime p
u : αˣ
hu : p * ↑u = q
x✝ : IsUnit q
v : αˣ
hv : ↑v = q
⊢ ↑(v * u⁻¹) = p
state_after: no goals
tactic: simp [hv, hu.symm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CommMonoidWithZero α
p q : α
h : p ~ᵤ q
hp : Prime p
u : αˣ
hu : p * ↑u = q
⊢ ∀ (a b : α), p * ↑u ∣ a * b → p * ↑u ∣ a ∨ p * ↑u ∣ b
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CommMonoidWithZero α
p q : α
h : p ~ᵤ q
hp : Prime p
u : αˣ
hu : p * ↑u = q
⊢ ∀ (a b : α), p ∣ a * b → p ∣ a ∨ p ∣ b
tactic: simp only [IsUnit.mul_iff, Units.isUnit, and_true, IsUnit.mul_right_dvd]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CommMonoidWithZero α
p q : α
h : p ~ᵤ q
hp : Prime p
u : αˣ
hu : p * ↑u = q
⊢ ∀ (a b : α), p ∣ a * b → p ∣ a ∨ p ∣ b
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CommMonoidWithZero α
p q : α
h : p ~ᵤ q
hp : Prime p
u : αˣ
hu : p * ↑u = q
a b : α
⊢ p ∣ a * b → p ∣ a ∨ p ∣ b
tactic: intro a b
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CommMonoidWithZero α
p q : α
h : p ~ᵤ q
hp : Prime p
u : αˣ
hu : p * ↑u = q
a b : α
⊢ p ∣ a * b → p ∣ a ∨ p ∣ b
state_after: no goals
tactic: exact hp.dvd_or_dvd