1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Ordinal.principal_mul_of_le_two
File: Mathlib/SetTheory/Ordinal/Principal.lean

tactic: rcases lt_or_eq_of_le ho with (ho | rfl)
state_before: o : Ordinal.{u_1}
ho : o ≤ 2
⊢ Principal (fun x x_1 => x * x_1) o
state_after: case inl
o : Ordinal.{u_1}
ho✝ : o ≤ 2
ho : o < 2
⊢ Principal (fun x x_1 => x * x_1) o

case inr
ho : 2 ≤ 2
⊢ Principal (fun x x_1 => x * x_1) 2

tactic: have h₂ : succ (1 : Ordinal) = 2 := by simp
state_before: case inl
o : Ordinal.{u_1}
ho✝ : o ≤ 2
ho : o < 2
⊢ Principal (fun x x_1 => x * x_1) o
state_after: case inl
o : Ordinal.{u_1}
ho✝ : o ≤ 2
ho : o < 2
h₂ : succ 1 = 2
⊢ Principal (fun x x_1 => x * x_1) o

tactic: rw [← h₂, lt_succ_iff] at ho
state_before: case inl
o : Ordinal.{u_1}
ho✝ : o ≤ 2
ho : o < 2
h₂ : succ 1 = 2
⊢ Principal (fun x x_1 => x * x_1) o
state_after: case inl
o : Ordinal.{u_1}
ho✝ : o ≤ 2
ho : o ≤ 1
h₂ : succ 1 = 2
⊢ Principal (fun x x_1 => x * x_1) o

tactic: rcases lt_or_eq_of_le ho with (ho | rfl)
state_before: case inl
o : Ordinal.{u_1}
ho✝ : o ≤ 2
ho : o ≤ 1
h₂ : succ 1 = 2
⊢ Principal (fun x x_1 => x * x_1) o
state_after: case inl.inl
o : Ordinal.{u_1}
ho✝¹ : o ≤ 2
ho✝ : o ≤ 1
h₂ : succ 1 = 2
ho : o < 1
⊢ Principal (fun x x_1 => x * x_1) o

case inl.inr
h₂ : succ 1 = 2
ho✝ : 1 ≤ 2
ho : 1 ≤ 1
⊢ Principal (fun x x_1 => x * x_1) 1

tactic: simp
state_before: o : Ordinal.{u_1}
ho✝ : o ≤ 2
ho : o < 2
⊢ succ 1 = 2
state_after: no goals

tactic: rw [lt_one_iff_zero.1 ho]
state_before: case inl.inl
o : Ordinal.{u_1}
ho✝¹ : o ≤ 2
ho✝ : o ≤ 1
h₂ : succ 1 = 2
ho : o < 1
⊢ Principal (fun x x_1 => x * x_1) o
state_after: case inl.inl
o : Ordinal.{u_1}
ho✝¹ : o ≤ 2
ho✝ : o ≤ 1
h₂ : succ 1 = 2
ho : o < 1
⊢ Principal (fun x x_1 => x * x_1) 0

tactic: exact principal_zero
state_before: case inl.inl
o : Ordinal.{u_1}
ho✝¹ : o ≤ 2
ho✝ : o ≤ 1
h₂ : succ 1 = 2
ho : o < 1
⊢ Principal (fun x x_1 => x * x_1) 0
state_after: no goals

tactic: exact principal_mul_one
state_before: case inl.inr
h₂ : succ 1 = 2
ho✝ : 1 ≤ 2
ho : 1 ≤ 1
⊢ Principal (fun x x_1 => x * x_1) 1
state_after: no goals

tactic: exact principal_mul_two
state_before: case inr
ho : 2 ≤ 2
⊢ Principal (fun x x_1 => x * x_1) 2
state_after: no goals
Theorem: Polynomial.rootMultiplicity_eq_natTrailingDegree'
File: Mathlib/Algebra/Polynomial/RingDivision.lean

tactic: by_cases h : p = 0
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
⊢ rootMultiplicity 0 p = p.natTrailingDegree
state_after: case pos
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
h : p = 0
⊢ rootMultiplicity 0 p = p.natTrailingDegree

