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

tactic: rcases zero_or_succ_or_limit (a - b) with (e | ⟨c, e⟩ | l)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : b ≤ a
⊢ b + (a - b) ≤ a
state_after: case inl
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : b ≤ a
e : a - b = 0
⊢ b + (a - b) ≤ a

case inr.inl.intro
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : b ≤ a
c : Ordinal.{u_4}
e : a - b = succ c
⊢ b + (a - b) ≤ a

case inr.inr
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : b ≤ a
l : (a - b).IsLimit
⊢ b + (a - b) ≤ a

tactic: simp only [e, add_zero, h]
state_before: case inl
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : b ≤ a
e : a - b = 0
⊢ b + (a - b) ≤ a
state_after: no goals

tactic: rw [e, add_succ, succ_le_iff, ← lt_sub, e]
state_before: case inr.inl.intro
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : b ≤ a
c : Ordinal.{u_4}
e : a - b = succ c
⊢ b + (a - b) ≤ a
state_after: case inr.inl.intro
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : b ≤ a
c : Ordinal.{u_4}
e : a - b = succ c
⊢ c < succ c

tactic: exact lt_succ c
state_before: case inr.inl.intro
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : b ≤ a
c : Ordinal.{u_4}
e : a - b = succ c
⊢ c < succ c
state_after: no goals

tactic: exact (add_le_of_limit l).2 fun c l => (lt_sub.1 l).le
state_before: case inr.inr
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : b ≤ a
l : (a - b).IsLimit
⊢ b + (a - b) ≤ a
state_after: no goals
Theorem: Multiset.sum_smul_sum
File: Mathlib/Algebra/Module/BigOperators.lean

tactic: induction' s using Multiset.induction with a s ih
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
R : Type u_5
M : Type u_6
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
r s✝ : R
x y : M
s : Multiset R
t : Multiset M
⊢ s.sum • t.sum = (map (fun p => p.1 • p.2) (s ×ˢ t)).sum
state_after: case empty
ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
R : Type u_5
M : Type u_6
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
r s : R
x y : M
t : Multiset M
⊢ sum 0 • t.sum = (map (fun p => p.1 • p.2) (0 ×ˢ t)).sum

case cons
ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
R : Type u_5
M : Type u_6
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
r s✝ : R
x y : M
t : Multiset M
a : R
s : Multiset R
ih : s.sum • t.sum = (map (fun p => p.1 • p.2) (s ×ˢ t)).sum
⊢ (a ::ₘ s).sum • t.sum = (map (fun p => p.1 • p.2) ((a ::ₘ s) ×ˢ t)).sum

tactic: simp
state_before: case empty
ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
R : Type u_5
M : Type u_6
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
r s : R
x y : M
t : Multiset M
⊢ sum 0 • t.sum = (map (fun p => p.1 • p.2) (0 ×ˢ t)).sum
state_after: no goals

tactic: simp [add_smul, ih, ← Multiset.smul_sum]
state_before: case cons
ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
R : Type u_5
M : Type u_6
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
r s✝ : R
x y : M
t : Multiset M
a : R
s : Multiset R
ih : s.sum • t.sum = (map (fun p => p.1 • p.2) (s ×ˢ t)).sum
⊢ (a ::ₘ s).sum • t.sum = (map (fun p => p.1 • p.2) ((a ::ₘ s) ×ˢ t)).sum
state_after: no goals
Theorem: finprod_eq_prod_plift_of_mulSupport_subset
File: Mathlib/Algebra/BigOperators/Finprod.lean

tactic: rw [Finite.mem_toFinset] at hx
state_before: G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
s : Finset (PLift α)
hs : mulSupport (f ∘ PLift.down) ⊆ ↑s
x : PLift α
hx : x ∈ ⋯.toFinset
⊢ x ∈ s
state_after: G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
s : Finset (PLift α)
hs : mulSupport (f ∘ PLift.down) ⊆ ↑s
x : PLift α
hx : x ∈ mulSupport (f ∘ PLift.down)
⊢ x ∈ s

