1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CategoryTheory.MorphismProperty.LeftFraction.Localization.Q_map_comp_Qinv
File: Mathlib/CategoryTheory/Localization/CalculusOfFractions.lean

tactic: dsimp only [Q_map, Qinv]
state_before: C : Type u_1
D : Type u_2
inst✝² : Category.{u_3, u_1} C
inst✝¹ : Category.{?u.65606, u_2} D
W : MorphismProperty C
inst✝ : W.HasLeftCalculusOfFractions
X Y Y' : C
f : X ⟶ Y'
s : Y ⟶ Y'
hs : W s
⊢ (Q W).map f ≫ Qinv s hs = homMk (mk f s hs)
state_after: C : Type u_1
D : Type u_2
inst✝² : Category.{u_3, u_1} C
inst✝¹ : Category.{?u.65606, u_2} D
W : MorphismProperty C
inst✝ : W.HasLeftCalculusOfFractions
X Y Y' : C
f : X ⟶ Y'
s : Y ⟶ Y'
hs : W s
⊢ homMk (ofHom W f) ≫ homMk (ofInv s hs) = homMk (mk f s hs)

tactic: rw [homMk_comp_homMk (ofHom W f) (ofInv s hs) (ofHom W (𝟙 _)) (by simp)]
state_before: C : Type u_1
D : Type u_2
inst✝² : Category.{u_3, u_1} C
inst✝¹ : Category.{?u.65606, u_2} D
W : MorphismProperty C
inst✝ : W.HasLeftCalculusOfFractions
X Y Y' : C
f : X ⟶ Y'
s : Y ⟶ Y'
hs : W s
⊢ homMk (ofHom W f) ≫ homMk (ofInv s hs) = homMk (mk f s hs)
state_after: C : Type u_1
D : Type u_2
inst✝² : Category.{u_3, u_1} C
inst✝¹ : Category.{?u.65606, u_2} D
W : MorphismProperty C
inst✝ : W.HasLeftCalculusOfFractions
X Y Y' : C
f : X ⟶ Y'
s : Y ⟶ Y'
hs : W s
⊢ homMk ((ofHom W f).comp₀ (ofInv s hs) (ofHom W (𝟙 (ofHom W f).Y'))) = homMk (mk f s hs)

tactic: simp
state_before: C : Type u_1
D : Type u_2
inst✝² : Category.{u_3, u_1} C
inst✝¹ : Category.{?u.65606, u_2} D
W : MorphismProperty C
inst✝ : W.HasLeftCalculusOfFractions
X Y Y' : C
f : X ⟶ Y'
s : Y ⟶ Y'
hs : W s
⊢ homMk ((ofHom W f).comp₀ (ofInv s hs) (ofHom W (𝟙 (ofHom W f).Y'))) = homMk (mk f s hs)
state_after: no goals

tactic: simp
state_before: C : Type u_1
D : Type u_2
inst✝² : Category.{u_3, u_1} C
inst✝¹ : Category.{?u.65606, u_2} D
W : MorphismProperty C
inst✝ : W.HasLeftCalculusOfFractions
X Y Y' : C
f : X ⟶ Y'
s : Y ⟶ Y'
hs : W s
⊢ (ofInv s hs).f ≫ (ofHom W (𝟙 (ofHom W f).Y')).s = (ofHom W f).s ≫ (ofHom W (𝟙 (ofHom W f).Y')).f
state_after: no goals
Theorem: Polynomial.X_pow_eq_monomial
File: Mathlib/Algebra/Polynomial/Basic.lean

tactic: induction' n with n hn
state_before: R : Type u
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p q : R[X]
n : ℕ
⊢ X ^ n = (monomial n) 1
state_after: case zero
R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
p q : R[X]
⊢ X ^ 0 = (monomial 0) 1

case succ
R : Type u
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p q : R[X]
n : ℕ
hn : X ^ n = (monomial n) 1
⊢ X ^ (n + 1) = (monomial (n + 1)) 1

tactic: rw [pow_zero, monomial_zero_one]
state_before: case zero
R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
p q : R[X]
⊢ X ^ 0 = (monomial 0) 1
state_after: no goals

tactic: rw [pow_succ, hn, X, monomial_mul_monomial, one_mul]
state_before: case succ
R : Type u
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p q : R[X]
n : ℕ
hn : X ^ n = (monomial n) 1
⊢ X ^ (n + 1) = (monomial (n + 1)) 1
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.addX_eq
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: rw [← addX_eq' hP hQ, mul_div_cancel_right₀ _ <| pow_ne_zero 2 <| mul_ne_zero hPz hQz]
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → F
hP : W.Equation P
hQ : W.Equation Q
hPz : P z ≠ 0
hQz : Q z ≠ 0
⊢ W.addX P Q =
    ((P y * Q z ^ 3 - Q y * P z ^ 3) ^ 2 + W.a₁ * (P y * Q z ^ 3 - Q y * P z ^ 3) * P z * Q z * addZ P Q -
            W.a₂ * P z ^ 2 * Q z ^ 2 * addZ P Q ^ 2 -
          P x * Q z ^ 2 * addZ P Q ^ 2 -
        Q x * P z ^ 2 * addZ P Q ^ 2) /
      (P z * Q z) ^ 2
state_after: no goals
Theorem: tendsto_Ioi_atBot
File: Mathlib/Topology/Order/DenselyOrdered.lean

tactic: rw [← comap_coe_Ioi_nhdsWithin_Ioi, tendsto_comap_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a b : α
s : Set α
l : Filter β
f✝ : α → β
f : β → ↑(Ioi a)
⊢ Tendsto f l atBot ↔ Tendsto (fun x => ↑(f x)) l (𝓝[>] a)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a b : α
s : Set α
l : Filter β
f✝ : α → β
f : β → ↑(Ioi a)
⊢ Tendsto (Subtype.val ∘ f) l (𝓝[>] a) ↔ Tendsto (fun x => ↑(f x)) l (𝓝[>] a)

tactic: rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a b : α
s : Set α
l : Filter β
f✝ : α → β
f : β → ↑(Ioi a)
⊢ Tendsto (Subtype.val ∘ f) l (𝓝[>] a) ↔ Tendsto (fun x => ↑(f x)) l (𝓝[>] a)
state_after: no goals
Theorem: hammingDist_comm
File: Mathlib/InformationTheory/Hamming.lean

tactic: simp_rw [hammingDist, ne_comm]
state_before: α : Type u_1
ι : Type u_2
β : ι → Type u_3
inst✝² : Fintype ι
inst✝¹ : (i : ι) → DecidableEq (β i)
γ : ι → Type u_4
inst✝ : (i : ι) → DecidableEq (γ i)
x y : (i : ι) → β i
⊢ hammingDist x y = hammingDist y x
state_after: no goals
Theorem: Finset.sum_centroidWeightsIndicator_eq_one_of_nonempty
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

tactic: rw [sum_centroidWeightsIndicator]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝⁵ : DivisionRing k
inst✝⁴ : AddCommGroup V
inst✝³ : Module k V
inst✝² : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
inst✝¹ : CharZero k
inst✝ : Fintype ι
h : s.Nonempty
⊢ ∑ i : ι, centroidWeightsIndicator k s i = 1
state_after: k : Type u_1
V : Type u_2
P : Type u_3
inst✝⁵ : DivisionRing k
inst✝⁴ : AddCommGroup V
inst✝³ : Module k V
inst✝² : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
inst✝¹ : CharZero k
inst✝ : Fintype ι
h : s.Nonempty
⊢ ∑ i ∈ s, centroidWeights k s i = 1

tactic: exact s.sum_centroidWeights_eq_one_of_nonempty k h
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝⁵ : DivisionRing k
inst✝⁴ : AddCommGroup V
inst✝³ : Module k V
inst✝² : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
inst✝¹ : CharZero k
inst✝ : Fintype ι
h : s.Nonempty
⊢ ∑ i ∈ s, centroidWeights k s i = 1
state_after: no goals
Theorem: HasDerivAt.inv
File: Mathlib/Analysis/Calculus/Deriv/Inv.lean

tactic: rw [← hasDerivWithinAt_univ] at *
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 : Filter 𝕜
c : 𝕜 → 𝕜
h : E → 𝕜
c' : 𝕜
z : E
S : Set E
hc : HasDerivAt c c' x
hx : c x ≠ 0
⊢ HasDerivAt (fun y => (c y)⁻¹) (-c' / c x ^ 2) 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 : Filter 𝕜
c : 𝕜 → 𝕜
h : E → 𝕜
c' : 𝕜
z : E
S : Set E
hc : HasDerivWithinAt c c' univ x
hx : c x ≠ 0
⊢ HasDerivWithinAt (fun y => (c y)⁻¹) (-c' / c x ^ 2) univ x

tactic: exact hc.inv hx
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 : Filter 𝕜
c : 𝕜 → 𝕜
h : E → 𝕜
c' : 𝕜
z : E
S : Set E
hc : HasDerivWithinAt c c' univ x
hx : c x ≠ 0
⊢ HasDerivWithinAt (fun y => (c y)⁻¹) (-c' / c x ^ 2) univ x
state_after: no goals
Theorem: ProbabilityTheory.isProbabilityMeasureGamma
File: Mathlib/Probability/Distributions/Gamma.lean

tactic: simp [gammaMeasure, lintegral_gammaPDF_eq_one ha hr]
state_before: a r : ℝ
ha : 0 < a
hr : 0 < r
⊢ (gammaMeasure a r) univ = 1
state_after: no goals
Theorem: Set.Ico_disjoint_Ico
File: Mathlib/Order/Interval/Set/Disjoint.lean

tactic: simp_rw [Set.disjoint_iff_inter_eq_empty, Ico_inter_Ico, Ico_eq_empty_iff, inf_eq_min, sup_eq_max,
  not_lt]
state_before: ι : Sort u
α : Type v
β : Type w
inst✝ : LinearOrder α
a₁ a₂ b₁ b₂ : α
⊢ Disjoint (Ico a₁ a₂) (Ico b₁ b₂) ↔ min a₂ b₂ ≤ max a₁ b₁
state_after: no goals
Theorem: Set.sep_sups_le
File: Mathlib/Data/Set/Sups.lean

tactic: ext
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : SemilatticeSup α
inst✝² : SemilatticeSup β
inst✝¹ : FunLike F α β
inst✝ : SupHomClass F α β
s✝ s₁ s₂ t✝ t₁ t₂ u v : Set α
a✝ b c : α
s t : Set α
a : α
⊢ {b | b ∈ s ⊻ t ∧ b ≤ a} = {b | b ∈ s ∧ b ≤ a} ⊻ {b | b ∈ t ∧ b ≤ a}
state_after: case h
F : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : SemilatticeSup α
inst✝² : SemilatticeSup β
inst✝¹ : FunLike F α β
inst✝ : SupHomClass F α β
s✝ s₁ s₂ t✝ t₁ t₂ u v : Set α
a✝ b c : α
s t : Set α
a x✝ : α
⊢ x✝ ∈ {b | b ∈ s ⊻ t ∧ b ≤ a} ↔ x✝ ∈ {b | b ∈ s ∧ b ≤ a} ⊻ {b | b ∈ t ∧ b ≤ a}

tactic: aesop
state_before: case h
F : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : SemilatticeSup α
inst✝² : SemilatticeSup β
inst✝¹ : FunLike F α β
inst✝ : SupHomClass F α β
s✝ s₁ s₂ t✝ t₁ t₂ u v : Set α
a✝ b c : α
s t : Set α
a x✝ : α
⊢ x✝ ∈ {b | b ∈ s ⊻ t ∧ b ≤ a} ↔ x✝ ∈ {b | b ∈ s ∧ b ≤ a} ⊻ {b | b ∈ t ∧ b ≤ a}
state_after: no goals
Theorem: SimpleGraph.maxDegree_lt_card_verts
File: Mathlib/Combinatorics/SimpleGraph/Finite.lean

tactic: cases' G.exists_maximal_degree_vertex with v hv
state_before: V : Type u_1
G : SimpleGraph V
e : Sym2 V
inst✝² : Fintype V
inst✝¹ : DecidableRel G.Adj
inst✝ : Nonempty V
⊢ G.maxDegree < Fintype.card V
state_after: case intro
V : Type u_1
G : SimpleGraph V
e : Sym2 V
inst✝² : Fintype V
inst✝¹ : DecidableRel G.Adj
inst✝ : Nonempty V
v : V
hv : G.maxDegree = G.degree v
⊢ G.maxDegree < Fintype.card V

tactic: rw [hv]
state_before: case intro
V : Type u_1
G : SimpleGraph V
e : Sym2 V
inst✝² : Fintype V
inst✝¹ : DecidableRel G.Adj
inst✝ : Nonempty V
v : V
hv : G.maxDegree = G.degree v
⊢ G.maxDegree < Fintype.card V
state_after: case intro
V : Type u_1
G : SimpleGraph V
e : Sym2 V
inst✝² : Fintype V
inst✝¹ : DecidableRel G.Adj
inst✝ : Nonempty V
v : V
hv : G.maxDegree = G.degree v
⊢ G.degree v < Fintype.card V

tactic: apply G.degree_lt_card_verts v
state_before: case intro
V : Type u_1
G : SimpleGraph V
e : Sym2 V
inst✝² : Fintype V
inst✝¹ : DecidableRel G.Adj
inst✝ : Nonempty V
v : V
hv : G.maxDegree = G.degree v
⊢ G.degree v < Fintype.card V
state_after: no goals
Theorem: CategoryTheory.PreGaloisCategory.epi_of_nonempty_of_isConnected
File: Mathlib/CategoryTheory/Galois/Basic.lean

tactic: apply evaluation_injective_of_isConnected F A Z (F.map f (Classical.arbitrary _))
state_before: C : Type u₁
inst✝³ : Category.{u₂, u₁} C
inst✝² : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝¹ : FiberFunctor F
X A : C
inst✝ : IsConnected A
h : Nonempty ↑(F.obj X)
f : X ⟶ A
Z : C
u v : A ⟶ Z
huv : f ≫ u = f ≫ v
⊢ u = v
state_after: case a
C : Type u₁
inst✝³ : Category.{u₂, u₁} C
inst✝² : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝¹ : FiberFunctor F
X A : C
inst✝ : IsConnected A
h : Nonempty ↑(F.obj X)
f : X ⟶ A
Z : C
u v : A ⟶ Z
huv : f ≫ u = f ≫ v
⊢ (fun f_1 => F.map f_1 (F.map f (Classical.arbitrary ↑(F.obj X)))) u =
    (fun f_1 => F.map f_1 (F.map f (Classical.arbitrary ↑(F.obj X)))) v

tactic: simpa using congr_fun (F.congr_map huv) _
state_before: case a
C : Type u₁
inst✝³ : Category.{u₂, u₁} C
inst✝² : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝¹ : FiberFunctor F
X A : C
inst✝ : IsConnected A
h : Nonempty ↑(F.obj X)
f : X ⟶ A
Z : C
u v : A ⟶ Z
huv : f ≫ u = f ≫ v
⊢ (fun f_1 => F.map f_1 (F.map f (Classical.arbitrary ↑(F.obj X)))) u =
    (fun f_1 => F.map f_1 (F.map f (Classical.arbitrary ↑(F.obj X)))) v
state_after: no goals
Theorem: isModularLattice_iff_inf_sup_inf_assoc
File: Mathlib/Order/ModularLattice.lean

tactic: rw [← inf_eq_left.2 xz, h]
state_before: α : Type u_1
inst✝ : Lattice α
h : ∀ (x y z : α), x ⊓ z ⊔ y ⊓ z = (x ⊓ z ⊔ y) ⊓ z
x✝ y z : α
xz : x✝ ≤ z
⊢ (x✝ ⊔ y) ⊓ z ≤ x✝ ⊔ y ⊓ z
state_after: no goals
Theorem: Nat.pos_of_floor_pos
File: Mathlib/Algebra/Order/Floor.lean

tactic: rwa [floor_of_nonpos ha] at h
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedSemiring α
inst✝ : FloorSemiring α
a : α
n : ℕ
h : 0 < ⌊a⌋₊
ha : a ≤ 0
⊢ 0 < 0
state_after: no goals
Theorem: ONote.oadd_lt_oadd_3
File: Mathlib/SetTheory/Ordinal/Notation.lean

tactic: rw [lt_def]
state_before: e : ONote
n : ℕ+
a₁ a₂ : ONote
h : a₁ < a₂
⊢ e.oadd n a₁ < e.oadd n a₂
state_after: e : ONote
n : ℕ+
a₁ a₂ : ONote
h : a₁ < a₂
⊢ (e.oadd n a₁).repr < (e.oadd n a₂).repr

tactic: unfold repr
state_before: e : ONote
n : ℕ+
a₁ a₂ : ONote
h : a₁ < a₂
⊢ (e.oadd n a₁).repr < (e.oadd n a₂).repr
state_after: e : ONote
n : ℕ+
a₁ a₂ : ONote
h : a₁ < a₂
⊢ ω ^ e.repr * ↑↑n + a₁.repr < ω ^ e.repr * ↑↑n + a₂.repr

tactic: exact @add_lt_add_left _ _ _ _ (repr a₁) _ h _
state_before: e : ONote
n : ℕ+
a₁ a₂ : ONote
h : a₁ < a₂
⊢ ω ^ e.repr * ↑↑n + a₁.repr < ω ^ e.repr * ↑↑n + a₂.repr
state_after: no goals
Theorem: Tree.numLeaves_eq_numNodes_succ
File: Mathlib/Data/Tree/Basic.lean

tactic: induction x <;> simp [*, Nat.add_comm, Nat.add_assoc, Nat.add_left_comm]
state_before: α : Type u
x : Tree α
⊢ x.numLeaves = x.numNodes + 1
state_after: no goals
Theorem: Matrix.mul_invOf_self_assoc
File: Mathlib/Data/Matrix/Invertible.lean

tactic: rw [← Matrix.mul_assoc, mul_invOf_self, Matrix.one_mul]
state_before: m : Type u_1
n : Type u_2
α : Type u_3
inst✝³ : Fintype n
inst✝² : DecidableEq n
inst✝¹ : Semiring α
A : Matrix n n α
B : Matrix n m α
inst✝ : Invertible A
⊢ A * (⅟A * B) = B
state_after: no goals
Theorem: AddChar.mulShift_zero
File: Mathlib/Algebra/Group/AddChar.lean

tactic: ext
state_before: R : Type u_1
M : Type u_2
inst✝¹ : Ring R
inst✝ : CommMonoid M
ψ : AddChar R M
⊢ ψ.mulShift 0 = 1
state_after: case h
R : Type u_1
M : Type u_2
inst✝¹ : Ring R
inst✝ : CommMonoid M
ψ : AddChar R M
x✝ : R
⊢ (ψ.mulShift 0) x✝ = 1 x✝

tactic: rw [mulShift_apply, zero_mul, map_zero_eq_one, one_apply]
state_before: case h
R : Type u_1
M : Type u_2
inst✝¹ : Ring R
inst✝ : CommMonoid M
ψ : AddChar R M
x✝ : R
⊢ (ψ.mulShift 0) x✝ = 1 x✝
state_after: no goals
Theorem: Finset.card_mul_mul_le_card_div_mul_card_mul
File: Mathlib/Combinatorics/Additive/PluenneckeRuzsa.lean

tactic: rw [← div_inv_eq_mul, ← div_inv_eq_mul B]
state_before: α : Type u_1
inst✝¹ : CommGroup α
inst✝ : DecidableEq α
A✝ B✝ C✝ A B C : Finset α
⊢ (A * C).card * B.card ≤ (A / B).card * (B * C).card
state_after: α : Type u_1
inst✝¹ : CommGroup α
inst✝ : DecidableEq α
A✝ B✝ C✝ A B C : Finset α
⊢ (A / C⁻¹).card * B.card ≤ (A / B).card * (B / C⁻¹).card

tactic: exact card_div_mul_le_card_div_mul_card_div _ _ _
state_before: α : Type u_1
inst✝¹ : CommGroup α
inst✝ : DecidableEq α
A✝ B✝ C✝ A B C : Finset α
⊢ (A / C⁻¹).card * B.card ≤ (A / B).card * (B / C⁻¹).card
state_after: no goals
Theorem: MulAction.smul_inv_mem_fixedBy_iff_mem_fixedBy
File: Mathlib/GroupTheory/GroupAction/FixedPoints.lean

tactic: rw [← fixedBy_inv, smul_mem_fixedBy_iff_mem_fixedBy, fixedBy_inv]
state_before: α : Type u_1
G : Type u_2
inst✝³ : Group G
inst✝² : MulAction G α
M : Type u_3
inst✝¹ : Monoid M
inst✝ : MulAction M α
a : α
g : G
⊢ g⁻¹ • a ∈ fixedBy α g ↔ a ∈ fixedBy α g
state_after: no goals
Theorem: MeasureTheory.LocallyIntegrable.mono
File: Mathlib/MeasureTheory/Function/LocallyIntegrable.lean

tactic: rw [← locallyIntegrableOn_univ] at hf ⊢
state_before: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
R : Type u_5
inst✝⁵ : MeasurableSpace X
inst✝⁴ : TopologicalSpace X
inst✝³ : MeasurableSpace Y
inst✝² : TopologicalSpace Y
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedAddCommGroup F
f g✝ : X → E
μ : Measure X
s : Set X
hf : LocallyIntegrable f μ
g : X → F
hg : AEStronglyMeasurable g μ
h : ∀ᵐ (x : X) ∂μ, ‖g x‖ ≤ ‖f x‖
⊢ LocallyIntegrable g μ
state_after: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
R : Type u_5
inst✝⁵ : MeasurableSpace X
inst✝⁴ : TopologicalSpace X
inst✝³ : MeasurableSpace Y
inst✝² : TopologicalSpace Y
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedAddCommGroup F
f g✝ : X → E
μ : Measure X
s : Set X
hf : LocallyIntegrableOn f univ μ
g : X → F
hg : AEStronglyMeasurable g μ
h : ∀ᵐ (x : X) ∂μ, ‖g x‖ ≤ ‖f x‖
⊢ LocallyIntegrableOn g univ μ

tactic: exact hf.mono hg h
state_before: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
R : Type u_5
inst✝⁵ : MeasurableSpace X
inst✝⁴ : TopologicalSpace X
inst✝³ : MeasurableSpace Y
inst✝² : TopologicalSpace Y
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedAddCommGroup F
f g✝ : X → E
μ : Measure X
s : Set X
hf : LocallyIntegrableOn f univ μ
g : X → F
hg : AEStronglyMeasurable g μ
h : ∀ᵐ (x : X) ∂μ, ‖g x‖ ≤ ‖f x‖
⊢ LocallyIntegrableOn g univ μ
state_after: no goals
Theorem: Nat.ceilRoot_one_right
File: Mathlib/Data/Nat/Factorization/Root.lean

tactic: simp [ceilRoot, hn]
state_before: a b n : ℕ
hn : n ≠ 0
⊢ n.ceilRoot 1 = 1
state_after: no goals
Theorem: PowerBasis.equivAdjoinSimple_symm_gen
File: Mathlib/FieldTheory/Adjoin.lean

tactic: rw [equivAdjoinSimple, equivOfMinpoly_symm, equivOfMinpoly_gen, adjoin.powerBasis_gen]
state_before: K : Type u_1
L : Type u_2
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
pb : PowerBasis K L
⊢ pb.equivAdjoinSimple.symm pb.gen = AdjoinSimple.gen K pb.gen
state_after: no goals
Theorem: MeasureTheory.lintegral_add_right'
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: simpa only [add_comm] using lintegral_add_left' hg f
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hg : AEMeasurable g μ
⊢ ∫⁻ (a : α), f a + g a ∂μ = ∫⁻ (a : α), f a ∂μ + ∫⁻ (a : α), g a ∂μ
state_after: no goals
Theorem: CategoryTheory.Limits.PullbackCone.unop_inl
File: Mathlib/CategoryTheory/Limits/Opposites.lean

tactic: aesop_cat
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : Type u₂
inst✝ : Category.{v₂, u₂} J
X✝ : Type v₂
X Y Z : Cᵒᵖ
f : X ⟶ Z
g : Y ⟶ Z
c : PullbackCone f g
⊢ c.unop.inl = c.fst.unop
state_after: no goals
Theorem: Int.negOnePow_mul_self
File: Mathlib/Algebra/Ring/NegOnePow.lean

tactic: simpa [mul_sub, negOnePow_eq_iff] using n.even_mul_pred_self
state_before: n : ℤ
⊢ (n * n).negOnePow = n.negOnePow
state_after: no goals
Theorem: IntermediateField.eq_bot_of_isAlgClosed_of_isAlgebraic
File: Mathlib/FieldTheory/IsAlgClosed/Basic.lean

tactic: obtain ⟨y, hy⟩ := IsAlgClosed.algebraMap_surjective_of_isIntegral (k := k) (⟨x, hx⟩ : L)
state_before: k✝ : Type u
inst✝⁵ : Field k✝
k : Type u_1
K : Type u_2
inst✝⁴ : Field k
inst✝³ : Field K
inst✝² : IsAlgClosed k
inst✝¹ : Algebra k K
L : IntermediateField k K
inst✝ : Algebra.IsAlgebraic k ↥L
x : K
hx : x ∈ L
⊢ x ∈ ⊥
state_after: case intro
k✝ : Type u
inst✝⁵ : Field k✝
k : Type u_1
K : Type u_2
inst✝⁴ : Field k
inst✝³ : Field K
inst✝² : IsAlgClosed k
inst✝¹ : Algebra k K
L : IntermediateField k K
inst✝ : Algebra.IsAlgebraic k ↥L
x : K
hx : x ∈ L
y : k
hy : (algebraMap k ↥L) y = ⟨x, hx⟩
⊢ x ∈ ⊥

tactic: exact ⟨y, congr_arg (algebraMap L K) hy⟩
state_before: case intro
k✝ : Type u
inst✝⁵ : Field k✝
k : Type u_1
K : Type u_2
inst✝⁴ : Field k
inst✝³ : Field K
inst✝² : IsAlgClosed k
inst✝¹ : Algebra k K
L : IntermediateField k K
inst✝ : Algebra.IsAlgebraic k ↥L
x : K
hx : x ∈ L
y : k
hy : (algebraMap k ↥L) y = ⟨x, hx⟩
⊢ x ∈ ⊥
state_after: no goals
Theorem: Multiset.ndunion_le
File: Mathlib/Data/Multiset/FinsetOps.lean

tactic: simp [zero_ndunion]
state_before: α : Type u_1
inst✝ : DecidableEq α
s✝ s t u : Multiset α
⊢ ndunion 0 t ≤ u ↔ 0 ⊆ u ∧ t ≤ u
state_after: no goals

tactic: simp only [cons_ndunion, mem_ndunion, ndinsert_le, and_comm, cons_subset, and_left_comm, h,
and_assoc]
state_before: α : Type u_1
inst✝ : DecidableEq α
s✝ s t u : Multiset α
x✝¹ : α
x✝ : Multiset α
h : x✝.ndunion t ≤ u ↔ x✝ ⊆ u ∧ t ≤ u
⊢ (x✝¹ ::ₘ x✝).ndunion t ≤ u ↔ x✝¹ ::ₘ x✝ ⊆ u ∧ t ≤ u
state_after: no goals
Theorem: MvPolynomial.eval₂_rename_prod_mk
File: Mathlib/Algebra/MvPolynomial/Rename.lean

tactic: intros
state_before: case h_X
σ : Type u_1
τ : Type u_2
α : Type u_3
R : Type u_4
S : Type u_5
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f : R →+* S
k : σ → τ
g✝ : τ → S
p✝ : MvPolynomial σ R
g : σ × τ → S
i : σ
p : MvPolynomial τ R
⊢ ∀ (p : MvPolynomial τ R) (n : τ),
    eval₂ f g ((rename (Prod.mk i)) p) = eval₂ f (fun j => g (i, j)) p →
      eval₂ f g ((rename (Prod.mk i)) (p * X n)) = eval₂ f (fun j => g (i, j)) (p * X n)
state_after: case h_X
σ : Type u_1
τ : Type u_2
α : Type u_3
R : Type u_4
S : Type u_5
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f : R →+* S
k : σ → τ
g✝ : τ → S
p✝¹ : MvPolynomial σ R
g : σ × τ → S
i : σ
p p✝ : MvPolynomial τ R
n✝ : τ
a✝ : eval₂ f g ((rename (Prod.mk i)) p✝) = eval₂ f (fun j => g (i, j)) p✝
⊢ eval₂ f g ((rename (Prod.mk i)) (p✝ * X n✝)) = eval₂ f (fun j => g (i, j)) (p✝ * X n✝)

tactic: simp [*]
state_before: case h_X
σ : Type u_1
τ : Type u_2
α : Type u_3
R : Type u_4
S : Type u_5
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f : R →+* S
k : σ → τ
g✝ : τ → S
p✝¹ : MvPolynomial σ R
g : σ × τ → S
i : σ
p p✝ : MvPolynomial τ R
n✝ : τ
a✝ : eval₂ f g ((rename (Prod.mk i)) p✝) = eval₂ f (fun j => g (i, j)) p✝
⊢ eval₂ f g ((rename (Prod.mk i)) (p✝ * X n✝)) = eval₂ f (fun j => g (i, j)) (p✝ * X n✝)
state_after: no goals
Theorem: GaussianFourier.tendsto_verticalIntegral
File: Mathlib/Analysis/SpecialFunctions/Gaussian/FourierTransform.lean

tactic: rw [tendsto_zero_iff_norm_tendsto_zero]
state_before: b : ℂ
hb : 0 < b.re
c : ℝ
⊢ Tendsto (verticalIntegral b c) atTop (𝓝 0)
state_after: b : ℂ
hb : 0 < b.re
c : ℝ
⊢ Tendsto (fun x => ‖verticalIntegral b c x‖) atTop (𝓝 0)

tactic: refine
  tendsto_of_tendsto_of_tendsto_of_le_of_le' tendsto_const_nhds ?_
    (eventually_of_forall fun _ => norm_nonneg _)
    ((eventually_ge_atTop (0 : ℝ)).mp
      (eventually_of_forall fun T hT => verticalIntegral_norm_le hb c hT))
state_before: b : ℂ
hb : 0 < b.re
c : ℝ
⊢ Tendsto (fun x => ‖verticalIntegral b c x‖) atTop (𝓝 0)
state_after: b : ℂ
hb : 0 < b.re
c : ℝ
⊢ Tendsto (fun T => 2 * |c| * rexp (-(b.re * T ^ 2 - 2 * |b.im| * |c| * T - b.re * c ^ 2))) atTop (𝓝 0)

tactic: rw [(by ring : 0 = 2 * |c| * 0)]
state_before: b : ℂ
hb : 0 < b.re
c : ℝ
⊢ Tendsto (fun T => 2 * |c| * rexp (-(b.re * T ^ 2 - 2 * |b.im| * |c| * T - b.re * c ^ 2))) atTop (𝓝 0)
state_after: b : ℂ
hb : 0 < b.re
c : ℝ
⊢ Tendsto (fun T => 2 * |c| * rexp (-(b.re * T ^ 2 - 2 * |b.im| * |c| * T - b.re * c ^ 2))) atTop (𝓝 (2 * |c| * 0))

tactic: refine (tendsto_exp_atBot.comp (tendsto_neg_atTop_atBot.comp ?_)).const_mul _
state_before: b : ℂ
hb : 0 < b.re
c : ℝ
⊢ Tendsto (fun T => 2 * |c| * rexp (-(b.re * T ^ 2 - 2 * |b.im| * |c| * T - b.re * c ^ 2))) atTop (𝓝 (2 * |c| * 0))
state_after: b : ℂ
hb : 0 < b.re
c : ℝ
⊢ Tendsto (fun T => b.re * T ^ 2 - 2 * |b.im| * |c| * T - b.re * c ^ 2) atTop atTop

tactic: apply tendsto_atTop_add_const_right
state_before: b : ℂ
hb : 0 < b.re
c : ℝ
⊢ Tendsto (fun T => b.re * T ^ 2 - 2 * |b.im| * |c| * T - b.re * c ^ 2) atTop atTop
state_after: case hf
b : ℂ
hb : 0 < b.re
c : ℝ
⊢ Tendsto (fun x => b.re * x ^ 2 - 2 * |b.im| * |c| * x) atTop atTop

tactic: simp_rw [sq, ← mul_assoc, ← sub_mul]
state_before: case hf
b : ℂ
hb : 0 < b.re
c : ℝ
⊢ Tendsto (fun x => b.re * x ^ 2 - 2 * |b.im| * |c| * x) atTop atTop
state_after: case hf
b : ℂ
hb : 0 < b.re
c : ℝ
⊢ Tendsto (fun x => (b.re * x - 2 * |b.im| * |c|) * x) atTop atTop

tactic: refine Tendsto.atTop_mul_atTop (tendsto_atTop_add_const_right _ _ ?_) tendsto_id
state_before: case hf
b : ℂ
hb : 0 < b.re
c : ℝ
⊢ Tendsto (fun x => (b.re * x - 2 * |b.im| * |c|) * x) atTop atTop
state_after: case hf
b : ℂ
hb : 0 < b.re
c : ℝ
⊢ Tendsto (HMul.hMul b.re) atTop atTop

tactic: exact (tendsto_const_mul_atTop_of_pos hb).mpr tendsto_id
state_before: case hf
b : ℂ
hb : 0 < b.re
c : ℝ
⊢ Tendsto (HMul.hMul b.re) atTop atTop
state_after: no goals

tactic: ring
state_before: b : ℂ
hb : 0 < b.re
c : ℝ
⊢ 0 = 2 * |c| * 0
state_after: no goals