case neg
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
h : ¬p = 0
⊢ rootMultiplicity 0 p = p.natTrailingDegree

tactic: refine le_antisymm ?_ ?_
state_before: case neg
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
h : ¬p = 0
⊢ rootMultiplicity 0 p = p.natTrailingDegree
state_after: case neg.refine_1
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
h : ¬p = 0
⊢ rootMultiplicity 0 p ≤ p.natTrailingDegree

case neg.refine_2
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
h : ¬p = 0
⊢ p.natTrailingDegree ≤ rootMultiplicity 0 p

tactic: simp only [h, rootMultiplicity_zero, natTrailingDegree_zero]
state_before: case pos
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
h : p = 0
⊢ rootMultiplicity 0 p = p.natTrailingDegree
state_after: no goals

tactic: rw [rootMultiplicity_le_iff h, map_zero, sub_zero, X_pow_dvd_iff, not_forall]
state_before: case neg.refine_1
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
h : ¬p = 0
⊢ rootMultiplicity 0 p ≤ p.natTrailingDegree
state_after: case neg.refine_1
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
h : ¬p = 0
⊢ ∃ x, ¬(x < p.natTrailingDegree + 1 → p.coeff x = 0)

tactic: exact ⟨p.natTrailingDegree,
  fun h' ↦ trailingCoeff_nonzero_iff_nonzero.2 h <| h' <| Nat.lt.base _⟩
state_before: case neg.refine_1
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
h : ¬p = 0
⊢ ∃ x, ¬(x < p.natTrailingDegree + 1 → p.coeff x = 0)
state_after: no goals

tactic: rw [le_rootMultiplicity_iff h, map_zero, sub_zero, X_pow_dvd_iff]
state_before: case neg.refine_2
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
h : ¬p = 0
⊢ p.natTrailingDegree ≤ rootMultiplicity 0 p
state_after: case neg.refine_2
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
h : ¬p = 0
⊢ ∀ d < p.natTrailingDegree, p.coeff d = 0

tactic: exact fun _ ↦ coeff_eq_zero_of_lt_natTrailingDegree
state_before: case neg.refine_2
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
h : ¬p = 0
⊢ ∀ d < p.natTrailingDegree, p.coeff d = 0
state_after: no goals
Theorem: Complex.UnitDisc.coe_ne_neg_one
File: Mathlib/Analysis/Complex/UnitDisc/Basic.lean

tactic: rw [abs.map_neg, map_one]
state_before: z : 𝔻
⊢ abs ↑z ≠ abs (-1)
state_after: z : 𝔻
⊢ abs ↑z ≠ 1

tactic: exact z.abs_ne_one
state_before: z : 𝔻
⊢ abs ↑z ≠ 1
state_after: no goals
Theorem: ENNReal.iInter_Ici_coe_nat
File: Mathlib/Data/ENNReal/Basic.lean

tactic: simp only [← compl_Iio, ← compl_iUnion, iUnion_Iio_coe_nat, compl_compl]
state_before: α : Type u_1
a b c d : ℝ≥0∞
r p q : ℝ≥0
⊢ ⋂ n, Ici ↑n = {⊤}
state_after: no goals
Theorem: Nat.totient_dvd_of_dvd
File: Mathlib/Data/Nat/Totient.lean

tactic: rcases eq_or_ne a 0 with (rfl | ha0)
state_before: a b : ℕ
h : a ∣ b
⊢ φ a ∣ φ b
state_after: case inl
b : ℕ
h : 0 ∣ b
⊢ φ 0 ∣ φ b

case inr
a b : ℕ
h : a ∣ b
ha0 : a ≠ 0
⊢ φ a ∣ φ b

tactic: rcases eq_or_ne b 0 with (rfl | hb0)
state_before: case inr
a b : ℕ
h : a ∣ b
ha0 : a ≠ 0
⊢ φ a ∣ φ b
state_after: case inr.inl
a : ℕ
ha0 : a ≠ 0
h : a ∣ 0
⊢ φ a ∣ φ 0

case inr.inr
a b : ℕ
h : a ∣ b
ha0 : a ≠ 0
hb0 : b ≠ 0
⊢ φ a ∣ φ b