tactic: exact hs hx
state_before: G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
s : Finset (PLift α)
hs : mulSupport (f ∘ PLift.down) ⊆ ↑s
x : PLift α
hx : x ∈ mulSupport (f ∘ PLift.down)
⊢ x ∈ s
state_after: no goals
Theorem: LieModule.map_weightSpace_eq
File: Mathlib/Algebra/Lie/Weights/Basic.lean

tactic: simp [map_weightSpace_eq_of_injective e.injective]
state_before: K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝¹¹ : CommRing R
inst✝¹⁰ : LieRing L
inst✝⁹ : LieAlgebra R L
inst✝⁸ : LieAlgebra.IsNilpotent R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
M₂ : Type u_5
inst✝³ : AddCommGroup M₂
inst✝² : Module R M₂
inst✝¹ : LieRingModule L M₂
inst✝ : LieModule R L M₂
χ : L → R
f : M →ₗ⁅R,L⁆ M₂
e : M ≃ₗ⁅R,L⁆ M₂
⊢ LieSubmodule.map e.toLieModuleHom (weightSpace M χ) = weightSpace M₂ χ
state_after: no goals
Theorem: Fin.castSucc_castPred
File: Mathlib/Data/Fin/Basic.lean

tactic: rcases exists_castSucc_eq.mpr h with ⟨y, rfl⟩
state_before: n m : ℕ
i : Fin (n + 1)
h : i ≠ last n
⊢ (i.castPred h).castSucc = i
state_after: case intro
n m : ℕ
y : Fin n
h : y.castSucc ≠ last n
⊢ (y.castSucc.castPred h).castSucc = y.castSucc

tactic: rw [castPred_castSucc]
state_before: case intro
n m : ℕ
y : Fin n
h : y.castSucc ≠ last n
⊢ (y.castSucc.castPred h).castSucc = y.castSucc
state_after: no goals
Theorem: HasDerivAtFilter.comp_hasFDerivAtFilter_of_eq
File: Mathlib/Analysis/Calculus/Deriv/Comp.lean

tactic: rw [hy] at hh₂
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 𝕜
𝕜' : Type u_1
inst✝³ : NontriviallyNormedField 𝕜'
inst✝² : NormedAlgebra 𝕜 𝕜'
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
s' t' : Set 𝕜'
h : 𝕜 → 𝕜'
h₁ : 𝕜 → 𝕜
h₂ : 𝕜' → 𝕜'
h' h₂' : 𝕜'
h₁' : 𝕜
g₁ : 𝕜' → F
g₁' : F
L' : Filter 𝕜'
y : 𝕜'
f : E → 𝕜'
f' : E →L[𝕜] 𝕜'
x : E
L'' : Filter E
hh₂ : HasDerivAtFilter h₂ h₂' y L'
hf : HasFDerivAtFilter f f' x L''
hL : Tendsto f L'' L'
hy : y = f x
⊢ HasFDerivAtFilter (h₂ ∘ f) (h₂' • f') x L''
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 𝕜
𝕜' : Type u_1
inst✝³ : NontriviallyNormedField 𝕜'
inst✝² : NormedAlgebra 𝕜 𝕜'
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
s' t' : Set 𝕜'
h : 𝕜 → 𝕜'
h₁ : 𝕜 → 𝕜
h₂ : 𝕜' → 𝕜'
h' h₂' : 𝕜'
h₁' : 𝕜
g₁ : 𝕜' → F
g₁' : F
L' : Filter 𝕜'
y : 𝕜'
f : E → 𝕜'
f' : E →L[𝕜] 𝕜'
x : E
L'' : Filter E
hh₂ : HasDerivAtFilter h₂ h₂' (f x) L'
hf : HasFDerivAtFilter f f' x L''
hL : Tendsto f L'' L'
hy : y = f x
⊢ HasFDerivAtFilter (h₂ ∘ f) (h₂' • f') x L''

