ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: MeasureTheory.Measure.absolutelyContinuous_sum_right
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
f : α → β
μs : ι → Measure α
i : ι
hνμ : ν ≪ μs i
⊢ ν ≪ sum μs
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t : Set α
f : α → β
μs : ι → Measure α
i : ι
hνμ : ν ≪ μs i
s : Set α
hs : MeasurableSet s
hs0 : (sum μs) s = 0
⊢ ν s = 0
tactic: refine AbsolutelyContinuous.mk fun s hs hs0 ↦ ?_
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t : Set α
f : α → β
μs : ι → Measure α
i : ι
hνμ : ν ≪ μs i
s : Set α
hs : MeasurableSet s
hs0 : (sum μs) s = 0
⊢ ν s = 0
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t : Set α
f : α → β
μs : ι → Measure α
i : ι
hνμ : ν ≪ μs i
s : Set α
hs : MeasurableSet s
hs0 : ∀ (i : ι), (μs i) s = 0
⊢ ν s = 0
tactic: simp only [sum_apply _ hs, ENNReal.tsum_eq_zero] at hs0
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t : Set α
f : α → β
μs : ι → Measure α
i : ι
hνμ : ν ≪ μs i
s : Set α
hs : MeasurableSet s
hs0 : ∀ (i : ι), (μs i) s = 0
⊢ ν s = 0
state_after: no goals
tactic: exact hνμ (hs0 i)
Theorem: discrim_le_zero_of_nonpos
File: Mathlib/Algebra/QuadraticDiscriminant.lean

Proof steps:
state_before: K : Type u_1
inst✝ : LinearOrderedField K
a b c : K
h : ∀ (x : K), a * x * x + b * x + c ≤ 0
⊢ ∀ (x : K), 0 ≤ -a * x * x + -b * x + -c
state_after: no goals
tactic: simpa only [neg_mul, ← neg_add, neg_nonneg]
Theorem: CauSeq.mul_limZero_left
File: Mathlib/Algebra/Order/CauSeq/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : Ring β
abv : β → α
inst✝ : IsAbsoluteValue abv
f g : CauSeq β abv
hg : f.LimZero
ε : α
ε0 : ε > 0
G : α
G0 : G > 0
hG : ∀ (i : ℕ), abv (↑g i) < G
i : ℕ
H : ∀ j ≥ i, abv (↑f j) < ε / G
j : ℕ
ij : j ≥ i
⊢ abv (↑(f * g) j) < ε
state_after: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : Ring β
abv : β → α
inst✝ : IsAbsoluteValue abv
f g : CauSeq β abv
hg : f.LimZero
ε : α
ε0 : ε > 0
G : α
G0 : G > 0
hG : ∀ (i : ℕ), abv (↑g i) < G
i : ℕ
H : ∀ j ≥ i, abv (↑f j) < ε / G
j : ℕ
ij : j ≥ i
this : abv (↑f j) * abv (↑g j) < ε / G * G
⊢ abv (↑(f * g) j) < ε
tactic: have := mul_lt_mul'' (H _ ij) (hG j) (abv_nonneg abv _) (abv_nonneg abv _)
state_before: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : Ring β
abv : β → α
inst✝ : IsAbsoluteValue abv
f g : CauSeq β abv
hg : f.LimZero
ε : α
ε0 : ε > 0
G : α
G0 : G > 0
hG : ∀ (i : ℕ), abv (↑g i) < G
i : ℕ
H : ∀ j ≥ i, abv (↑f j) < ε / G
j : ℕ
ij : j ≥ i
this : abv (↑f j) * abv (↑g j) < ε / G * G
⊢ abv (↑(f * g) j) < ε
state_after: no goals
tactic: rwa [div_mul_cancel₀ _ (ne_of_gt G0), ← abv_mul] at this
Theorem: Stonean.Sigma.openEmbedding_ι
File: Mathlib/Topology/Category/Stonean/Limits.lean