tactic: have hab' := primeFactors_mono h hb0
state_before: case inr.inr
a b : ℕ
h : a ∣ b
ha0 : a ≠ 0
hb0 : b ≠ 0
⊢ φ a ∣ φ b
state_after: case inr.inr
a b : ℕ
h : a ∣ b
ha0 : a ≠ 0
hb0 : b ≠ 0
hab' : a.primeFactors ⊆ b.primeFactors
⊢ φ a ∣ φ b

tactic: rw [totient_eq_prod_factorization ha0, totient_eq_prod_factorization hb0]
state_before: case inr.inr
a b : ℕ
h : a ∣ b
ha0 : a ≠ 0
hb0 : b ≠ 0
hab' : a.primeFactors ⊆ b.primeFactors
⊢ φ a ∣ φ b
state_after: case inr.inr
a b : ℕ
h : a ∣ b
ha0 : a ≠ 0
hb0 : b ≠ 0
hab' : a.primeFactors ⊆ b.primeFactors
⊢ (a.factorization.prod fun p k => p ^ (k - 1) * (p - 1)) ∣ b.factorization.prod fun p k => p ^ (k - 1) * (p - 1)

tactic: refine Finsupp.prod_dvd_prod_of_subset_of_dvd hab' fun p _ => mul_dvd_mul ?_ dvd_rfl
state_before: case inr.inr
a b : ℕ
h : a ∣ b
ha0 : a ≠ 0
hb0 : b ≠ 0
hab' : a.primeFactors ⊆ b.primeFactors
⊢ (a.factorization.prod fun p k => p ^ (k - 1) * (p - 1)) ∣ b.factorization.prod fun p k => p ^ (k - 1) * (p - 1)
state_after: case inr.inr
a b : ℕ
h : a ∣ b
ha0 : a ≠ 0
hb0 : b ≠ 0
hab' : a.primeFactors ⊆ b.primeFactors
p : ℕ
x✝ : p ∈ a.factorization.support
⊢ p ^ (a.factorization p - 1) ∣ p ^ (b.factorization p - 1)

tactic: exact pow_dvd_pow p (tsub_le_tsub_right ((factorization_le_iff_dvd ha0 hb0).2 h p) 1)
state_before: case inr.inr
a b : ℕ
h : a ∣ b
ha0 : a ≠ 0
hb0 : b ≠ 0
hab' : a.primeFactors ⊆ b.primeFactors
p : ℕ
x✝ : p ∈ a.factorization.support
⊢ p ^ (a.factorization p - 1) ∣ p ^ (b.factorization p - 1)
state_after: no goals

tactic: simp [zero_dvd_iff.1 h]
state_before: case inl
b : ℕ
h : 0 ∣ b
⊢ φ 0 ∣ φ b
state_after: no goals

tactic: simp
state_before: case inr.inl
a : ℕ
ha0 : a ≠ 0
h : a ∣ 0
⊢ φ a ∣ φ 0
state_after: no goals
Theorem: Filter.HasBasis.isBasis
File: Mathlib/Order/Filter/Bases.lean

tactic: simpa only [h.mem_iff] using inter_mem (h.mem_of_mem hi) (h.mem_of_mem hj)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
l l' : Filter α
p : ι → Prop
s : ι → Set α
t : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
h : l.HasBasis p s
i✝ j✝ : ι
hi : p i✝
hj : p j✝
⊢ ∃ k, p k ∧ s k ⊆ s i✝ ∩ s j✝
state_after: no goals
Theorem: CategoryTheory.IsVanKampenColimit.precompose_isIso_iff
File: Mathlib/CategoryTheory/Limits/VanKampen.lean

tactic: simp
state_before: J : Type v'
inst✝⁴ : Category.{u', v'} J
C : Type u
inst✝³ : Category.{v, u} C
K : Type u_1
inst✝² : Category.{?u.42972, u_1} K
D : Type u_2
inst✝¹ : Category.{?u.42979, u_2} D
F G : J ⥤ C
α : F ⟶ G
inst✝ : IsIso α
c : Cocone G
hc : IsVanKampenColimit ((Cocones.precompose α).obj c)
⊢ ∀ (j : J),
    ((Cocones.precompose (inv α)).obj ((Cocones.precompose α).obj c)).ι.app j ≫
        (Iso.refl ((Cocones.precompose (inv α)).obj ((Cocones.precompose α).obj c)).pt).hom =
      c.ι.app j
