1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: rootOfSplitsXPowSubC_pow
File: Mathlib/FieldTheory/KummerExtension.lean

tactic: have := map_rootOfSplits _ (IsSplittingField.splits L (X ^ n - C a))
state_before: K : Type u
inst✝³ : Field K
n : ℕ
hζ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
α : L
hα : α ^ n = (algebraMap K L) a
⊢ rootOfSplitsXPowSubC hn a L ^ n = (algebraMap K L) a
state_after: K : Type u
inst✝³ : Field K
n : ℕ
hζ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
α : L
hα : α ^ n = (algebraMap K L) a
this :
  ∀ (hfd : (X ^ n - C a).degree ≠ 0), eval₂ (algebraMap K L) (rootOfSplits (algebraMap K L) ⋯ hfd) (X ^ n - C a) = 0
⊢ rootOfSplitsXPowSubC hn a L ^ n = (algebraMap K L) a

tactic: simp only [eval₂_sub, eval₂_X_pow, eval₂_C, sub_eq_zero] at this
state_before: K : Type u
inst✝³ : Field K
n : ℕ
hζ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
α : L
hα : α ^ n = (algebraMap K L) a
this :
  ∀ (hfd : (X ^ n - C a).degree ≠ 0), eval₂ (algebraMap K L) (rootOfSplits (algebraMap K L) ⋯ hfd) (X ^ n - C a) = 0
⊢ rootOfSplitsXPowSubC hn a L ^ n = (algebraMap K L) a
state_after: K : Type u
inst✝³ : Field K
n : ℕ
hζ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
α : L
hα : α ^ n = (algebraMap K L) a
this : ∀ (hfd : (X ^ n - C a).degree ≠ 0), rootOfSplits (algebraMap K L) ⋯ hfd ^ n = (algebraMap K L) a
⊢ rootOfSplitsXPowSubC hn a L ^ n = (algebraMap K L) a

tactic: exact this _
state_before: K : Type u
inst✝³ : Field K
n : ℕ
hζ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
α : L
hα : α ^ n = (algebraMap K L) a
this : ∀ (hfd : (X ^ n - C a).degree ≠ 0), rootOfSplits (algebraMap K L) ⋯ hfd ^ n = (algebraMap K L) a
⊢ rootOfSplitsXPowSubC hn a L ^ n = (algebraMap K L) a
state_after: no goals
Theorem: Rel.comp_left_bot
File: Mathlib/Data/Rel.lean

tactic: ext x y
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r✝ r : Rel α β
⊢ ⊥ • r = ⊥
state_after: case a.h.a
α : Type u_1
β : Type u_2
γ : Type u_3
r✝ r : Rel α β
x : γ
y : β
⊢ (⊥ • r) x y ↔ ⊥ x y

tactic: simp [comp, Bot.bot]
state_before: case a.h.a
α : Type u_1
β : Type u_2
γ : Type u_3
r✝ r : Rel α β
x : γ
y : β
⊢ (⊥ • r) x y ↔ ⊥ x y
state_after: no goals
Theorem: sum_conjClasses_card_eq_card
File: Mathlib/GroupTheory/ClassEquation.lean

tactic: suffices (Σ x : ConjClasses G, x.carrier) ≃ G by simpa using (Fintype.card_congr this)
state_before: G : Type u_1
inst✝³ : Group G
inst✝² : Fintype (ConjClasses G)
inst✝¹ : Fintype G
inst✝ : (x : ConjClasses G) → Fintype ↑x.carrier
⊢ ∑ x : ConjClasses G, x.carrier.toFinset.card = Fintype.card G
state_after: G : Type u_1
inst✝³ : Group G
inst✝² : Fintype (ConjClasses G)
inst✝¹ : Fintype G
inst✝ : (x : ConjClasses G) → Fintype ↑x.carrier
⊢ (x : ConjClasses G) × ↑x.carrier ≃ G

tactic: simpa [carrier_eq_preimage_mk] using Equiv.sigmaFiberEquiv ConjClasses.mk
state_before: G : Type u_1
inst✝³ : Group G
inst✝² : Fintype (ConjClasses G)
inst✝¹ : Fintype G
inst✝ : (x : ConjClasses G) → Fintype ↑x.carrier
⊢ (x : ConjClasses G) × ↑x.carrier ≃ G
state_after: no goals