tactic: exact hh₂.comp_hasFDerivAtFilter x hf 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 𝕜
𝕜' : Type u_1
inst✝³ : NontriviallyNormedField 𝕜'
inst✝² : NormedAlgebra 𝕜 𝕜'
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
s' t' : Set 𝕜'
h : 𝕜 → 𝕜'
h₁ : 𝕜 → 𝕜
h₂ : 𝕜' → 𝕜'
h' h₂' : 𝕜'
h₁' : 𝕜
g₁ : 𝕜' → F
g₁' : F
L' : Filter 𝕜'
y : 𝕜'
f : E → 𝕜'
f' : E →L[𝕜] 𝕜'
x : E
L'' : Filter E
hh₂ : HasDerivAtFilter h₂ h₂' (f x) L'
hf : HasFDerivAtFilter f f' x L''
hL : Tendsto f L'' L'
hy : y = f x
⊢ HasFDerivAtFilter (h₂ ∘ f) (h₂' • f') x L''
state_after: no goals
Theorem: Polynomial.prod_X_sub_C_nextCoeff
File: Mathlib/Algebra/Polynomial/BigOperators.lean

tactic: simpa using multiset_prod_X_sub_C_nextCoeff (s.1.map f)
state_before: R : Type u
ι : Type w
s✝ : Finset ι
inst✝ : CommRing R
s : Finset ι
f : ι → R
⊢ (∏ i ∈ s, (X - C (f i))).nextCoeff = -∑ i ∈ s, f i
state_after: no goals
Theorem: MultilinearMap.mkPiRing_zero
File: Mathlib/LinearAlgebra/Multilinear/Basic.lean

tactic: ext
state_before: R : Type uR
S : Type uS
ι : Type uι
n : ℕ
M : Fin n.succ → Type v
M₁ : ι → Type v₁
M₂ : Type v₂
M₃ : Type v₃
M' : Type v'
inst✝⁷ : CommSemiring R
inst✝⁶ : (i : ι) → AddCommMonoid (M₁ i)
inst✝⁵ : (i : Fin n.succ) → AddCommMonoid (M i)
inst✝⁴ : AddCommMonoid M₂
inst✝³ : (i : Fin n.succ) → Module R (M i)
inst✝² : (i : ι) → Module R (M₁ i)
inst✝¹ : Module R M₂
f f' : MultilinearMap R M₁ M₂
inst✝ : Fintype ι
⊢ MultilinearMap.mkPiRing R ι 0 = 0
state_after: case H
R : Type uR
S : Type uS
ι : Type uι
n : ℕ
M : Fin n.succ → Type v
M₁ : ι → Type v₁
M₂ : Type v₂
M₃ : Type v₃
M' : Type v'
inst✝⁷ : CommSemiring R
inst✝⁶ : (i : ι) → AddCommMonoid (M₁ i)
inst✝⁵ : (i : Fin n.succ) → AddCommMonoid (M i)
inst✝⁴ : AddCommMonoid M₂
inst✝³ : (i : Fin n.succ) → Module R (M i)
inst✝² : (i : ι) → Module R (M₁ i)
inst✝¹ : Module R M₂
f f' : MultilinearMap R M₁ M₂
inst✝ : Fintype ι
x✝ : ι → R
⊢ (MultilinearMap.mkPiRing R ι 0) x✝ = 0 x✝