state_after: no goals
Theorem: ProbabilityTheory.iCondIndep_iff_iCondIndepSets
File: Mathlib/Probability/Independence/Conditional.lean

tactic: simp only [iCondIndep, iCondIndepSets, kernel.iIndep]
state_before: Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
m : ι → MeasurableSpace Ω
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
⊢ iCondIndep m' hm' m μ ↔ iCondIndepSets m' hm' (fun x => {s | MeasurableSet s}) μ
state_after: no goals
Theorem: Set.preimage_singleton_false
File: Mathlib/Data/Set/Image.lean

tactic: ext
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f : α → β
g : β → γ
p : α → Prop
⊢ p ⁻¹' {False} = {a | ¬p a}
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f : α → β
g : β → γ
p : α → Prop
x✝ : α
⊢ x✝ ∈ p ⁻¹' {False} ↔ x✝ ∈ {a | ¬p a}

tactic: simp
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f : α → β
g : β → γ
p : α → Prop
x✝ : α
⊢ x✝ ∈ p ⁻¹' {False} ↔ x✝ ∈ {a | ¬p a}
state_after: no goals
Theorem: Int.floor_natCast
File: Mathlib/Algebra/Order/Floor.lean

tactic: rw [le_floor, ← cast_natCast, cast_le]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a✝ : α
n : ℕ
a : ℤ
⊢ a ≤ ⌊↑n⌋ ↔ a ≤ ↑n
state_after: no goals
Theorem: ProbabilityTheory.kernel.finset_sum_apply
File: Mathlib/Probability/Kernel/Basic.lean

tactic: rw [coe_finset_sum, Finset.sum_apply]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
I : Finset ι
κ : ι → ↥(kernel α β)
a : α
⊢ (∑ i ∈ I, κ i) a = ∑ i ∈ I, (κ i) a
state_after: no goals
Theorem: SimpleGraph.singletonSubgraph_fst_le_subgraphOfAdj
File: Mathlib/Combinatorics/SimpleGraph/Subgraph.lean

tactic: simp
state_before: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G' : SimpleGraph W
u v : V
h : G.Adj u v
⊢ G.singletonSubgraph u ≤ G.subgraphOfAdj h
state_after: no goals
Theorem: Monoid.Coprod.prod_mk_fst_snd
File: Mathlib/GroupTheory/Coprod/Basic.lean

tactic: rw [← fst_prod_snd, MonoidHom.prod_apply]
state_before: M : Type u_1
N : Type u_2
inst✝¹ : Monoid M
inst✝ : Monoid N
x : M ∗ N
⊢ (fst x, snd x) = toProd x
state_after: no goals
Theorem: OrderIso.ofRelIsoLT_toRelIsoLT
File: Mathlib/Order/Hom/Basic.lean

tactic: ext
state_before: F : Type u_1
α✝ : Type u_2
β✝ : Type u_3
γ : Type u_4
δ : Type u_5
inst✝⁴ : Preorder α✝
inst✝³ : Preorder β✝
inst✝² : Preorder γ
α : Type u_6
β : Type u_7
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
e : α ≃o β
⊢ ofRelIsoLT e.toRelIsoLT = e
state_after: case h.h
F : Type u_1
α✝ : Type u_2
β✝ : Type u_3
γ : Type u_4
δ : Type u_5
inst✝⁴ : Preorder α✝
inst✝³ : Preorder β✝
inst✝² : Preorder γ
α : Type u_6
β : Type u_7
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
e : α ≃o β
x✝ : α
⊢ (ofRelIsoLT e.toRelIsoLT) x✝ = e x✝