tactic: simpa using (Fintype.card_congr this)
state_before: G : Type u_1
inst✝³ : Group G
inst✝² : Fintype (ConjClasses G)
inst✝¹ : Fintype G
inst✝ : (x : ConjClasses G) → Fintype ↑x.carrier
this : (x : ConjClasses G) × ↑x.carrier ≃ G
⊢ ∑ x : ConjClasses G, x.carrier.toFinset.card = Fintype.card G
state_after: no goals
Theorem: CategoryTheory.reflects_epi_of_reflectsColimit
File: Mathlib/CategoryTheory/Limits/Constructions/EpiMono.lean

tactic: have := PushoutCocone.isColimitMkIdId (F.map f)
state_before: C : Type u₁
D : Type u₂
inst✝³ : Category.{v₁, u₁} C
inst✝² : Category.{v₂, u₂} D
F : C ⥤ D
X Y : C
f : X ⟶ Y
inst✝¹ : ReflectsColimit (span f f) F
inst✝ : Epi (F.map f)
⊢ Epi f
state_after: C : Type u₁
D : Type u₂
inst✝³ : Category.{v₁, u₁} C
inst✝² : Category.{v₂, u₂} D
F : C ⥤ D
X Y : C
f : X ⟶ Y
inst✝¹ : ReflectsColimit (span f f) F
inst✝ : Epi (F.map f)
this : IsColimit (PushoutCocone.mk (𝟙 (F.obj Y)) (𝟙 (F.obj Y)) ⋯)
⊢ Epi f

tactic: simp_rw [← F.map_id] at this
state_before: C : Type u₁
D : Type u₂
inst✝³ : Category.{v₁, u₁} C
inst✝² : Category.{v₂, u₂} D
F : C ⥤ D
X Y : C
f : X ⟶ Y
inst✝¹ : ReflectsColimit (span f f) F
inst✝ : Epi (F.map f)
this : IsColimit (PushoutCocone.mk (𝟙 (F.obj Y)) (𝟙 (F.obj Y)) ⋯)
⊢ Epi f
state_after: C : Type u₁
D : Type u₂
inst✝³ : Category.{v₁, u₁} C
inst✝² : Category.{v₂, u₂} D
F : C ⥤ D
X Y : C
f : X ⟶ Y
inst✝¹ : ReflectsColimit (span f f) F
inst✝ : Epi (F.map f)
this : IsColimit (PushoutCocone.mk (F.map (𝟙 Y)) (F.map (𝟙 Y)) ⋯)
⊢ Epi f

tactic: apply
  PushoutCocone.epi_of_isColimitMkIdId _
    (isColimitOfIsColimitPushoutCoconeMap F _ this)
state_before: C : Type u₁
D : Type u₂
inst✝³ : Category.{v₁, u₁} C
inst✝² : Category.{v₂, u₂} D
F : C ⥤ D
X Y : C
f : X ⟶ Y
inst✝¹ : ReflectsColimit (span f f) F
inst✝ : Epi (F.map f)
this : IsColimit (PushoutCocone.mk (F.map (𝟙 Y)) (F.map (𝟙 Y)) ⋯)
⊢ Epi f
state_after: no goals
Theorem: HomologicalComplex₂.total.map_id
File: Mathlib/Algebra/Homology/TotalComplex.lean

tactic: apply (HomologicalComplex.forget _ _).map_injective
state_before: C : Type u_1
inst✝⁵ : Category.{u_5, u_1} C
inst✝⁴ : Preadditive C
I₁ : Type u_2
I₂ : Type u_3
I₁₂ : Type u_4
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
K L M : HomologicalComplex₂ C c₁ c₂
φ : K ⟶ L
e : K ≅ L
ψ : L ⟶ M
c₁₂ : ComplexShape I₁₂
inst✝³ : DecidableEq I₁₂
inst✝² : TotalComplexShape c₁ c₂ c₁₂
inst✝¹ : K.HasTotal c₁₂
inst✝ : L.HasTotal c₁₂
⊢ map (𝟙 K) c₁₂ = 𝟙 (K.total c₁₂)
state_after: case a
C : Type u_1
inst✝⁵ : Category.{u_5, u_1} C
inst✝⁴ : Preadditive C
I₁ : Type u_2
I₂ : Type u_3
I₁₂ : Type u_4
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
K L M : HomologicalComplex₂ C c₁ c₂
φ : K ⟶ L
e : K ≅ L
ψ : L ⟶ M
c₁₂ : ComplexShape I₁₂
inst✝³ : DecidableEq I₁₂
inst✝² : TotalComplexShape c₁ c₂ c₁₂
inst✝¹ : K.HasTotal c₁₂
inst✝ : L.HasTotal c₁₂
⊢ (HomologicalComplex.forget C c₁₂).map (map (𝟙 K) c₁₂) = (HomologicalComplex.forget C c₁₂).map (𝟙 (K.total c₁₂))