Proof steps:
state_before: α✝ : Type
inst✝¹ : Finite α✝
B : Stonean
X : α✝ → Stonean
α : Type
inst✝ : Finite α
Z : α → Stonean
a : α
⊢ OpenEmbedding ⇑(Sigma.ι Z a)
state_after: α✝ : Type
inst✝¹ : Finite α✝
B : Stonean
X : α✝ → Stonean
α : Type
inst✝ : Finite α
Z : α → Stonean
a : α
⊢ OpenEmbedding (⇑(CompHausLike.homeoOfIso (coproductIsoCoproduct Z).symm) ∘ ⇑(Sigma.ι Z a))
tactic: refine OpenEmbedding.of_comp _
    (CompHausLike.homeoOfIso (coproductIsoCoproduct Z).symm).openEmbedding ?_
state_before: α✝ : Type
inst✝¹ : Finite α✝
B : Stonean
X : α✝ → Stonean
α : Type
inst✝ : Finite α
Z : α → Stonean
a : α
⊢ OpenEmbedding (⇑(CompHausLike.homeoOfIso (coproductIsoCoproduct Z).symm) ∘ ⇑(Sigma.ι Z a))
state_after: case h.e'_5.h
α✝ : Type
inst✝¹ : Finite α✝
B : Stonean
X : α✝ → Stonean
α : Type
inst✝ : Finite α
Z : α → Stonean
a : α
e_2✝ : ↑(finiteCoproduct Z).toTop = (forget Stonean).obj (finiteCoproduct Z)
⊢ ⇑(CompHausLike.homeoOfIso (coproductIsoCoproduct Z).symm) ∘ ⇑(Sigma.ι Z a) = ⇑(finiteCoproduct.ι Z a)
tactic: convert finiteCoproduct.openEmbedding_ι Z a
state_before: case h.e'_5.h
α✝ : Type
inst✝¹ : Finite α✝
B : Stonean
X : α✝ → Stonean
α : Type
inst✝ : Finite α
Z : α → Stonean
a : α
e_2✝ : ↑(finiteCoproduct Z).toTop = (forget Stonean).obj (finiteCoproduct Z)
⊢ ⇑(CompHausLike.homeoOfIso (coproductIsoCoproduct Z).symm) ∘ ⇑(Sigma.ι Z a) = ⇑(finiteCoproduct.ι Z a)
state_after: case h.e'_5.h.h
α✝ : Type
inst✝¹ : Finite α✝
B : Stonean
X : α✝ → Stonean
α : Type
inst✝ : Finite α
Z : α → Stonean
a : α
e_2✝ : ↑(finiteCoproduct Z).toTop = (forget Stonean).obj (finiteCoproduct Z)
x : (forget Stonean).obj (Z a)
⊢ (⇑(CompHausLike.homeoOfIso (coproductIsoCoproduct Z).symm) ∘ ⇑(Sigma.ι Z a)) x = (finiteCoproduct.ι Z a) x
tactic: ext x
state_before: case h.e'_5.h.h
α✝ : Type
inst✝¹ : Finite α✝
B : Stonean
X : α✝ → Stonean
α : Type
inst✝ : Finite α
Z : α → Stonean
a : α
e_2✝ : ↑(finiteCoproduct Z).toTop = (forget Stonean).obj (finiteCoproduct Z)
x : (forget Stonean).obj (Z a)
⊢ (⇑(CompHausLike.homeoOfIso (coproductIsoCoproduct Z).symm) ∘ ⇑(Sigma.ι Z a)) x = (finiteCoproduct.ι Z a) x
state_after: case h.e'_5.h.h
α✝ : Type
inst✝¹ : Finite α✝
B : Stonean
X : α✝ → Stonean
α : Type
inst✝ : Finite α
Z : α → Stonean
a : α
e_2✝ : ↑(finiteCoproduct Z).toTop = (forget Stonean).obj (finiteCoproduct Z)
x : (forget Stonean).obj (Z a)
⊢ (Sigma.ι Z a ≫ (coproductIsoCoproduct Z).inv) x = (finiteCoproduct.ι Z a) x
tactic: change ((Sigma.ι Z a) ≫ (coproductIsoCoproduct Z).inv) x = _
state_before: case h.e'_5.h.h
α✝ : Type
inst✝¹ : Finite α✝
B : Stonean
X : α✝ → Stonean
α : Type
inst✝ : Finite α
Z : α → Stonean
a : α
e_2✝ : ↑(finiteCoproduct Z).toTop = (forget Stonean).obj (finiteCoproduct Z)
x : (forget Stonean).obj (Z a)
⊢ (Sigma.ι Z a ≫ (coproductIsoCoproduct Z).inv) x = (finiteCoproduct.ι Z a) x
state_after: no goals
tactic: simp [coproductIsoCoproduct]
Theorem: MeasureTheory.weightedSMul_apply
File: Mathlib/MeasureTheory/Integral/Bochner.lean