tactic: simp
state_before: case h.h
F : Type u_1
α✝ : Type u_2
β✝ : Type u_3
γ : Type u_4
δ : Type u_5
inst✝⁴ : Preorder α✝
inst✝³ : Preorder β✝
inst✝² : Preorder γ
α : Type u_6
β : Type u_7
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
e : α ≃o β
x✝ : α
⊢ (ofRelIsoLT e.toRelIsoLT) x✝ = e x✝
state_after: no goals
Theorem: Real.lt_rpow_inv_iff_of_neg
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: rw [← rpow_lt_rpow_iff_of_neg _ hx hz, rpow_inv_rpow _ hz.ne] <;> positivity
state_before: x y z : ℝ
n : ℕ
hx : 0 < x
hy : 0 < y
hz : z < 0
⊢ x < y ^ z⁻¹ ↔ y < x ^ z
state_after: no goals
Theorem: GroupAlgebra.mul_average_right
File: Mathlib/RepresentationTheory/Invariants.lean

tactic: simp only [mul_one, Finset.sum_mul, Algebra.smul_mul_assoc, average, MonoidAlgebra.of_apply,
  Finset.sum_congr, MonoidAlgebra.single_mul_single]
state_before: k : Type u_1
G : Type u_2
inst✝³ : CommSemiring k
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
g : G
⊢ average k G * Finsupp.single g 1 = average k G
state_after: k : Type u_1
G : Type u_2
inst✝³ : CommSemiring k
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
g : G
⊢ ⅟↑(Fintype.card G) • ∑ x : G, single (x * g) 1 = ⅟↑(Fintype.card G) • ∑ x : G, single x 1

tactic: set f : G → MonoidAlgebra k G := fun x => Finsupp.single x 1
state_before: k : Type u_1
G : Type u_2
inst✝³ : CommSemiring k
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
g : G
⊢ ⅟↑(Fintype.card G) • ∑ x : G, single (x * g) 1 = ⅟↑(Fintype.card G) • ∑ x : G, single x 1
state_after: k : Type u_1
G : Type u_2
inst✝³ : CommSemiring k
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
g : G
f : G → MonoidAlgebra k G := fun x => Finsupp.single x 1
⊢ ⅟↑(Fintype.card G) • ∑ x : G, single (x * g) 1 = ⅟↑(Fintype.card G) • Finset.univ.sum f

tactic: show ⅟ (Fintype.card G : k) • ∑ x : G, f (x * g) = ⅟ (Fintype.card G : k) • ∑ x : G, f x
state_before: k : Type u_1
G : Type u_2
inst✝³ : CommSemiring k
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
g : G
f : G → MonoidAlgebra k G := fun x => Finsupp.single x 1
⊢ ⅟↑(Fintype.card G) • ∑ x : G, single (x * g) 1 = ⅟↑(Fintype.card G) • Finset.univ.sum f
state_after: k : Type u_1
G : Type u_2
inst✝³ : CommSemiring k
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
g : G
f : G → MonoidAlgebra k G := fun x => Finsupp.single x 1
⊢ ⅟↑(Fintype.card G) • ∑ x : G, f (x * g) = ⅟↑(Fintype.card G) • ∑ x : G, f x

tactic: rw [Function.Bijective.sum_comp (Group.mulRight_bijective g) _]
state_before: k : Type u_1
G : Type u_2
inst✝³ : CommSemiring k
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
g : G
f : G → MonoidAlgebra k G := fun x => Finsupp.single x 1
⊢ ⅟↑(Fintype.card G) • ∑ x : G, f (x * g) = ⅟↑(Fintype.card G) • ∑ x : G, f x
state_after: no goals
Theorem: Complex.hasStrictDerivAt_sinh
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Deriv.lean

tactic: simp only [cosh, div_eq_mul_inv]
state_before: x : ℂ
⊢ HasStrictDerivAt sinh (cosh x) x
state_after: x : ℂ
⊢ HasStrictDerivAt sinh ((cexp x + cexp (-x)) * 2⁻¹) x

tactic: convert ((hasStrictDerivAt_exp x).sub (hasStrictDerivAt_id x).neg.cexp).mul_const (2 : ℂ)⁻¹
  using 1