tactic: apply GradedObject.mapMap_id
state_before: case a
C : Type u_1
inst✝⁵ : Category.{u_5, u_1} C
inst✝⁴ : Preadditive C
I₁ : Type u_2
I₂ : Type u_3
I₁₂ : Type u_4
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
K L M : HomologicalComplex₂ C c₁ c₂
φ : K ⟶ L
e : K ≅ L
ψ : L ⟶ M
c₁₂ : ComplexShape I₁₂
inst✝³ : DecidableEq I₁₂
inst✝² : TotalComplexShape c₁ c₂ c₁₂
inst✝¹ : K.HasTotal c₁₂
inst✝ : L.HasTotal c₁₂
⊢ (HomologicalComplex.forget C c₁₂).map (map (𝟙 K) c₁₂) = (HomologicalComplex.forget C c₁₂).map (𝟙 (K.total c₁₂))
state_after: no goals
Theorem: associated_eq_eq
File: Mathlib/Algebra/Associated.lean

tactic: ext
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝¹ : Monoid α
inst✝ : Unique αˣ
⊢ Associated = Eq
state_after: case h.h.a
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝¹ : Monoid α
inst✝ : Unique αˣ
x✝¹ x✝ : α
⊢ x✝¹ ~ᵤ x✝ ↔ x✝¹ = x✝

tactic: rw [associated_iff_eq]
state_before: case h.h.a
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝¹ : Monoid α
inst✝ : Unique αˣ
x✝¹ x✝ : α
⊢ x✝¹ ~ᵤ x✝ ↔ x✝¹ = x✝
state_after: no goals
Theorem: norm_pow_le'
File: Mathlib/Analysis/Normed/Field/Basic.lean