tactic: rw [mkPiRing_apply, smul_zero, MultilinearMap.zero_apply]
state_before: case H
R : Type uR
S : Type uS
ι : Type uι
n : ℕ
M : Fin n.succ → Type v
M₁ : ι → Type v₁
M₂ : Type v₂
M₃ : Type v₃
M' : Type v'
inst✝⁷ : CommSemiring R
inst✝⁶ : (i : ι) → AddCommMonoid (M₁ i)
inst✝⁵ : (i : Fin n.succ) → AddCommMonoid (M i)
inst✝⁴ : AddCommMonoid M₂
inst✝³ : (i : Fin n.succ) → Module R (M i)
inst✝² : (i : ι) → Module R (M₁ i)
inst✝¹ : Module R M₂
f f' : MultilinearMap R M₁ M₂
inst✝ : Fintype ι
x✝ : ι → R
⊢ (MultilinearMap.mkPiRing R ι 0) x✝ = 0 x✝
state_after: no goals
Theorem: bernsteinPolynomial.map
File: Mathlib/RingTheory/Polynomial/Bernstein.lean

tactic: simp [bernsteinPolynomial]
state_before: R : Type u_1
inst✝¹ : CommRing R
S : Type u_2
inst✝ : CommRing S
f : R →+* S
n ν : ℕ
⊢ Polynomial.map f (bernsteinPolynomial R n ν) = bernsteinPolynomial S n ν
state_after: no goals
Theorem: CoalgHom.ext_of_ring
File: Mathlib/RingTheory/Coalgebra/Hom.lean

tactic: ext
state_before: R : Type u_1
A : Type u_2
B : Type u_3
C : Type u_4
D : Type u_5
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid A
inst✝¹⁰ : Module R A
inst✝⁹ : AddCommMonoid B
inst✝⁸ : Module R B
inst✝⁷ : AddCommMonoid C
inst✝⁶ : Module R C
inst✝⁵ : AddCommMonoid D
inst✝⁴ : Module R D
inst✝³ : CoalgebraStruct R A
inst✝² : CoalgebraStruct R B
inst✝¹ : CoalgebraStruct R C
inst✝ : CoalgebraStruct R D
f g : R →ₗc[R] A
h : f 1 = g 1
⊢ (fun x => ↑x) f = (fun x => ↑x) g
state_after: case h
R : Type u_1
A : Type u_2
B : Type u_3
C : Type u_4
D : Type u_5
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid A
inst✝¹⁰ : Module R A
inst✝⁹ : AddCommMonoid B
inst✝⁸ : Module R B
inst✝⁷ : AddCommMonoid C
inst✝⁶ : Module R C
inst✝⁵ : AddCommMonoid D
inst✝⁴ : Module R D
inst✝³ : CoalgebraStruct R A
inst✝² : CoalgebraStruct R B
inst✝¹ : CoalgebraStruct R C
inst✝ : CoalgebraStruct R D
f g : R →ₗc[R] A
h : f 1 = g 1
⊢ ((fun x => ↑x) f) 1 = ((fun x => ↑x) g) 1

tactic: assumption
state_before: case h
R : Type u_1
A : Type u_2
B : Type u_3
C : Type u_4
D : Type u_5
inst✝¹² : CommSemiring R
inst✝¹¹ : AddCommMonoid A
inst✝¹⁰ : Module R A
inst✝⁹ : AddCommMonoid B
inst✝⁸ : Module R B
inst✝⁷ : AddCommMonoid C
inst✝⁶ : Module R C
inst✝⁵ : AddCommMonoid D
inst✝⁴ : Module R D
inst✝³ : CoalgebraStruct R A
inst✝² : CoalgebraStruct R B
inst✝¹ : CoalgebraStruct R C
inst✝ : CoalgebraStruct R D
f g : R →ₗc[R] A
h : f 1 = g 1
⊢ ((fun x => ↑x) f) 1 = ((fun x => ↑x) g) 1
state_after: no goals
Theorem: Antivary.sum_smul_lt_sum_smul_comp_perm_iff
File: Mathlib/Algebra/Order/Rearrangement.lean