Proof steps:
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
m✝ : MeasurableSpace α
μ✝ : Measure α
m : MeasurableSpace α
μ : Measure α
s : Set α
x : F
⊢ (weightedSMul μ s) x = (μ s).toReal • x
state_after: no goals
tactic: simp [weightedSMul]
Theorem: DiscreteValuationRing.iff_pid_with_one_nonzero_prime
File: Mathlib/RingTheory/DiscreteValuationRing/Basic.lean

Proof steps:
state_before: R✝ : Type u
inst✝⁴ : CommRing R✝
inst✝³ : IsDomain R✝
inst✝² : DiscreteValuationRing R✝
R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
⊢ DiscreteValuationRing R ↔ IsPrincipalIdealRing R ∧ ∃! P, P ≠ ⊥ ∧ P.IsPrime
state_after: case mp
R✝ : Type u
inst✝⁴ : CommRing R✝
inst✝³ : IsDomain R✝
inst✝² : DiscreteValuationRing R✝
R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
⊢ DiscreteValuationRing R → IsPrincipalIdealRing R ∧ ∃! P, P ≠ ⊥ ∧ P.IsPrime

case mpr
R✝ : Type u
inst✝⁴ : CommRing R✝
inst✝³ : IsDomain R✝
inst✝² : DiscreteValuationRing R✝
R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
⊢ (IsPrincipalIdealRing R ∧ ∃! P, P ≠ ⊥ ∧ P.IsPrime) → DiscreteValuationRing R
tactic: constructor
Theorem: Polynomial.roots_X_pow_char_sub_C_pow
File: Mathlib/FieldTheory/Perfect.lean

Proof steps:
state_before: R : Type u_1
inst✝³ : CommRing R
inst✝² : IsDomain R
p n : ℕ
inst✝¹ : ExpChar R p
f : R[X]
inst✝ : PerfectRing R p
y : R
m : ℕ
⊢ ((X ^ p - C y) ^ m).roots = (m * p) • {(frobeniusEquiv R p).symm y}
state_after: R : Type u_1
inst✝³ : CommRing R
inst✝² : IsDomain R
p n : ℕ
inst✝¹ : ExpChar R p
f : R[X]
inst✝ : PerfectRing R p
y : R
m : ℕ
H : ((X ^ p ^ 1 - C y) ^ m).roots = (m * p ^ 1) • {(iterateFrobeniusEquiv R p 1).symm y}
⊢ ((X ^ p - C y) ^ m).roots = (m * p) • {(frobeniusEquiv R p).symm y}
tactic: have H := roots_X_pow_char_pow_sub_C_pow (p := p) (n := 1) (y := y) (m := m)
state_before: R : Type u_1
inst✝³ : CommRing R
inst✝² : IsDomain R
p n : ℕ
inst✝¹ : ExpChar R p
f : R[X]
inst✝ : PerfectRing R p
y : R
m : ℕ
H : ((X ^ p ^ 1 - C y) ^ m).roots = (m * p ^ 1) • {(iterateFrobeniusEquiv R p 1).symm y}
⊢ ((X ^ p - C y) ^ m).roots = (m * p) • {(frobeniusEquiv R p).symm y}
state_after: no goals
tactic: rwa [pow_one, iterateFrobeniusEquiv_one] at H
Theorem: ENNReal.tsum_geometric
File: Mathlib/Analysis/SpecificLimits/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
r : ℝ≥0∞
⊢ ∑' (n : ℕ), r ^ n = (1 - r)⁻¹
state_after: case inl
α : Type u_1
β : Type u_2
ι : Type u_3
r : ℝ≥0∞
hr : r < 1
⊢ ∑' (n : ℕ), r ^ n = (1 - r)⁻¹