state_before: x : ℂ
⊢ HasStrictDerivAt sinh ((cexp x + cexp (-x)) * 2⁻¹) x
state_after: case h.e'_7
x : ℂ
⊢ (cexp x + cexp (-x)) * 2⁻¹ = (cexp x - cexp (-id x) * -1) * 2⁻¹

tactic: rw [id, mul_neg_one, sub_eq_add_neg, neg_neg]
state_before: case h.e'_7
x : ℂ
⊢ (cexp x + cexp (-x)) * 2⁻¹ = (cexp x - cexp (-id x) * -1) * 2⁻¹
state_after: no goals
Theorem: multiplicity.pow
File: Mathlib/RingTheory/Multiplicity.lean

tactic: simp [one_right hp.not_unit]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
p a : α
hp : Prime p
⊢ multiplicity p (a ^ 0) = 0 • multiplicity p a
state_after: no goals

tactic: simp [_root_.pow_succ, succ_nsmul, pow hp, multiplicity.mul hp]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
p a : α
hp : Prime p
k : ℕ
⊢ multiplicity p (a ^ k.succ) = k.succ • multiplicity p a
state_after: no goals
Theorem: Polynomial.support_monomial
File: Mathlib/Algebra/Polynomial/Basic.lean

tactic: rw [← ofFinsupp_single, support]
state_before: R : Type u
a✝ b : R
m n✝ : ℕ
inst✝ : Semiring R
p q : R[X]
n : ℕ
a : R
H : a ≠ 0
⊢ ((monomial n) a).support = {n}
state_after: R : Type u
a✝ b : R
m n✝ : ℕ
inst✝ : Semiring R
p q : R[X]
n : ℕ
a : R
H : a ≠ 0
⊢ (match { toFinsupp := Finsupp.single n a } with
    | { toFinsupp := p } => p.support) =
    {n}

tactic: exact Finsupp.support_single_ne_zero _ H
state_before: R : Type u
a✝ b : R
m n✝ : ℕ
inst✝ : Semiring R
p q : R[X]
n : ℕ
a : R
H : a ≠ 0
⊢ (match { toFinsupp := Finsupp.single n a } with
    | { toFinsupp := p } => p.support) =
    {n}
state_after: no goals
Theorem: Orientation.oangle_zero_left
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Basic.lean

tactic: simp [oangle]
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 : V
⊢ o.oangle 0 x = 0
state_after: no goals
Theorem: ExistsContDiffBumpBase.w_integral
File: Mathlib/Analysis/Calculus/BumpFunction/FiniteDimension.lean

tactic: simp_rw [w, integral_smul]
state_before: E : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : FiniteDimensional ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
D : ℝ
Dpos : 0 < D
⊢ ∫ (x : E), w D x ∂μ = 1
state_after: E : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : FiniteDimensional ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
D : ℝ
Dpos : 0 < D
⊢ ((∫ (x : E), u x ∂μ) * |D| ^ finrank ℝ E)⁻¹ • ∫ (a : E), u (D⁻¹ • a) ∂μ = 1

tactic: rw [integral_comp_inv_smul_of_nonneg μ (u : E → ℝ) Dpos.le, abs_of_nonneg Dpos.le, mul_comm]
state_before: E : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : FiniteDimensional ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
D : ℝ
Dpos : 0 < D
⊢ ((∫ (x : E), u x ∂μ) * |D| ^ finrank ℝ E)⁻¹ • ∫ (a : E), u (D⁻¹ • a) ∂μ = 1
state_after: E : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : FiniteDimensional ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
D : ℝ
Dpos : 0 < D
⊢ (D ^ finrank ℝ E * ∫ (x : E), u x ∂μ)⁻¹ • D ^ finrank ℝ E • ∫ (x : E), u x ∂μ = 1