tactic: simp [(hfg.antivaryOn _).sum_smul_lt_sum_smul_comp_perm_iff fun _ _ ↦ mem_univ _]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝⁴ : LinearOrderedRing α
inst✝³ : LinearOrderedAddCommGroup β
inst✝² : Module α β
inst✝¹ : OrderedSMul α β
s : Finset ι
σ : Perm ι
f : ι → α
g : ι → β
inst✝ : Fintype ι
hfg : Antivary f g
⊢ ∑ i : ι, f i • g i < ∑ i : ι, f i • g (σ i) ↔ ¬Antivary f (g ∘ ⇑σ)
state_after: no goals
Theorem: Equiv.swap_apply_apply
File: Mathlib/GroupTheory/Perm/Basic.lean

tactic: rw [mul_swap_eq_swap_mul, mul_inv_cancel_right]
state_before: α : Type u
β : Type v
inst✝ : DecidableEq α
f : Perm α
x y : α
⊢ swap (f x) (f y) = f * swap x y * f⁻¹
state_after: no goals
Theorem: Polynomial.cyclotomic.irreducible_rat
File: Mathlib/RingTheory/Polynomial/Cyclotomic/Roots.lean

tactic: rw [← map_cyclotomic_int]
state_before: R : Type u_1
inst✝ : CommRing R
n✝ n : ℕ
hpos : 0 < n
⊢ Irreducible (cyclotomic n ℚ)
state_after: R : Type u_1
inst✝ : CommRing R
n✝ n : ℕ
hpos : 0 < n
⊢ Irreducible (map (Int.castRingHom ℚ) (cyclotomic n ℤ))

tactic: exact (IsPrimitive.irreducible_iff_irreducible_map_fraction_map (cyclotomic.isPrimitive n ℤ)).1
  (cyclotomic.irreducible hpos)
state_before: R : Type u_1
inst✝ : CommRing R
n✝ n : ℕ
hpos : 0 < n
⊢ Irreducible (map (Int.castRingHom ℚ) (cyclotomic n ℤ))
state_after: no goals
Theorem: Set.Subsingleton.image2
File: Mathlib/Data/Set/NAry.lean

tactic: rw [← image_prod]
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
f✝ f' : α → β → γ
g g' : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
hs : s.Subsingleton
ht : t.Subsingleton
f : α → β → γ
⊢ (Set.image2 f s t).Subsingleton
state_after: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
f✝ f' : α → β → γ
g g' : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
hs : s.Subsingleton
ht : t.Subsingleton
f : α → β → γ
⊢ ((fun x => f x.1 x.2) '' s ×ˢ t).Subsingleton

tactic: apply (hs.prod ht).image
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
f✝ f' : α → β → γ
g g' : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
hs : s.Subsingleton
ht : t.Subsingleton
f : α → β → γ
⊢ ((fun x => f x.1 x.2) '' s ×ˢ t).Subsingleton
state_after: no goals
Theorem: Polynomial.degree_cyclotomic
File: Mathlib/RingTheory/Polynomial/Cyclotomic/Basic.lean

tactic: rw [← map_cyclotomic_int]
state_before: n : ℕ
R : Type u_1
inst✝¹ : Ring R
inst✝ : Nontrivial R
⊢ (cyclotomic n R).degree = ↑n.totient
state_after: n : ℕ
R : Type u_1
inst✝¹ : Ring R
inst✝ : Nontrivial R
⊢ (map (Int.castRingHom R) (cyclotomic n ℤ)).degree = ↑n.totient

tactic: rw [degree_map_eq_of_leadingCoeff_ne_zero (Int.castRingHom R) _]
state_before: n : ℕ
R : Type u_1
inst✝¹ : Ring R
inst✝ : Nontrivial R
⊢ (map (Int.castRingHom R) (cyclotomic n ℤ)).degree = ↑n.totient
state_after: n : ℕ
R : Type u_1
inst✝¹ : Ring R
inst✝ : Nontrivial R
⊢ (cyclotomic n ℤ).degree = ↑n.totient