case inr
α : Type u_1
β : Type u_2
ι : Type u_3
r : ℝ≥0∞
hr : 1 ≤ r
⊢ ∑' (n : ℕ), r ^ n = (1 - r)⁻¹
tactic: cases' lt_or_le r 1 with hr hr
Theorem: Basis.card_le_card_of_linearIndependent_aux
File: Mathlib/LinearAlgebra/Dimension/StrongRankCondition.lean

Proof steps:
state_before: R✝ : Type u
M : Type v
inst✝⁵ : Ring R✝
inst✝⁴ : AddCommGroup M
inst✝³ : Module R✝ M
ι : Type w
ι' : Type w'
inst✝² : StrongRankCondition R✝
R : Type u_1
inst✝¹ : Ring R
inst✝ : StrongRankCondition R
n m : ℕ
v : Fin m → Fin n → R
h : LinearIndependent R v
⊢ m ≤ n
state_after: no goals
tactic: simpa using linearIndependent_le_basis (Pi.basisFun R (Fin n)) v h
Theorem: imaginaryPart_smul
File: Mathlib/Data/Complex/Module.lean

Proof steps:
state_before: A : Type u_1
inst✝³ : AddCommGroup A
inst✝² : Module ℂ A
inst✝¹ : StarAddMonoid A
inst✝ : StarModule ℂ A
z : ℂ
a : A
⊢ ℑ (z • a) = z.re • ℑ a + z.im • ℜ a
state_after: A : Type u_1
inst✝³ : AddCommGroup A
inst✝² : Module ℂ A
inst✝¹ : StarAddMonoid A
inst✝ : StarModule ℂ A
z : ℂ
a : A
this : ℑ (z • a) = ℑ ((↑z.re + ↑z.im * I) • a)
⊢ ℑ (z • a) = z.re • ℑ a + z.im • ℜ a
tactic: have := by congrm (ℑ ($((re_add_im z).symm) • a))
state_before: A : Type u_1
inst✝³ : AddCommGroup A
inst✝² : Module ℂ A
inst✝¹ : StarAddMonoid A
inst✝ : StarModule ℂ A
z : ℂ
a : A
this : ℑ (z • a) = ℑ ((↑z.re + ↑z.im * I) • a)
⊢ ℑ (z • a) = z.re • ℑ a + z.im • ℜ a
state_after: no goals
tactic: simpa [-re_add_im, add_smul, ← smul_smul]
Theorem: MvPolynomial.optionEquivLeft_apply
File: Mathlib/Algebra/MvPolynomial/Equiv.lean

Proof steps:
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
⊢ (aeval fun o => o.elim Polynomial.X fun s => Polynomial.C (X s)).comp
      (Polynomial.aevalTower (rename Option.some) (X none)) =
    AlgHom.id R (MvPolynomial S₁ R)[X]
state_after: no goals
tactic: ext : 2 <;> simp
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
⊢ (Polynomial.aevalTower (rename Option.some) (X none)).comp
      (aeval fun o => o.elim Polynomial.X fun s => Polynomial.C (X s)) =
    AlgHom.id R (MvPolynomial (Option S₁) R)