tactic: simpa only [NNReal.coe_pow, coe_nnnorm] using NNReal.coe_mono (nnnorm_pow_le' a h)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝ : SeminormedRing α
a : α
n : ℕ
h : 0 < n
⊢ ‖a ^ n‖ ≤ ‖a‖ ^ n
state_after: no goals
Theorem: Field.sepDegree_mul_sepDegree_of_isAlgebraic
File: Mathlib/FieldTheory/PurelyInseparable.lean

tactic: simpa only [Cardinal.lift_id] using lift_sepDegree_mul_lift_sepDegree_of_isAlgebraic F E K
state_before: F : Type u
E : Type v
inst✝¹¹ : Field F
inst✝¹⁰ : Field E
inst✝⁹ : Algebra F E
K✝ : Type w
inst✝⁸ : Field K✝
inst✝⁷ : Algebra F K✝
inst✝⁶ : Algebra E K✝
inst✝⁵ : IsScalarTower F E K✝
K : Type v
inst✝⁴ : Field K
inst✝³ : Algebra F K
inst✝² : Algebra E K
inst✝¹ : IsScalarTower F E K
inst✝ : Algebra.IsAlgebraic F E
⊢ sepDegree F E * sepDegree E K = sepDegree F K
state_after: no goals
Theorem: MeasureTheory.AEStronglyMeasurable.integrable_truncation
File: Mathlib/Probability/StrongLaw.lean

tactic: rw [← memℒp_one_iff_integrable]
state_before: α : Type u_1
m : MeasurableSpace α
μ : Measure α
f : α → ℝ
inst✝ : IsFiniteMeasure μ
hf : AEStronglyMeasurable f μ
A : ℝ
⊢ Integrable (truncation f A) μ
state_after: α : Type u_1
m : MeasurableSpace α
μ : Measure α
f : α → ℝ
inst✝ : IsFiniteMeasure μ
hf : AEStronglyMeasurable f μ
A : ℝ
⊢ Memℒp (truncation f A) 1 μ

tactic: exact hf.memℒp_truncation
state_before: α : Type u_1
m : MeasurableSpace α
μ : Measure α
f : α → ℝ
inst✝ : IsFiniteMeasure μ
hf : AEStronglyMeasurable f μ
A : ℝ
⊢ Memℒp (truncation f A) 1 μ
state_after: no goals
Theorem: le_suffixLevenshtein_append_minimum
File: Mathlib/Data/List/EditDistance/Bounds.lean

tactic: induction ys₁ with
| nil => exact le_refl _
| cons y ys₁ ih => exact ih.trans (le_suffixLevenshtein_cons_minimum _ _ _)
state_before: α : Type u_1
β : Type u_2
δ : Type u_3
C : Levenshtein.Cost α β δ
inst✝ : CanonicallyLinearOrderedAddCommMonoid δ
xs : List α
ys₁ ys₂ : List β
⊢ (↑(suffixLevenshtein C xs ys₂)).minimum ≤ (↑(suffixLevenshtein C xs (ys₁ ++ ys₂))).minimum
state_after: no goals

tactic: exact le_refl _
state_before: case nil
α : Type u_1
β : Type u_2
δ : Type u_3
C : Levenshtein.Cost α β δ
inst✝ : CanonicallyLinearOrderedAddCommMonoid δ
xs : List α
ys₂ : List β
⊢ (↑(suffixLevenshtein C xs ys₂)).minimum ≤ (↑(suffixLevenshtein C xs ([] ++ ys₂))).minimum
state_after: no goals

tactic: exact ih.trans (le_suffixLevenshtein_cons_minimum _ _ _)
state_before: case cons
α : Type u_1
β : Type u_2
δ : Type u_3
C : Levenshtein.Cost α β δ
inst✝ : CanonicallyLinearOrderedAddCommMonoid δ
xs : List α
ys₂ : List β
y : β
ys₁ : List β
ih : (↑(suffixLevenshtein C xs ys₂)).minimum ≤ (↑(suffixLevenshtein C xs (ys₁ ++ ys₂))).minimum
⊢ (↑(suffixLevenshtein C xs ys₂)).minimum ≤ (↑(suffixLevenshtein C xs (y :: ys₁ ++ ys₂))).minimum
state_after: no goals
Theorem: ZFSet.pair_mem_prod
File: Mathlib/SetTheory/ZFC/Basic.lean

tactic: simp
state_before: x y a b : ZFSet
⊢ a.pair b ∈ x.prod y ↔ a ∈ x ∧ b ∈ y
state_after: no goals
Theorem: Batteries.UnionFind.rankD_lt_rankMax
File: .lake/packages/batteries/Batteries/Data/UnionFind/Basic.lean

tactic: simp [rankD]
state_before: self : UnionFind
i : Nat
⊢ rankD self.arr i < self.rankMax
state_after: self : UnionFind
i : Nat
⊢ (if h : i < self.arr.size then self.arr[i].rank else 0) < self.rankMax

tactic: split <;> [apply rank'_lt_rankMax; apply Nat.succ_pos]
state_before: self : UnionFind
i : Nat
⊢ (if h : i < self.arr.size then self.arr[i].rank else 0) < self.rankMax
state_after: no goals
Theorem: Surreal.Multiplication.P24_neg_right
File: Mathlib/SetTheory/Surreal/Multiplication.lean

tactic: rw [P24, P24, P2_neg_right, P4_neg_right]
state_before: x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
⊢ P24 x₁ x₂ y ↔ P24 x₁ x₂ (-y)
state_after: no goals
Theorem: intervalIntegral.integral_comp_add_mul
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

tactic: rw [← integral_comp_add_left, ← integral_comp_mul_left _ hc]
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d✝ : ℝ
f : ℝ → E
hc : c ≠ 0
d : ℝ
⊢ ∫ (x : ℝ) in a..b, f (d + c * x) = c⁻¹ • ∫ (x : ℝ) in d + c * a..d + c * b, f x
state_after: no goals
Theorem: sdiff_inf_self_left
File: Mathlib/Order/Heyting/Basic.lean

tactic: rw [sdiff_inf, sdiff_self, bot_sup_eq]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : GeneralizedCoheytingAlgebra α
a✝ b✝ c d a b : α
⊢ a \ (a ⊓ b) = a \ b
state_after: no goals
Theorem: Orientation.oangle_sign_smul_left
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Basic.lean

tactic: rcases lt_trichotomy r 0 with (h | h | h) <;> simp [h]
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
r : ℝ
⊢ (o.oangle (r • x) y).sign = SignType.sign r * (o.oangle x y).sign
state_after: no goals
Theorem: LinearRecurrence.mkSol_eq_init
File: Mathlib/Algebra/LinearRecurrence.lean

tactic: intro n
state_before: α : Type u_1
inst✝ : CommSemiring α
E : LinearRecurrence α
init : Fin E.order → α
⊢ ∀ (n : Fin E.order), E.mkSol init ↑n = init n
state_after: α : Type u_1
inst✝ : CommSemiring α
E : LinearRecurrence α
init : Fin E.order → α
n : Fin E.order
⊢ E.mkSol init ↑n = init n

tactic: rw [mkSol]
state_before: α : Type u_1
inst✝ : CommSemiring α
E : LinearRecurrence α
init : Fin E.order → α
n : Fin E.order
⊢ E.mkSol init ↑n = init n
state_after: α : Type u_1
inst✝ : CommSemiring α
E : LinearRecurrence α
init : Fin E.order → α
n : Fin E.order
⊢ (if h : ↑n < E.order then init ⟨↑n, h⟩
    else
      ∑ k : Fin E.order,
        let_fun x := ⋯;
        E.coeffs k * E.mkSol init (↑n - E.order + ↑k)) =
    init n

tactic: simp only [n.is_lt, dif_pos, Fin.mk_val, Fin.eta]
state_before: α : Type u_1
inst✝ : CommSemiring α
E : LinearRecurrence α
init : Fin E.order → α
n : Fin E.order
⊢ (if h : ↑n < E.order then init ⟨↑n, h⟩
    else
      ∑ k : Fin E.order,
        let_fun x := ⋯;
        E.coeffs k * E.mkSol init (↑n - E.order + ↑k)) =
    init n
state_after: no goals
Theorem: Polynomial.support_scaleRoots_eq
File: Mathlib/RingTheory/Polynomial/ScaleRoots.lean

tactic: intro i
state_before: R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
p : R[X]
s : R
hs : s ∈ nonZeroDivisors R
⊢ p.support ≤ (p.scaleRoots s).support
state_after: R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
p : R[X]
s : R
hs : s ∈ nonZeroDivisors R
i : ℕ
⊢ i ∈ p.support → i ∈ (p.scaleRoots s).support

tactic: simp only [coeff_scaleRoots, Polynomial.mem_support_iff]
state_before: R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
p : R[X]
s : R
hs : s ∈ nonZeroDivisors R
i : ℕ
⊢ i ∈ p.support → i ∈ (p.scaleRoots s).support
state_after: R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
p : R[X]
s : R
hs : s ∈ nonZeroDivisors R
i : ℕ
⊢ p.coeff i ≠ 0 → p.coeff i * s ^ (p.natDegree - i) ≠ 0

tactic: intro p_ne_zero ps_zero
state_before: R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
p : R[X]
s : R
hs : s ∈ nonZeroDivisors R
i : ℕ
⊢ p.coeff i ≠ 0 → p.coeff i * s ^ (p.natDegree - i) ≠ 0
state_after: R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
p : R[X]
s : R
hs : s ∈ nonZeroDivisors R
i : ℕ
p_ne_zero : p.coeff i ≠ 0
ps_zero : p.coeff i * s ^ (p.natDegree - i) = 0
⊢ False

tactic: have := pow_mem hs (p.natDegree - i) _ ps_zero
state_before: R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
p : R[X]
s : R
hs : s ∈ nonZeroDivisors R
i : ℕ
p_ne_zero : p.coeff i ≠ 0
ps_zero : p.coeff i * s ^ (p.natDegree - i) = 0
⊢ False
state_after: R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
p : R[X]
s : R
hs : s ∈ nonZeroDivisors R
i : ℕ
p_ne_zero : p.coeff i ≠ 0
ps_zero : p.coeff i * s ^ (p.natDegree - i) = 0
this : p.coeff i = 0
⊢ False

tactic: contradiction
state_before: R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
p : R[X]
s : R
hs : s ∈ nonZeroDivisors R
i : ℕ
p_ne_zero : p.coeff i ≠ 0
ps_zero : p.coeff i * s ^ (p.natDegree - i) = 0
this : p.coeff i = 0
⊢ False
state_after: no goals
Theorem: Bornology.isBounded_biUnion
File: Mathlib/Topology/Bornology/Basic.lean

tactic: simp only [← isCobounded_compl_iff, compl_iUnion, isCobounded_biInter hs]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
s✝ : Set α
inst✝ : Bornology α
s : Set ι
f : ι → Set α
hs : s.Finite
⊢ IsBounded (⋃ i ∈ s, f i) ↔ ∀ i ∈ s, IsBounded (f i)
state_after: no goals
Theorem: SemistandardYoungTableau.col_weak
File: Mathlib/Combinatorics/Young/SemistandardTableau.lean

tactic: cases' eq_or_lt_of_le hi with h h
state_before: μ : YoungDiagram
T : SemistandardYoungTableau μ
i1 i2 j : ℕ
hi : i1 ≤ i2
cell : (i2, j) ∈ μ
⊢ T i1 j ≤ T i2 j
state_after: case inl
μ : YoungDiagram
T : SemistandardYoungTableau μ
i1 i2 j : ℕ
hi : i1 ≤ i2
cell : (i2, j) ∈ μ
h : i1 = i2
⊢ T i1 j ≤ T i2 j

case inr
μ : YoungDiagram
T : SemistandardYoungTableau μ
i1 i2 j : ℕ
hi : i1 ≤ i2
cell : (i2, j) ∈ μ
h : i1 < i2
⊢ T i1 j ≤ T i2 j

tactic: rw [h]
state_before: case inl
μ : YoungDiagram
T : SemistandardYoungTableau μ
i1 i2 j : ℕ
hi : i1 ≤ i2
cell : (i2, j) ∈ μ
h : i1 = i2
⊢ T i1 j ≤ T i2 j
state_after: no goals

tactic: exact le_of_lt (T.col_strict h cell)
state_before: case inr
μ : YoungDiagram
T : SemistandardYoungTableau μ
i1 i2 j : ℕ
hi : i1 ≤ i2
cell : (i2, j) ∈ μ
h : i1 < i2
⊢ T i1 j ≤ T i2 j
state_after: no goals
Theorem: Mathlib.Meta.NormNum.isRat_inv_neg
File: Mathlib/Tactic/NormNum/Inv.lean

tactic: rintro ⟨_, rfl⟩
state_before: α : Type u_1
inst✝¹ : DivisionRing α
inst✝ : CharZero α
a : α
n d : ℕ
⊢ IsRat a (Int.negOfNat n.succ) d → IsRat a⁻¹ (Int.negOfNat d) n.succ
state_after: case mk
α : Type u_1
inst✝¹ : DivisionRing α
inst✝ : CharZero α
n d : ℕ
inv✝ : Invertible ↑d
⊢ IsRat (↑(Int.negOfNat n.succ) * ⅟↑d)⁻¹ (Int.negOfNat d) n.succ

tactic: simp only [Int.negOfNat_eq]
state_before: case mk
α : Type u_1
inst✝¹ : DivisionRing α
inst✝ : CharZero α
n d : ℕ
inv✝ : Invertible ↑d
⊢ IsRat (↑(Int.negOfNat n.succ) * ⅟↑d)⁻¹ (Int.negOfNat d) n.succ
state_after: case mk
α : Type u_1
inst✝¹ : DivisionRing α
inst✝ : CharZero α
n d : ℕ
inv✝ : Invertible ↑d
⊢ IsRat (↑(-Int.ofNat n.succ) * ⅟↑d)⁻¹ (-Int.ofNat d) n.succ

tactic: have := invertibleOfNonzero (α := α) (Nat.cast_ne_zero.2 (Nat.succ_ne_zero n))
state_before: case mk
α : Type u_1
inst✝¹ : DivisionRing α
inst✝ : CharZero α
n d : ℕ
inv✝ : Invertible ↑d
⊢ IsRat (↑(-Int.ofNat n.succ) * ⅟↑d)⁻¹ (-Int.ofNat d) n.succ
state_after: case mk
α : Type u_1
inst✝¹ : DivisionRing α
inst✝ : CharZero α
n d : ℕ
inv✝ : Invertible ↑d
this : Invertible ↑n.succ
⊢ IsRat (↑(-Int.ofNat n.succ) * ⅟↑d)⁻¹ (-Int.ofNat d) n.succ

tactic: generalize Nat.succ n = n at *
state_before: case mk
α : Type u_1
inst✝¹ : DivisionRing α
inst✝ : CharZero α
n d : ℕ
inv✝ : Invertible ↑d
this : Invertible ↑n.succ
⊢ IsRat (↑(-Int.ofNat n.succ) * ⅟↑d)⁻¹ (-Int.ofNat d) n.succ
state_after: case mk
α : Type u_1
inst✝¹ : DivisionRing α
inst✝ : CharZero α
n✝ d : ℕ
inv✝ : Invertible ↑d
n : ℕ
this : Invertible ↑n
⊢ IsRat (↑(-Int.ofNat n) * ⅟↑d)⁻¹ (-Int.ofNat d) n

tactic: use this
state_before: case mk
α : Type u_1
inst✝¹ : DivisionRing α
inst✝ : CharZero α
n✝ d : ℕ
inv✝ : Invertible ↑d
n : ℕ
this : Invertible ↑n
⊢ IsRat (↑(-Int.ofNat n) * ⅟↑d)⁻¹ (-Int.ofNat d) n
state_after: case eq
α : Type u_1
inst✝¹ : DivisionRing α
inst✝ : CharZero α
n✝ d : ℕ
inv✝ : Invertible ↑d
n : ℕ
this : Invertible ↑n
⊢ (↑(-Int.ofNat n) * ⅟↑d)⁻¹ = ↑(-Int.ofNat d) * ⅟↑n

tactic: simp only [Int.ofNat_eq_coe, Int.cast_neg,
Int.cast_natCast, invOf_eq_inv, inv_neg, neg_mul, mul_inv_rev, inv_inv]
state_before: case eq
α : Type u_1
inst✝¹ : DivisionRing α
inst✝ : CharZero α
n✝ d : ℕ
inv✝ : Invertible ↑d
n : ℕ
this : Invertible ↑n
⊢ (↑(-Int.ofNat n) * ⅟↑d)⁻¹ = ↑(-Int.ofNat d) * ⅟↑n
state_after: no goals
Theorem: Finset.Ico_diff_Ioo_self
File: Mathlib/Order/Interval/Finset/Basic.lean

tactic: simp [← coe_inj, h]
state_before: ι : Type u_1
α : Type u_2
inst✝² : PartialOrder α
inst✝¹ : LocallyFiniteOrder α
a b c : α
inst✝ : DecidableEq α
h : a < b
⊢ Ico a b \ Ioo a b = {a}
state_after: no goals
Theorem: mul_star_le_algebraMap_norm_sq
File: Mathlib/Analysis/NormedSpace/Star/ContinuousFunctionalCalculus/Order.lean

tactic: have : a * star a ≤ algebraMap ℝ A ‖a * star a‖ := IsSelfAdjoint.le_algebraMap_norm_self
state_before: A : Type u_1
inst✝⁷ : NormedRing A
inst✝⁶ : StarRing A
inst✝⁵ : CstarRing A
inst✝⁴ : CompleteSpace A
inst✝³ : NormedAlgebra ℂ A
inst✝² : StarModule ℂ A
inst✝¹ : PartialOrder A
inst✝ : StarOrderedRing A
a : A
⊢ a * star a ≤ (algebraMap ℝ A) (‖a‖ ^ 2)
state_after: A : Type u_1
inst✝⁷ : NormedRing A
inst✝⁶ : StarRing A
inst✝⁵ : CstarRing A
inst✝⁴ : CompleteSpace A
inst✝³ : NormedAlgebra ℂ A
inst✝² : StarModule ℂ A
inst✝¹ : PartialOrder A
inst✝ : StarOrderedRing A
a : A
this : a * star a ≤ (algebraMap ℝ A) ‖a * star a‖
⊢ a * star a ≤ (algebraMap ℝ A) (‖a‖ ^ 2)

tactic: rwa [CstarRing.norm_self_mul_star, ← pow_two] at this
state_before: A : Type u_1
inst✝⁷ : NormedRing A
inst✝⁶ : StarRing A
inst✝⁵ : CstarRing A
inst✝⁴ : CompleteSpace A
inst✝³ : NormedAlgebra ℂ A
inst✝² : StarModule ℂ A
inst✝¹ : PartialOrder A
inst✝ : StarOrderedRing A
a : A
this : a * star a ≤ (algebraMap ℝ A) ‖a * star a‖
⊢ a * star a ≤ (algebraMap ℝ A) (‖a‖ ^ 2)
state_after: no goals
Theorem: MvPolynomial.vars_eq_support_biUnion_support
File: Mathlib/Algebra/MvPolynomial/Variables.lean

tactic: ext i
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝² : CommSemiring R
p q : MvPolynomial σ R
inst✝¹ : CommSemiring S
f : R →+* S
inst✝ : DecidableEq σ
⊢ p.vars = p.support.biUnion Finsupp.support
state_after: case a
R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝² : CommSemiring R
p q : MvPolynomial σ R
inst✝¹ : CommSemiring S
f : R →+* S
inst✝ : DecidableEq σ
i : σ
⊢ i ∈ p.vars ↔ i ∈ p.support.biUnion Finsupp.support

tactic: rw [mem_vars, Finset.mem_biUnion]
state_before: case a
R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝² : CommSemiring R
p q : MvPolynomial σ R
inst✝¹ : CommSemiring S
f : R →+* S
inst✝ : DecidableEq σ
i : σ
⊢ i ∈ p.vars ↔ i ∈ p.support.biUnion Finsupp.support
state_after: no goals
Theorem: dist_pi_const
File: Mathlib/Topology/MetricSpace/Pseudo/Constructions.lean

tactic: simpa only [dist_edist] using congr_arg ENNReal.toReal (edist_pi_const a b)
state_before: α : Type u_1
β : Type u_2
inst✝³ : PseudoMetricSpace α
π : β → Type u_3
inst✝² : Fintype β
inst✝¹ : (b : β) → PseudoMetricSpace (π b)
inst✝ : Nonempty β
a b : α
⊢ (dist (fun x => a) fun x => b) = dist a b
state_after: no goals
Theorem: Set.prod_univ
File: Mathlib/Data/Set/Prod.lean

tactic: simp [prod_eq]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
s✝ s₁ s₂ : Set α
t t₁ t₂ : Set β
a : α
b : β
s : Set α
⊢ s ×ˢ univ = Prod.fst ⁻¹' s
state_after: no goals
Theorem: WittVector.map_frobeniusPoly.key₁
File: Mathlib/RingTheory/WittVector/Frobenius.lean

tactic: apply multiplicity.pow_dvd_of_le_multiplicity
state_before: p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CommRing S
n j : ℕ
hj : j < p ^ n
⊢ p ^ (n - v p ⟨j + 1, ⋯⟩) ∣ (p ^ n).choose (j + 1)
state_after: case a
p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CommRing S
n j : ℕ
hj : j < p ^ n
⊢ ↑(n - v p ⟨j + 1, ⋯⟩) ≤ multiplicity p ((p ^ n).choose (j + 1))

tactic: rw [hp.out.multiplicity_choose_prime_pow hj j.succ_ne_zero]
state_before: case a
p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CommRing S
n j : ℕ
hj : j < p ^ n
⊢ ↑(n - v p ⟨j + 1, ⋯⟩) ≤ multiplicity p ((p ^ n).choose (j + 1))
state_after: case a
p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CommRing S
n j : ℕ
hj : j < p ^ n
⊢ ↑(n - v p ⟨j + 1, ⋯⟩) ≤ ↑(n - (multiplicity p j.succ).get ⋯)

tactic: rfl
state_before: case a
p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CommRing S
n j : ℕ
hj : j < p ^ n
⊢ ↑(n - v p ⟨j + 1, ⋯⟩) ≤ ↑(n - (multiplicity p j.succ).get ⋯)
state_after: no goals