tactic: field_simp [(u_int_pos E).ne']
state_before: E : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : FiniteDimensional ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
D : ℝ
Dpos : 0 < D
⊢ (D ^ finrank ℝ E * ∫ (x : E), u x ∂μ)⁻¹ • D ^ finrank ℝ E • ∫ (x : E), u x ∂μ = 1
state_after: no goals
Theorem: exists_rat_gt
File: Mathlib/Algebra/Order/Archimedean.lean

tactic: rwa [Rat.cast_natCast]
state_before: α : Type u_1
M : Type u_2
inst✝¹ : LinearOrderedField α
inst✝ : Archimedean α
x✝ y ε x : α
n : ℕ
h : x < ↑n
⊢ x < ↑↑n
state_after: no goals
Theorem: PMF.mem_support_bind_iff
File: Mathlib/Probability/ProbabilityMassFunction/Monad.lean

tactic: simp only [support_bind, Set.mem_iUnion, Set.mem_setOf_eq, exists_prop]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
p : PMF α
f : α → PMF β
g : β → PMF γ
b : β
⊢ b ∈ (p.bind f).support ↔ ∃ a ∈ p.support, b ∈ (f a).support
state_after: no goals
Theorem: Trivialization.continuousAt_of_comp_right
File: Mathlib/Topology/FiberBundle/Trivialization.lean

tactic: have hez : z ∈ e.toPartialEquiv.symm.target := by
  rw [PartialEquiv.symm_target, e.mem_source]
  exact he
state_before: ι : Type u_1
B : Type u_2
F : Type u_3
E : B → Type u_4
Z : Type u_5
inst✝⁴ : TopologicalSpace B
inst✝³ : TopologicalSpace F
proj : Z → B
inst✝² : TopologicalSpace Z
inst✝¹ : TopologicalSpace (TotalSpace F E)
e✝ : Trivialization F proj
x : Z
X : Type u_6
inst✝ : TopologicalSpace X
f : Z → X
z : Z
e : Trivialization F proj
he : proj z ∈ e.baseSet
hf : ContinuousAt (f ∘ ↑e.symm) (↑e z)
⊢ ContinuousAt f z
state_after: ι : Type u_1
B : Type u_2
F : Type u_3
E : B → Type u_4
Z : Type u_5
inst✝⁴ : TopologicalSpace B
inst✝³ : TopologicalSpace F
proj : Z → B
inst✝² : TopologicalSpace Z
inst✝¹ : TopologicalSpace (TotalSpace F E)
e✝ : Trivialization F proj
x : Z
X : Type u_6
inst✝ : TopologicalSpace X
f : Z → X
z : Z
e : Trivialization F proj
he : proj z ∈ e.baseSet
hf : ContinuousAt (f ∘ ↑e.symm) (↑e z)
hez : z ∈ e.symm.target
⊢ ContinuousAt f z

tactic: rwa [e.toPartialHomeomorph.symm.continuousAt_iff_continuousAt_comp_right hez,
  PartialHomeomorph.symm_symm]
state_before: ι : Type u_1
B : Type u_2
F : Type u_3
E : B → Type u_4
Z : Type u_5
inst✝⁴ : TopologicalSpace B
inst✝³ : TopologicalSpace F
proj : Z → B
inst✝² : TopologicalSpace Z
inst✝¹ : TopologicalSpace (TotalSpace F E)
e✝ : Trivialization F proj
x : Z
X : Type u_6
inst✝ : TopologicalSpace X
f : Z → X
z : Z
e : Trivialization F proj
he : proj z ∈ e.baseSet
hf : ContinuousAt (f ∘ ↑e.symm) (↑e z)
hez : z ∈ e.symm.target
⊢ ContinuousAt f z
state_after: no goals

tactic: rw [PartialEquiv.symm_target, e.mem_source]
state_before: ι : Type u_1
B : Type u_2
F : Type u_3
E : B → Type u_4
Z : Type u_5
inst✝⁴ : TopologicalSpace B
inst✝³ : TopologicalSpace F
proj : Z → B
inst✝² : TopologicalSpace Z
inst✝¹ : TopologicalSpace (TotalSpace F E)
e✝ : Trivialization F proj
x : Z
X : Type u_6
inst✝ : TopologicalSpace X
f : Z → X
z : Z
e : Trivialization F proj
he : proj z ∈ e.baseSet
hf : ContinuousAt (f ∘ ↑e.symm) (↑e z)
⊢ z ∈ e.symm.target
state_after: ι : Type u_1
B : Type u_2
F : Type u_3
E : B → Type u_4
Z : Type u_5
inst✝⁴ : TopologicalSpace B
inst✝³ : TopologicalSpace F
proj : Z → B
inst✝² : TopologicalSpace Z
inst✝¹ : TopologicalSpace (TotalSpace F E)
e✝ : Trivialization F proj
x : Z
X : Type u_6
inst✝ : TopologicalSpace X
f : Z → X
z : Z
e : Trivialization F proj
he : proj z ∈ e.baseSet
hf : ContinuousAt (f ∘ ↑e.symm) (↑e z)
⊢ proj z ∈ e.baseSet

tactic: exact he
state_before: ι : Type u_1
B : Type u_2
F : Type u_3
E : B → Type u_4
Z : Type u_5
inst✝⁴ : TopologicalSpace B
inst✝³ : TopologicalSpace F
proj : Z → B
inst✝² : TopologicalSpace Z
inst✝¹ : TopologicalSpace (TotalSpace F E)
e✝ : Trivialization F proj
x : Z
X : Type u_6
inst✝ : TopologicalSpace X
f : Z → X
z : Z
e : Trivialization F proj
he : proj z ∈ e.baseSet
hf : ContinuousAt (f ∘ ↑e.symm) (↑e z)
⊢ proj z ∈ e.baseSet
state_after: no goals
Theorem: Polynomial.isNilpotent_pow_X_mul_C_of_isNilpotent
File: Mathlib/RingTheory/Polynomial/Nilpotent.lean

tactic: rw [commute_X_pow]
state_before: R : Type u_1
r : R
inst✝ : Semiring R
P : R[X]
n : ℕ
hnil : IsNilpotent r
⊢ IsNilpotent (X ^ n * C r)
state_after: R : Type u_1
r : R
inst✝ : Semiring R
P : R[X]
n : ℕ
hnil : IsNilpotent r
⊢ IsNilpotent (C r * X ^ n)

tactic: exact isNilpotent_C_mul_pow_X_of_isNilpotent n hnil
state_before: R : Type u_1
r : R
inst✝ : Semiring R
P : R[X]
n : ℕ
hnil : IsNilpotent r
⊢ IsNilpotent (C r * X ^ n)
state_after: no goals
Theorem: CharP.neg_one_pow_char_pow
File: Mathlib/Algebra/CharP/Basic.lean

tactic: rw [eq_neg_iff_add_eq_zero]
state_before: R : Type u_1
inst✝² : Ring R
p n : ℕ
inst✝¹ : CharP R p
inst✝ : Fact (Nat.Prime p)
⊢ (-1) ^ p ^ n = -1
state_after: R : Type u_1
inst✝² : Ring R
p n : ℕ
inst✝¹ : CharP R p
inst✝ : Fact (Nat.Prime p)
⊢ (-1) ^ p ^ n + 1 = 0

tactic: nth_rw 2 [← one_pow (p ^ n)]
state_before: R : Type u_1
inst✝² : Ring R
p n : ℕ
inst✝¹ : CharP R p
inst✝ : Fact (Nat.Prime p)
⊢ (-1) ^ p ^ n + 1 = 0
state_after: R : Type u_1
inst✝² : Ring R
p n : ℕ
inst✝¹ : CharP R p
inst✝ : Fact (Nat.Prime p)
⊢ (-1) ^ p ^ n + 1 ^ p ^ n = 0

tactic: rw [← add_pow_char_pow_of_commute R _ _ (Commute.one_right _), add_left_neg,
  zero_pow (pow_ne_zero _ (Fact.out (p := Nat.Prime p)).ne_zero)]
state_before: R : Type u_1
inst✝² : Ring R
p n : ℕ
inst✝¹ : CharP R p
inst✝ : Fact (Nat.Prime p)
⊢ (-1) ^ p ^ n + 1 ^ p ^ n = 0
state_after: no goals
Theorem: ENNReal.ofReal_one
File: Mathlib/Data/ENNReal/Basic.lean

tactic: simp [ENNReal.ofReal]
state_before: α : Type u_1
a b c d : ℝ≥0∞
r p q : ℝ≥0
⊢ ENNReal.ofReal 1 = 1
state_after: no goals