state_after: case hf.a
R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
i : Option S₁
m✝ : Option S₁ →₀ ℕ
⊢ coeff m✝
      (((Polynomial.aevalTower (rename Option.some) (X none)).comp
          (aeval fun o => o.elim Polynomial.X fun s => Polynomial.C (X s)))
        (X i)) =
    coeff m✝ ((AlgHom.id R (MvPolynomial (Option S₁) R)) (X i))
tactic: ext i : 2
state_before: case hf.a
R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
i : Option S₁
m✝ : Option S₁ →₀ ℕ
⊢ coeff m✝
      (((Polynomial.aevalTower (rename Option.some) (X none)).comp
          (aeval fun o => o.elim Polynomial.X fun s => Polynomial.C (X s)))
        (X i)) =
    coeff m✝ ((AlgHom.id R (MvPolynomial (Option S₁) R)) (X i))
state_after: no goals
tactic: cases i <;> simp
Theorem: TopCat.Presheaf.germToPullbackStalk_stalkPullbackHom
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
f : X ⟶ Y
F : Presheaf C Y
U : Opens ↑X
x : ↥U
⊢ germToPullbackStalk C f F U x ≫ stalkPullbackHom C f F ↑x = ((pullback C f).obj F).germ x
state_after: case h
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimits C
X Y Z : TopCat
f : X ⟶ Y
F : Presheaf C Y
U : Opens ↑X
x : ↥U
V : Opens ↑Y
hV : unop (op U) ≤ (Opens.map f).obj V
⊢ ((pushforwardPullbackAdjunction C f).unit.app F).app (op V) ≫
      ((pullback C f).obj F).map (homOfLE hV).op ≫ germToPullbackStalk C f F U x ≫ stalkPullbackHom C f F ↑x =
    ((pushforwardPullbackAdjunction C f).unit.app F).app (op V) ≫
      ((pullback C f).obj F).map (homOfLE hV).op ≫ ((pullback C f).obj F).germ x
tactic: ext V hV
state_before: case h
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasColimits C
X Y Z : TopCat
f : X ⟶ Y
F : Presheaf C Y
U : Opens ↑X
x : ↥U
V : Opens ↑Y
hV : unop (op U) ≤ (Opens.map f).obj V
⊢ ((pushforwardPullbackAdjunction C f).unit.app F).app (op V) ≫
      ((pullback C f).obj F).map (homOfLE hV).op ≫ germToPullbackStalk C f F U x ≫ stalkPullbackHom C f F ↑x =
    ((pushforwardPullbackAdjunction C f).unit.app F).app (op V) ≫
      ((pullback C f).obj F).map (homOfLE hV).op ≫ ((pullback C f).obj F).germ x
state_after: no goals
tactic: simp only [pushforwardPullbackAdjunction_unit_pullback_map_germToPullbackStalk_assoc,
    germ_stalkPullbackHom, germ_res]
Theorem: prime_mul_iff
File: Mathlib/Algebra/Associated/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CancelCommMonoidWithZero α
x y : α
⊢ Prime (x * y) ↔ Prime x ∧ IsUnit y ∨ IsUnit x ∧ Prime y
state_after: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CancelCommMonoidWithZero α
x y : α
h : Prime (x * y)
⊢ Prime x ∧ IsUnit y ∨ IsUnit x ∧ Prime y

case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CancelCommMonoidWithZero α
x y : α
⊢ Prime x ∧ IsUnit y ∨ IsUnit x ∧ Prime y → Prime (x * y)
tactic: refine ⟨fun h ↦ ?_, ?_⟩
Theorem: fderivWithin.comp_derivWithin_of_eq
File: Mathlib/Analysis/Calculus/Deriv/Comp.lean