n : ℕ
R : Type u_1
inst✝¹ : Ring R
inst✝ : Nontrivial R
⊢ (Int.castRingHom R) (cyclotomic n ℤ).leadingCoeff ≠ 0

tactic: simp only [(int_cyclotomic_spec n).right.right, eq_intCast, Monic.leadingCoeff, Int.cast_one,
  Ne, not_false_iff, one_ne_zero]
state_before: n : ℕ
R : Type u_1
inst✝¹ : Ring R
inst✝ : Nontrivial R
⊢ (Int.castRingHom R) (cyclotomic n ℤ).leadingCoeff ≠ 0
state_after: no goals

tactic: cases' n with k
state_before: n : ℕ
R : Type u_1
inst✝¹ : Ring R
inst✝ : Nontrivial R
⊢ (cyclotomic n ℤ).degree = ↑n.totient
state_after: case zero
R : Type u_1
inst✝¹ : Ring R
inst✝ : Nontrivial R
⊢ (cyclotomic 0 ℤ).degree = ↑(Nat.totient 0)

case succ
R : Type u_1
inst✝¹ : Ring R
inst✝ : Nontrivial R
k : ℕ
⊢ (cyclotomic (k + 1) ℤ).degree = ↑(k + 1).totient

tactic: rw [← degree_cyclotomic' (Complex.isPrimitiveRoot_exp k.succ (Nat.succ_ne_zero k))]
state_before: case succ
R : Type u_1
inst✝¹ : Ring R
inst✝ : Nontrivial R
k : ℕ
⊢ (cyclotomic (k + 1) ℤ).degree = ↑(k + 1).totient
state_after: case succ
R : Type u_1
inst✝¹ : Ring R
inst✝ : Nontrivial R
k : ℕ
⊢ (cyclotomic (k + 1) ℤ).degree = (cyclotomic' k.succ ℂ).degree

tactic: exact (int_cyclotomic_spec k.succ).2.1
state_before: case succ
R : Type u_1
inst✝¹ : Ring R
inst✝ : Nontrivial R
k : ℕ
⊢ (cyclotomic (k + 1) ℤ).degree = (cyclotomic' k.succ ℂ).degree
state_after: no goals

tactic: simp only [cyclotomic, degree_one, dif_pos, Nat.totient_zero, CharP.cast_eq_zero]
state_before: case zero
R : Type u_1
inst✝¹ : Ring R
inst✝ : Nontrivial R
⊢ (cyclotomic 0 ℤ).degree = ↑(Nat.totient 0)
state_after: no goals
Theorem: Nat.one_mem_divisors
File: Mathlib/NumberTheory/Divisors.lean

tactic: simp
state_before: n : ℕ
⊢ 1 ∈ n.divisors ↔ n ≠ 0
state_after: no goals
Theorem: inv_mabs_le_inv
File: Mathlib/Algebra/Order/Group/Abs.lean

tactic: simpa using inv_mabs_le a⁻¹
state_before: α : Type u_1
inst✝² : Group α
inst✝¹ : LinearOrder α
a✝¹ b✝ : α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a✝ b c a : α
⊢ (mabs a)⁻¹ ≤ a⁻¹
state_after: no goals
Theorem: StarModule.selfAdjointPart_add_skewAdjointPart
File: Mathlib/Algebra/Star/Module.lean

tactic: simp only [smul_sub, selfAdjointPart_apply_coe, smul_add, skewAdjointPart_apply_coe,
  add_add_sub_cancel, invOf_two_smul_add_invOf_two_smul]
state_before: R : Type u_1
A : Type u_2
inst✝⁷ : Semiring R
inst✝⁶ : StarMul R
inst✝⁵ : TrivialStar R
inst✝⁴ : AddCommGroup A
inst✝³ : Module R A
inst✝² : StarAddMonoid A
inst✝¹ : StarModule R A
inst✝ : Invertible 2
x : A
⊢ ↑((selfAdjointPart R) x) + ↑((skewAdjointPart R) x) = x
state_after: no goals
Theorem: fib_isSol_fibRec
File: Mathlib/Data/Real/GoldenRatio.lean

tactic: rw [fibRec]
state_before: α : Type u_1
inst✝ : CommSemiring α
⊢ fibRec.IsSolution fun x => ↑(Nat.fib x)
state_after: α : Type u_1
inst✝ : CommSemiring α
⊢ { order := 2, coeffs := ![1, 1] }.IsSolution fun x => ↑(Nat.fib x)

tactic: intro n
state_before: α : Type u_1
inst✝ : CommSemiring α
⊢ { order := 2, coeffs := ![1, 1] }.IsSolution fun x => ↑(Nat.fib x)
state_after: α : Type u_1
inst✝ : CommSemiring α
n : ℕ
⊢ (fun x => ↑(Nat.fib x)) (n + { order := 2, coeffs := ![1, 1] }.order) =
    ∑ i : Fin { order := 2, coeffs := ![1, 1] }.order,
      { order := 2, coeffs := ![1, 1] }.coeffs i * (fun x => ↑(Nat.fib x)) (n + ↑i)

tactic: simp only
state_before: α : Type u_1
inst✝ : CommSemiring α
n : ℕ
⊢ (fun x => ↑(Nat.fib x)) (n + { order := 2, coeffs := ![1, 1] }.order) =
    ∑ i : Fin { order := 2, coeffs := ![1, 1] }.order,
      { order := 2, coeffs := ![1, 1] }.coeffs i * (fun x => ↑(Nat.fib x)) (n + ↑i)
state_after: α : Type u_1
inst✝ : CommSemiring α
n : ℕ
⊢ ↑(Nat.fib (n + 2)) = ∑ x : Fin 2, ![1, 1] x * ↑(Nat.fib (n + ↑x))

tactic: rw [Nat.fib_add_two, add_comm]
state_before: α : Type u_1
inst✝ : CommSemiring α
n : ℕ
⊢ ↑(Nat.fib (n + 2)) = ∑ x : Fin 2, ![1, 1] x * ↑(Nat.fib (n + ↑x))
state_after: α : Type u_1
inst✝ : CommSemiring α
n : ℕ
⊢ ↑(Nat.fib (n + 1) + Nat.fib n) = ∑ x : Fin 2, ![1, 1] x * ↑(Nat.fib (n + ↑x))

tactic: simp [Finset.sum_fin_eq_sum_range, Finset.sum_range_succ']
state_before: α : Type u_1
inst✝ : CommSemiring α
n : ℕ
⊢ ↑(Nat.fib (n + 1) + Nat.fib n) = ∑ x : Fin 2, ![1, 1] x * ↑(Nat.fib (n + ↑x))
state_after: no goals
Theorem: le_perfectClosure
File: Mathlib/FieldTheory/PurelyInseparable.lean

tactic: rw [isPurelyInseparable_iff_pow_mem F (ringExpChar F)] at h
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
L : IntermediateField F E
h : IsPurelyInseparable F ↥L
⊢ L ≤ perfectClosure F E
state_after: 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
L : IntermediateField F E
h : ∀ (x : ↥L), ∃ n, x ^ ringExpChar F ^ n ∈ (algebraMap F ↥L).range
⊢ L ≤ perfectClosure F E

tactic: intro x hx
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
L : IntermediateField F E
h : ∀ (x : ↥L), ∃ n, x ^ ringExpChar F ^ n ∈ (algebraMap F ↥L).range
⊢ L ≤ perfectClosure F E
state_after: 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
L : IntermediateField F E
h : ∀ (x : ↥L), ∃ n, x ^ ringExpChar F ^ n ∈ (algebraMap F ↥L).range
x : E
hx : x ∈ L
⊢ x ∈ perfectClosure F E

tactic: obtain ⟨n, y, hy⟩ := h ⟨x, hx⟩
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
L : IntermediateField F E
h : ∀ (x : ↥L), ∃ n, x ^ ringExpChar F ^ n ∈ (algebraMap F ↥L).range
x : E
hx : x ∈ L
⊢ x ∈ perfectClosure F E
state_after: case intro.intro
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
L : IntermediateField F E
h : ∀ (x : ↥L), ∃ n, x ^ ringExpChar F ^ n ∈ (algebraMap F ↥L).range
x : E
hx : x ∈ L
n : ℕ
y : F
hy : (algebraMap F ↥L) y = ⟨x, hx⟩ ^ ringExpChar F ^ n
⊢ x ∈ perfectClosure F E

tactic: exact ⟨n, y, congr_arg (algebraMap L E) hy⟩
state_before: case intro.intro
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
L : IntermediateField F E
h : ∀ (x : ↥L), ∃ n, x ^ ringExpChar F ^ n ∈ (algebraMap F ↥L).range
x : E
hx : x ∈ L
n : ℕ
y : F
hy : (algebraMap F ↥L) y = ⟨x, hx⟩ ^ ringExpChar F ^ n
⊢ x ∈ perfectClosure F E
state_after: no goals
Theorem: LocallyBoundedVariationOn.exists_monotoneOn_sub_monotoneOn
File: Mathlib/Analysis/BoundedVariation.lean

tactic: rcases eq_empty_or_nonempty s with (rfl | ⟨c, cs⟩)
state_before: α : Type u_1
inst✝¹ : LinearOrder α
E : Type u_2
inst✝ : PseudoEMetricSpace E
f : α → ℝ
s : Set α
h : LocallyBoundedVariationOn f s
⊢ ∃ p q, MonotoneOn p s ∧ MonotoneOn q s ∧ f = p - q
state_after: case inl
α : Type u_1
inst✝¹ : LinearOrder α
E : Type u_2
inst✝ : PseudoEMetricSpace E
f : α → ℝ
h : LocallyBoundedVariationOn f ∅
⊢ ∃ p q, MonotoneOn p ∅ ∧ MonotoneOn q ∅ ∧ f = p - q

case inr.intro
α : Type u_1
inst✝¹ : LinearOrder α
E : Type u_2
inst✝ : PseudoEMetricSpace E
f : α → ℝ
s : Set α
h : LocallyBoundedVariationOn f s
c : α
cs : c ∈ s
⊢ ∃ p q, MonotoneOn p s ∧ MonotoneOn q s ∧ f = p - q

tactic: exact ⟨f, 0, subsingleton_empty.monotoneOn _, subsingleton_empty.monotoneOn _,
  (sub_zero f).symm⟩
state_before: case inl
α : Type u_1
inst✝¹ : LinearOrder α
E : Type u_2
inst✝ : PseudoEMetricSpace E
f : α → ℝ
h : LocallyBoundedVariationOn f ∅
⊢ ∃ p q, MonotoneOn p ∅ ∧ MonotoneOn q ∅ ∧ f = p - q
state_after: no goals

tactic: exact ⟨_, _, variationOnFromTo.monotoneOn h cs, variationOnFromTo.sub_self_monotoneOn h cs,
  (sub_sub_cancel _ _).symm⟩
state_before: case inr.intro
α : Type u_1
inst✝¹ : LinearOrder α
E : Type u_2
inst✝ : PseudoEMetricSpace E
f : α → ℝ
s : Set α
h : LocallyBoundedVariationOn f s
c : α
cs : c ∈ s
⊢ ∃ p q, MonotoneOn p s ∧ MonotoneOn q s ∧ f = p - q
state_after: no goals
Theorem: Hyperreal.IsSt.isSt_st
File: Mathlib/Data/Real/Hyperreal.lean

tactic: rwa [hxr.st_eq]
state_before: x : ℝ*
r : ℝ
hxr : x.IsSt r
⊢ x.IsSt x.st
state_after: no goals