Proof steps:
state_before: 𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t✝ : Set 𝕜
L L₁ L₂ : Filter 𝕜
l : F → E
l' : F →L[𝕜] E
y : F
t : Set F
hl : DifferentiableWithinAt 𝕜 l t y
hf : DifferentiableWithinAt 𝕜 f s x
hs : MapsTo f s t
hxs : UniqueDiffWithinAt 𝕜 s x
hy : y = f x
⊢ derivWithin (l ∘ f) s x = (fderivWithin 𝕜 l t (f x)) (derivWithin f s x)
state_after: 𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t✝ : Set 𝕜
L L₁ L₂ : Filter 𝕜
l : F → E
l' : F →L[𝕜] E
y : F
t : Set F
hl : DifferentiableWithinAt 𝕜 l t (f x)
hf : DifferentiableWithinAt 𝕜 f s x
hs : MapsTo f s t
hxs : UniqueDiffWithinAt 𝕜 s x
hy : y = f x
⊢ derivWithin (l ∘ f) s x = (fderivWithin 𝕜 l t (f x)) (derivWithin f s x)
tactic: rw [hy] at hl
state_before: 𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t✝ : Set 𝕜
L L₁ L₂ : Filter 𝕜
l : F → E
l' : F →L[𝕜] E
y : F
t : Set F
hl : DifferentiableWithinAt 𝕜 l t (f x)
hf : DifferentiableWithinAt 𝕜 f s x
hs : MapsTo f s t
hxs : UniqueDiffWithinAt 𝕜 s x
hy : y = f x
⊢ derivWithin (l ∘ f) s x = (fderivWithin 𝕜 l t (f x)) (derivWithin f s x)
state_after: no goals
tactic: exact fderivWithin.comp_derivWithin x hl hf hs hxs
Theorem: IsLeast.insert
File: Mathlib/Order/Bounds/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s✝ t : Set α
a✝ b✝ : α
inst✝ : LinearOrder γ
a b : γ
s : Set γ
hs : IsLeast s b
⊢ IsLeast (insert a s) (min a b)
state_after: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s✝ t : Set α
a✝ b✝ : α
inst✝ : LinearOrder γ
a b : γ
s : Set γ
hs : IsLeast s b
⊢ IsLeast ({a} ∪ s) (min a b)
tactic: rw [insert_eq]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s✝ t : Set α
a✝ b✝ : α
inst✝ : LinearOrder γ
a b : γ
s : Set γ
hs : IsLeast s b
⊢ IsLeast ({a} ∪ s) (min a b)
state_after: no goals
tactic: exact isLeast_singleton.union hs
Theorem: Prop.forall
File: Mathlib/Logic/Lemmas.lean

Proof steps:
state_before: α : Sort u_1
p q r : Prop
inst✝¹ : Decidable p
inst✝ : Decidable q
a b c : α
f : Prop → Prop
⊢ f True ∧ f False → ∀ (p : Prop), f p
state_after: case intro
α : Sort u_1
p✝ q r : Prop
inst✝¹ : Decidable p✝
inst✝ : Decidable q
a b c : α
f : Prop → Prop
h₁ : f True
h₀ : f False
p : Prop
⊢ f p
tactic: rintro ⟨h₁, h₀⟩ p
state_before: case intro
α : Sort u_1
p✝ q r : Prop
inst✝¹ : Decidable p✝
inst✝ : Decidable q
a b c : α
f : Prop → Prop
h₁ : f True
h₀ : f False
p : Prop
⊢ f p
state_after: no goals
tactic: by_cases hp : p <;> simp only [hp] <;> assumption
Theorem: Pell.Solution₁.exists_nontrivial_of_not_isSquare
File: Mathlib/NumberTheory/Pell.lean

Proof steps:
state_before: d : ℤ
h₀ : 0 < d
hd : ¬IsSquare d
⊢ ∃ a, a ≠ 1 ∧ a ≠ -1
state_after: case intro.intro.intro
d : ℤ
h₀ : 0 < d
hd : ¬IsSquare d
x y : ℤ
prop : x ^ 2 - d * y ^ 2 = 1
hy : y ≠ 0
⊢ ∃ a, a ≠ 1 ∧ a ≠ -1
tactic: obtain ⟨x, y, prop, hy⟩ := exists_of_not_isSquare h₀ hd
state_before: case intro.intro.intro
d : ℤ
h₀ : 0 < d
hd : ¬IsSquare d
x y : ℤ
prop : x ^ 2 - d * y ^ 2 = 1
hy : y ≠ 0
⊢ ∃ a, a ≠ 1 ∧ a ≠ -1
state_after: no goals
tactic: refine ⟨mk x y prop, fun H => ?_, fun H => ?_⟩ <;> apply_fun Solution₁.y at H <;>
    simp [hy] at H
Theorem: Polynomial.X_pow_sub_one_mul_prod_cyclotomic_eq_X_pow_sub_one_of_dvd
File: Mathlib/RingTheory/Polynomial/Cyclotomic/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝ : CommRing R
d n : ℕ
h : d ∈ n.properDivisors
⊢ (X ^ d - 1) * ∏ x ∈ n.divisors \ d.divisors, cyclotomic x R = X ^ n - 1
state_after: case intro
R : Type u_1
inst✝ : CommRing R
d n : ℕ
h : d ∈ n.properDivisors
hd : d ∣ n
hdn : d < n
⊢ (X ^ d - 1) * ∏ x ∈ n.divisors \ d.divisors, cyclotomic x R = X ^ n - 1
tactic: obtain ⟨hd, hdn⟩ := Nat.mem_properDivisors.mp h
state_before: case intro
R : Type u_1
inst✝ : CommRing R
d n : ℕ
h : d ∈ n.properDivisors
hd : d ∣ n
hdn : d < n
⊢ (X ^ d - 1) * ∏ x ∈ n.divisors \ d.divisors, cyclotomic x R = X ^ n - 1
state_after: case intro
R : Type u_1
inst✝ : CommRing R
d n : ℕ
h : d ∈ n.properDivisors
hd : d ∣ n
hdn : d < n
h0n : 0 < n
⊢ (X ^ d - 1) * ∏ x ∈ n.divisors \ d.divisors, cyclotomic x R = X ^ n - 1
tactic: have h0n : 0 < n := pos_of_gt hdn
state_before: case intro
R : Type u_1
inst✝ : CommRing R
d n : ℕ
h : d ∈ n.properDivisors
hd : d ∣ n
hdn : d < n
h0n : 0 < n
⊢ (X ^ d - 1) * ∏ x ∈ n.divisors \ d.divisors, cyclotomic x R = X ^ n - 1
state_after: case intro
R : Type u_1
inst✝ : CommRing R
d n : ℕ
h : d ∈ n.properDivisors
hd : d ∣ n
hdn : d < n
h0n : 0 < n
h0d : 0 < d
⊢ (X ^ d - 1) * ∏ x ∈ n.divisors \ d.divisors, cyclotomic x R = X ^ n - 1
tactic: have h0d : 0 < d := Nat.pos_of_dvd_of_pos hd h0n
state_before: case intro
R : Type u_1
inst✝ : CommRing R
d n : ℕ
h : d ∈ n.properDivisors
hd : d ∣ n
hdn : d < n
h0n : 0 < n
h0d : 0 < d
⊢ (X ^ d - 1) * ∏ x ∈ n.divisors \ d.divisors, cyclotomic x R = X ^ n - 1
state_after: no goals
tactic: rw [← prod_cyclotomic_eq_X_pow_sub_one h0d, ← prod_cyclotomic_eq_X_pow_sub_one h0n, mul_comm,
    Finset.prod_sdiff (Nat.divisors_subset_of_dvd h0n.ne' hd)]
Theorem: WittVector.truncateFun_zsmul
File: Mathlib/RingTheory/WittVector/Truncated.lean

Proof steps:
state_before: p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝ : CommRing R
m : ℤ
x : 𝕎 R
⊢ truncateFun n (m • x) = m • truncateFun n x
state_after: no goals
tactic: witt_truncateFun_tac
Theorem: Complex.contDiff_exp
File: Mathlib/Analysis/SpecialFunctions/ExpDeriv.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝¹ : NontriviallyNormedField 𝕜
inst✝ : NormedAlgebra 𝕜 ℂ
⊢ ∀ {n : ℕ∞}, ContDiff 𝕜 n cexp
state_after: 𝕜 : Type u_1
inst✝¹ : NontriviallyNormedField 𝕜
inst✝ : NormedAlgebra 𝕜 ℂ
n : ℕ
⊢ ContDiff 𝕜 ↑n cexp
tactic: refine @(contDiff_all_iff_nat.2 fun n => ?_)
state_before: 𝕜 : Type u_1
inst✝¹ : NontriviallyNormedField 𝕜
inst✝ : NormedAlgebra 𝕜 ℂ
n : ℕ
this : ContDiff ℂ ↑n cexp
⊢ ContDiff 𝕜 ↑n cexp
state_after: no goals
tactic: exact this.restrict_scalars 𝕜
Theorem: Order.Ico_succ_right_eq_insert_of_not_isMax
File: Mathlib/Order/SuccPred/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : SuccOrder α
a b : α
h₁ : a ≤ b
h₂ : ¬IsMax b
⊢ Ico a (succ b) = insert b (Ico a b)
state_after: no goals
tactic: simp_rw [← Iio_inter_Ici, Iio_succ_eq_insert_of_not_isMax h₂, insert_inter_of_mem (mem_Ici.2 h₁)]
Theorem: MeasureTheory.eLpNorm_mono_measure
File: Mathlib/MeasureTheory/Function/LpSeminorm/Basic.lean

Proof steps:
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
hμν : ν ≤ μ
⊢ eLpNorm f p ν ≤ eLpNorm f p μ
state_after: case pos
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
hμν : ν ≤ μ
hp0 : p = 0
⊢ eLpNorm f p ν ≤ eLpNorm f p μ

case neg
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
hμν : ν ≤ μ
hp0 : ¬p = 0
⊢ eLpNorm f p ν ≤ eLpNorm f p μ
tactic: by_cases hp0 : p = 0
state_before: case neg
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
hμν : ν ≤ μ
hp0 : ¬p = 0
⊢ eLpNorm f p ν ≤ eLpNorm f p μ
state_after: case pos
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
hμν : ν ≤ μ
hp0 : ¬p = 0
hp_top : p = ⊤
⊢ eLpNorm f p ν ≤ eLpNorm f p μ

case neg
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
hμν : ν ≤ μ
hp0 : ¬p = 0
hp_top : ¬p = ⊤
⊢ eLpNorm f p ν ≤ eLpNorm f p μ
tactic: by_cases hp_top : p = ∞
state_before: case neg
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
hμν : ν ≤ μ
hp0 : ¬p = 0
hp_top : ¬p = ⊤
⊢ eLpNorm f p ν ≤ eLpNorm f p μ
state_after: case neg
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
hμν : ν ≤ μ
hp0 : ¬p = 0
hp_top : ¬p = ⊤
⊢ eLpNorm' f p.toReal ν ≤ eLpNorm' f p.toReal μ
tactic: simp_rw [eLpNorm_eq_eLpNorm' hp0 hp_top]
state_before: case neg
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
hμν : ν ≤ μ
hp0 : ¬p = 0
hp_top : ¬p = ⊤
⊢ eLpNorm' f p.toReal ν ≤ eLpNorm' f p.toReal μ
state_after: no goals
tactic: exact eLpNorm'_mono_measure f hμν ENNReal.toReal_nonneg