1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: WittVector.RecursionBase.solution_nonzero
File: Mathlib/RingTheory/WittVector/FrobeniusFractionField.lean

tactic: intro h
state_before: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝¹ : Field k
inst✝ : IsAlgClosed k
a₁ a₂ : 𝕎 k
ha₁ : a₁.coeff 0 ≠ 0
ha₂ : a₂.coeff 0 ≠ 0
⊢ solution p a₁ a₂ ≠ 0
state_after: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝¹ : Field k
inst✝ : IsAlgClosed k
a₁ a₂ : 𝕎 k
ha₁ : a₁.coeff 0 ≠ 0
ha₂ : a₂.coeff 0 ≠ 0
h : solution p a₁ a₂ = 0
⊢ False

tactic: have := solution_spec p a₁ a₂
state_before: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝¹ : Field k
inst✝ : IsAlgClosed k
a₁ a₂ : 𝕎 k
ha₁ : a₁.coeff 0 ≠ 0
ha₂ : a₂.coeff 0 ≠ 0
h : solution p a₁ a₂ = 0
⊢ False
state_after: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝¹ : Field k
inst✝ : IsAlgClosed k
a₁ a₂ : 𝕎 k
ha₁ : a₁.coeff 0 ≠ 0
ha₂ : a₂.coeff 0 ≠ 0
h : solution p a₁ a₂ = 0
this : solution p a₁ a₂ ^ (p - 1) = a₂.coeff 0 / a₁.coeff 0
⊢ False

tactic: rw [h, zero_pow] at this
state_before: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝¹ : Field k
inst✝ : IsAlgClosed k
a₁ a₂ : 𝕎 k
ha₁ : a₁.coeff 0 ≠ 0
ha₂ : a₂.coeff 0 ≠ 0
h : solution p a₁ a₂ = 0
this : solution p a₁ a₂ ^ (p - 1) = a₂.coeff 0 / a₁.coeff 0
⊢ False
state_after: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝¹ : Field k
inst✝ : IsAlgClosed k
a₁ a₂ : 𝕎 k
ha₁ : a₁.coeff 0 ≠ 0
ha₂ : a₂.coeff 0 ≠ 0
h : solution p a₁ a₂ = 0
this : 0 = a₂.coeff 0 / a₁.coeff 0
⊢ False

p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝¹ : Field k
inst✝ : IsAlgClosed k
a₁ a₂ : 𝕎 k
ha₁ : a₁.coeff 0 ≠ 0
ha₂ : a₂.coeff 0 ≠ 0
h : solution p a₁ a₂ = 0
this : 0 ^ (p - 1) = a₂.coeff 0 / a₁.coeff 0
⊢ p - 1 ≠ 0

tactic: simpa [ha₁, ha₂] using _root_.div_eq_zero_iff.mp this.symm
state_before: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝¹ : Field k
inst✝ : IsAlgClosed k
a₁ a₂ : 𝕎 k
ha₁ : a₁.coeff 0 ≠ 0
ha₂ : a₂.coeff 0 ≠ 0
h : solution p a₁ a₂ = 0
this : 0 = a₂.coeff 0 / a₁.coeff 0
⊢ False
state_after: no goals

tactic: exact Nat.sub_ne_zero_of_lt hp.out.one_lt
state_before: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝¹ : Field k
inst✝ : IsAlgClosed k
a₁ a₂ : 𝕎 k
ha₁ : a₁.coeff 0 ≠ 0
ha₂ : a₂.coeff 0 ≠ 0
h : solution p a₁ a₂ = 0
this : 0 ^ (p - 1) = a₂.coeff 0 / a₁.coeff 0
⊢ p - 1 ≠ 0
state_after: no goals
Theorem: MonoidAlgebra.support_gen_of_gen
File: Mathlib/RingTheory/FiniteType.lean

tactic: refine le_antisymm le_top ?_
state_before: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
inst✝ : Monoid M
S : Set (MonoidAlgebra R M)
hS : adjoin R S = ⊤
⊢ adjoin R (⋃ f ∈ S, ⇑(of R M) '' ↑f.support) = ⊤
state_after: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
inst✝ : Monoid M
S : Set (MonoidAlgebra R M)
hS : adjoin R S = ⊤
⊢ ⊤ ≤ adjoin R (⋃ f ∈ S, ⇑(of R M) '' ↑f.support)

tactic: rw [← hS, adjoin_le_iff]
state_before: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
inst✝ : Monoid M
S : Set (MonoidAlgebra R M)
hS : adjoin R S = ⊤
⊢ ⊤ ≤ adjoin R (⋃ f ∈ S, ⇑(of R M) '' ↑f.support)
state_after: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
inst✝ : Monoid M
S : Set (MonoidAlgebra R M)
hS : adjoin R S = ⊤
⊢ S ⊆ ↑(adjoin R (⋃ f ∈ S, ⇑(of R M) '' ↑f.support))

tactic: intro f hf
state_before: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
inst✝ : Monoid M
S : Set (MonoidAlgebra R M)
hS : adjoin R S = ⊤
⊢ S ⊆ ↑(adjoin R (⋃ f ∈ S, ⇑(of R M) '' ↑f.support))
state_after: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
inst✝ : Monoid M
S : Set (MonoidAlgebra R M)
hS : adjoin R S = ⊤
f : MonoidAlgebra R M
hf : f ∈ S
⊢ f ∈ ↑(adjoin R (⋃ f ∈ S, ⇑(of R M) '' ↑f.support))

tactic: have hincl : (of R M '' f.support) ⊆
    Set.iUnion fun (g : MonoidAlgebra R M)
      => Set.iUnion fun (_ : g ∈ S) => (of R M '' g.support) := by
  intro s hs
  exact Set.mem_iUnion₂.2 ⟨f, ⟨hf, hs⟩⟩
state_before: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
inst✝ : Monoid M
S : Set (MonoidAlgebra R M)
hS : adjoin R S = ⊤
f : MonoidAlgebra R M
hf : f ∈ S
⊢ f ∈ ↑(adjoin R (⋃ f ∈ S, ⇑(of R M) '' ↑f.support))
state_after: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
inst✝ : Monoid M
S : Set (MonoidAlgebra R M)
hS : adjoin R S = ⊤
f : MonoidAlgebra R M
hf : f ∈ S
hincl : ⇑(of R M) '' ↑f.support ⊆ ⋃ g ∈ S, ⇑(of R M) '' ↑g.support
⊢ f ∈ ↑(adjoin R (⋃ f ∈ S, ⇑(of R M) '' ↑f.support))

tactic: exact adjoin_mono hincl (mem_adjoin_support f)
state_before: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
inst✝ : Monoid M
S : Set (MonoidAlgebra R M)
hS : adjoin R S = ⊤
f : MonoidAlgebra R M
hf : f ∈ S
hincl : ⇑(of R M) '' ↑f.support ⊆ ⋃ g ∈ S, ⇑(of R M) '' ↑g.support
⊢ f ∈ ↑(adjoin R (⋃ f ∈ S, ⇑(of R M) '' ↑f.support))
state_after: no goals

tactic: intro s hs
state_before: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
inst✝ : Monoid M
S : Set (MonoidAlgebra R M)
hS : adjoin R S = ⊤
f : MonoidAlgebra R M
hf : f ∈ S
⊢ ⇑(of R M) '' ↑f.support ⊆ ⋃ g ∈ S, ⇑(of R M) '' ↑g.support
state_after: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
inst✝ : Monoid M
S : Set (MonoidAlgebra R M)
hS : adjoin R S = ⊤
f : MonoidAlgebra R M
hf : f ∈ S
s : MonoidAlgebra R M
hs : s ∈ ⇑(of R M) '' ↑f.support
⊢ s ∈ ⋃ g ∈ S, ⇑(of R M) '' ↑g.support

tactic: exact Set.mem_iUnion₂.2 ⟨f, ⟨hf, hs⟩⟩
state_before: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
inst✝ : Monoid M
S : Set (MonoidAlgebra R M)
hS : adjoin R S = ⊤
f : MonoidAlgebra R M
hf : f ∈ S
s : MonoidAlgebra R M
hs : s ∈ ⇑(of R M) '' ↑f.support
⊢ s ∈ ⋃ g ∈ S, ⇑(of R M) '' ↑g.support
state_after: no goals
Theorem: antitoneOn_of_deriv_nonpos
File: Mathlib/Analysis/Calculus/MeanValue.lean

tactic: simpa only [zero_mul, sub_nonpos] using
  hD.image_sub_le_mul_sub_of_deriv_le hf hf' hf'_nonpos x hx y hy hxy
state_before: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
D : Set ℝ
hD : Convex ℝ D
f : ℝ → ℝ
hf : ContinuousOn f D
hf' : DifferentiableOn ℝ f (interior D)
hf'_nonpos : ∀ x ∈ interior D, deriv f x ≤ 0
x : ℝ
hx : x ∈ D
y : ℝ
hy : y ∈ D
hxy : x ≤ y
⊢ f y ≤ f x
state_after: no goals
Theorem: InnerProductSpaceable.innerProp
File: Mathlib/Analysis/InnerProductSpace/OfNorm.lean

tactic: intro x y
state_before: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
r : 𝕜
⊢ InnerProductSpaceable.innerProp' E r
state_after: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
r : 𝕜
x y : E
⊢ inner_ 𝕜 (r • x) y = (starRingEnd 𝕜) r * inner_ 𝕜 x y

tactic: rw [← re_add_im r, add_smul, add_left, real_prop _ x, ← smul_smul, real_prop _ _ y, I_prop,
  map_add, map_mul, conj_ofReal, conj_ofReal, conj_I]
state_before: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
r : 𝕜
x y : E
⊢ inner_ 𝕜 (r • x) y = (starRingEnd 𝕜) r * inner_ 𝕜 x y
state_after: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
r : 𝕜
x y : E
⊢ ↑(re r) * inner_ 𝕜 x y + ↑(im r) * (-I * inner_ 𝕜 x y) = (↑(re r) + ↑(im r) * -I) * inner_ 𝕜 x y

tactic: ring
state_before: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
r : 𝕜
x y : E
⊢ ↑(re r) * inner_ 𝕜 x y + ↑(im r) * (-I * inner_ 𝕜 x y) = (↑(re r) + ↑(im r) * -I) * inner_ 𝕜 x y
state_after: no goals
Theorem: MeasureTheory.Lp.simpleFunc.coeFn_nonneg
File: Mathlib/MeasureTheory/Function/SimpleFuncDenseLp.lean

tactic: rw [← Subtype.coe_le_coe, Lp.coeFn_nonneg, AddSubmonoid.coe_zero]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
p : ℝ≥0∞
μ : Measure α
G : Type u_7
inst✝ : NormedLatticeAddCommGroup G
f : ↥(simpleFunc G p μ)
⊢ 0 ≤ᶠ[ae μ] ↑↑↑f ↔ 0 ≤ f
state_after: no goals
Theorem: SetTheory.PGame.grundyValue_neg
File: Mathlib/SetTheory/Game/Nim.lean

tactic: rw [grundyValue_eq_iff_equiv_nim, neg_equiv_iff, neg_nim, ← grundyValue_eq_iff_equiv_nim]
state_before: G : PGame
inst✝ : G.Impartial
⊢ (-G).grundyValue = G.grundyValue
state_after: no goals
Theorem: NNReal.hasSum_geometric
File: Mathlib/Analysis/SpecificLimits/Basic.lean

tactic: apply NNReal.hasSum_coe.1
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
r : ℝ≥0
hr : r < 1
⊢ HasSum (fun n => r ^ n) (1 - r)⁻¹
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
r : ℝ≥0
hr : r < 1
⊢ HasSum (fun a => ↑(r ^ a)) ↑(1 - r)⁻¹

tactic: push_cast
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
r : ℝ≥0
hr : r < 1
⊢ HasSum (fun a => ↑(r ^ a)) ↑(1 - r)⁻¹
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
r : ℝ≥0
hr : r < 1
⊢ HasSum (fun a => ↑r ^ a) (↑(1 - r))⁻¹

tactic: rw [NNReal.coe_sub (le_of_lt hr)]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
r : ℝ≥0
hr : r < 1
⊢ HasSum (fun a => ↑r ^ a) (↑(1 - r))⁻¹
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
r : ℝ≥0
hr : r < 1
⊢ HasSum (fun a => ↑r ^ a) (↑1 - ↑r)⁻¹

tactic: exact hasSum_geometric_of_lt_one r.coe_nonneg hr
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
r : ℝ≥0
hr : r < 1
⊢ HasSum (fun a => ↑r ^ a) (↑1 - ↑r)⁻¹
state_after: no goals
Theorem: differentiableWithinAt_const_sub_iff
File: Mathlib/Analysis/Calculus/FDeriv/Add.lean

tactic: simp [sub_eq_add_neg]
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
c : F
⊢ DifferentiableWithinAt 𝕜 (fun y => c - f y) s x ↔ DifferentiableWithinAt 𝕜 f s x
state_after: no goals
Theorem: FiniteDimensional.complete
File: Mathlib/Topology/Algebra/Module/FiniteDimension.lean

tactic: set e := ContinuousLinearEquiv.ofFinrankEq (@finrank_fin_fun 𝕜 _ _ (finrank 𝕜 E)).symm
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : CompleteSpace 𝕜
inst✝⁶ : AddCommGroup E
inst✝⁵ : UniformSpace E
inst✝⁴ : T2Space E
inst✝³ : UniformAddGroup E
inst✝² : Module 𝕜 E
inst✝¹ : ContinuousSMul 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
⊢ CompleteSpace E
state_after: 𝕜 : Type u_1
E : Type u_2
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : CompleteSpace 𝕜
inst✝⁶ : AddCommGroup E
inst✝⁵ : UniformSpace E
inst✝⁴ : T2Space E
inst✝³ : UniformAddGroup E
inst✝² : Module 𝕜 E
inst✝¹ : ContinuousSMul 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
e : E ≃L[𝕜] Fin (finrank 𝕜 E) → 𝕜 := ContinuousLinearEquiv.ofFinrankEq ⋯
⊢ CompleteSpace E

tactic: have : UniformEmbedding e.toLinearEquiv.toEquiv.symm := e.symm.uniformEmbedding
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : CompleteSpace 𝕜
inst✝⁶ : AddCommGroup E
inst✝⁵ : UniformSpace E
inst✝⁴ : T2Space E
inst✝³ : UniformAddGroup E
inst✝² : Module 𝕜 E
inst✝¹ : ContinuousSMul 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
e : E ≃L[𝕜] Fin (finrank 𝕜 E) → 𝕜 := ContinuousLinearEquiv.ofFinrankEq ⋯
⊢ CompleteSpace E
state_after: 𝕜 : Type u_1
E : Type u_2
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : CompleteSpace 𝕜
inst✝⁶ : AddCommGroup E
inst✝⁵ : UniformSpace E
inst✝⁴ : T2Space E
inst✝³ : UniformAddGroup E
inst✝² : Module 𝕜 E
inst✝¹ : ContinuousSMul 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
e : E ≃L[𝕜] Fin (finrank 𝕜 E) → 𝕜 := ContinuousLinearEquiv.ofFinrankEq ⋯
this : UniformEmbedding ⇑e.toEquiv.symm
⊢ CompleteSpace E

tactic: exact (completeSpace_congr this).1 (by infer_instance)
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : CompleteSpace 𝕜
inst✝⁶ : AddCommGroup E
inst✝⁵ : UniformSpace E
inst✝⁴ : T2Space E
inst✝³ : UniformAddGroup E
inst✝² : Module 𝕜 E
inst✝¹ : ContinuousSMul 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
e : E ≃L[𝕜] Fin (finrank 𝕜 E) → 𝕜 := ContinuousLinearEquiv.ofFinrankEq ⋯
this : UniformEmbedding ⇑e.toEquiv.symm
⊢ CompleteSpace E
state_after: no goals

tactic: infer_instance
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : CompleteSpace 𝕜
inst✝⁶ : AddCommGroup E
inst✝⁵ : UniformSpace E
inst✝⁴ : T2Space E
inst✝³ : UniformAddGroup E
inst✝² : Module 𝕜 E
inst✝¹ : ContinuousSMul 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
e : E ≃L[𝕜] Fin (finrank 𝕜 E) → 𝕜 := ContinuousLinearEquiv.ofFinrankEq ⋯
this : UniformEmbedding ⇑e.toEquiv.symm
⊢ CompleteSpace (Fin (finrank 𝕜 E) → 𝕜)
state_after: no goals
Theorem: CategoryTheory.MonoidalCategory.rightUnitor_tensor_inv
File: Mathlib/CategoryTheory/Monoidal/Category.lean

tactic: simp
state_before: C✝ : Type u
𝒞 : Category.{v, u} C✝
inst✝² : MonoidalCategory C✝
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : MonoidalCategory C
U V W X✝ Y✝ Z X Y : C
⊢ (ρ_ (X ⊗ Y)).inv = X ◁ (ρ_ Y).inv ≫ (α_ X Y (𝟙_ C)).inv
state_after: no goals
Theorem: monovaryOn_iff_forall_smul_nonneg
File: Mathlib/Algebra/Order/Monovary.lean

tactic: simp_rw [smul_nonneg_iff_pos_imp_nonneg, sub_pos, sub_nonneg, forall_and]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : LinearOrderedRing α
inst✝² : LinearOrderedAddCommGroup β
inst✝¹ : Module α β
inst✝ : OrderedSMul α β
f : ι → α
g : ι → β
s : Set ι
a a₁ a₂ : α
b b₁ b₂ : β
⊢ MonovaryOn f g s ↔ ∀ ⦃i : ι⦄, i ∈ s → ∀ ⦃j : ι⦄, j ∈ s → 0 ≤ (f j - f i) • (g j - g i)
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : LinearOrderedRing α
inst✝² : LinearOrderedAddCommGroup β
inst✝¹ : Module α β
inst✝ : OrderedSMul α β
f : ι → α
g : ι → β
s : Set ι
a a₁ a₂ : α
b b₁ b₂ : β
⊢ MonovaryOn f g s ↔ (∀ x ∈ s, ∀ x_2 ∈ s, f x < f x_2 → g x ≤ g x_2) ∧ ∀ x ∈ s, ∀ x_2 ∈ s, g x < g x_2 → f x ≤ f x_2

tactic: exact (and_iff_right_of_imp MonovaryOn.symm).symm
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : LinearOrderedRing α
inst✝² : LinearOrderedAddCommGroup β
inst✝¹ : Module α β
inst✝ : OrderedSMul α β
f : ι → α
g : ι → β
s : Set ι
a a₁ a₂ : α
b b₁ b₂ : β
⊢ MonovaryOn f g s ↔ (∀ x ∈ s, ∀ x_2 ∈ s, f x < f x_2 → g x ≤ g x_2) ∧ ∀ x ∈ s, ∀ x_2 ∈ s, g x < g x_2 → f x ≤ f x_2
state_after: no goals
Theorem: LinearMap.nilRankAux_le
File: Mathlib/Algebra/Module/LinearMap/Polynomial.lean

tactic: apply Polynomial.natTrailingDegree_le_of_ne_zero
state_before: R : Type u_1
L : Type u_2
M : Type u_3
n : Type u_4
ι : Type u_5
ι' : Type u_6
ιM : Type u_7
inst✝¹² : CommRing R
inst✝¹¹ : AddCommGroup L
inst✝¹⁰ : Module R L
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
φ : L →ₗ[R] Module.End R M
inst✝⁷ : Fintype ι
inst✝⁶ : Fintype ι'
inst✝⁵ : Fintype ιM
inst✝⁴ : DecidableEq ι
inst✝³ : DecidableEq ι'
inst✝² : Module.Free R M
inst✝¹ : Module.Finite R M
b✝ : Basis ι R L
inst✝ : Nontrivial R
b : Basis ι R L
b' : Basis ι' R L
⊢ φ.nilRankAux b ≤ φ.nilRankAux b'
state_after: case h
R : Type u_1
L : Type u_2
M : Type u_3
n : Type u_4
ι : Type u_5
ι' : Type u_6
ιM : Type u_7
inst✝¹² : CommRing R
inst✝¹¹ : AddCommGroup L
inst✝¹⁰ : Module R L
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
φ : L →ₗ[R] Module.End R M
inst✝⁷ : Fintype ι
inst✝⁶ : Fintype ι'
inst✝⁵ : Fintype ιM
inst✝⁴ : DecidableEq ι
inst✝³ : DecidableEq ι'
inst✝² : Module.Free R M
inst✝¹ : Module.Finite R M
b✝ : Basis ι R L
inst✝ : Nontrivial R
b : Basis ι R L
b' : Basis ι' R L
⊢ (φ.polyCharpoly b).coeff (φ.nilRankAux b') ≠ 0

tactic: rw [Ne, (polyCharpoly_coeff_eq_zero_iff_of_basis φ b b' _).not]
state_before: case h
R : Type u_1
L : Type u_2
M : Type u_3
n : Type u_4
ι : Type u_5
ι' : Type u_6
ιM : Type u_7
inst✝¹² : CommRing R
inst✝¹¹ : AddCommGroup L
inst✝¹⁰ : Module R L
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
φ : L →ₗ[R] Module.End R M
inst✝⁷ : Fintype ι
inst✝⁶ : Fintype ι'
inst✝⁵ : Fintype ιM
inst✝⁴ : DecidableEq ι
inst✝³ : DecidableEq ι'
inst✝² : Module.Free R M
inst✝¹ : Module.Finite R M
b✝ : Basis ι R L
inst✝ : Nontrivial R
b : Basis ι R L
b' : Basis ι' R L
⊢ (φ.polyCharpoly b).coeff (φ.nilRankAux b') ≠ 0
state_after: case h
R : Type u_1
L : Type u_2
M : Type u_3
n : Type u_4
ι : Type u_5
ι' : Type u_6
ιM : Type u_7
inst✝¹² : CommRing R
inst✝¹¹ : AddCommGroup L
inst✝¹⁰ : Module R L
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
φ : L →ₗ[R] Module.End R M
inst✝⁷ : Fintype ι
inst✝⁶ : Fintype ι'
inst✝⁵ : Fintype ιM
inst✝⁴ : DecidableEq ι
inst✝³ : DecidableEq ι'
inst✝² : Module.Free R M
inst✝¹ : Module.Finite R M
b✝ : Basis ι R L
inst✝ : Nontrivial R
b : Basis ι R L
b' : Basis ι' R L
⊢ ¬(φ.polyCharpoly b').coeff (φ.nilRankAux b') = 0

tactic: apply polyCharpoly_coeff_nilRankAux_ne_zero
state_before: case h
R : Type u_1
L : Type u_2
M : Type u_3
n : Type u_4
ι : Type u_5
ι' : Type u_6
ιM : Type u_7
inst✝¹² : CommRing R
inst✝¹¹ : AddCommGroup L
inst✝¹⁰ : Module R L
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
φ : L →ₗ[R] Module.End R M
inst✝⁷ : Fintype ι
inst✝⁶ : Fintype ι'
inst✝⁵ : Fintype ιM
inst✝⁴ : DecidableEq ι
inst✝³ : DecidableEq ι'
inst✝² : Module.Free R M
inst✝¹ : Module.Finite R M
b✝ : Basis ι R L
inst✝ : Nontrivial R
b : Basis ι R L
b' : Basis ι' R L
⊢ ¬(φ.polyCharpoly b').coeff (φ.nilRankAux b') = 0
state_after: no goals
Theorem: Ordinal.lift_pred
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: cases' h with a e
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{v}
h : ∃ a, o = succ a
⊢ lift.{u, v} o.pred = (lift.{u, v} o).pred
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o a : Ordinal.{v}
e : o = succ a
⊢ lift.{u, v} o.pred = (lift.{u, v} o).pred

tactic: simp only [e, pred_succ, lift_succ]
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o a : Ordinal.{v}
e : o = succ a
⊢ lift.{u, v} o.pred = (lift.{u, v} o).pred
state_after: no goals

tactic: rw [pred_eq_iff_not_succ.2 h, pred_eq_iff_not_succ.2 (mt lift_is_succ.1 h)]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{v}
h : ¬∃ a, o = succ a
⊢ lift.{u, v} o.pred = (lift.{u, v} o).pred
state_after: no goals
Theorem: List.length_iota
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: simp [iota_eq_reverse_range']
state_before: n : Nat
⊢ (iota n).length = n
state_after: no goals
Theorem: finSuccAboveEquiv_symm_apply_last
File: Mathlib/Logic/Equiv/Fin.lean

tactic: rw [← Option.some_inj]
state_before: m n : ℕ
x : { x // x ≠ Fin.last n }
⊢ (finSuccAboveEquiv (Fin.last n)).symm x = (↑x).castLT ⋯
state_after: m n : ℕ
x : { x // x ≠ Fin.last n }
⊢ some ((finSuccAboveEquiv (Fin.last n)).symm x) = some ((↑x).castLT ⋯)

tactic: simpa [finSuccAboveEquiv, OrderIso.symm] using finSuccEquiv'_last_apply x.property
state_before: m n : ℕ
x : { x // x ≠ Fin.last n }
⊢ some ((finSuccAboveEquiv (Fin.last n)).symm x) = some ((↑x).castLT ⋯)
state_after: no goals
Theorem: Batteries.PairingHeapImp.Heap.size_merge_node
File: .lake/packages/batteries/Batteries/Data/PairingHeap.lean

tactic: unfold merge
state_before: α : Type u_1
le : α → α → Bool
a₁ : α
c₁ s₁ : Heap α
a₂ : α
c₂ s₂ : Heap α
⊢ (merge le (node a₁ c₁ s₁) (node a₂ c₂ s₂)).size = c₁.size + c₂.size + 2
state_after: α : Type u_1
le : α → α → Bool
a₁ : α
c₁ s₁ : Heap α
a₂ : α
c₂ s₂ : Heap α
⊢ (match node a₁ c₁ s₁, node a₂ c₂ s₂ with
      | nil, nil => nil
      | nil, node a₂ c₂ sibling => node a₂ c₂ nil
      | node a₁ c₁ sibling, nil => node a₁ c₁ nil
      | node a₁ c₁ sibling, node a₂ c₂ sibling_1 =>
        if le a₁ a₂ = true then node a₁ (node a₂ c₂ c₁) nil else node a₂ (node a₁ c₁ c₂) nil).size =
    c₁.size + c₂.size + 2

tactic: dsimp
state_before: α : Type u_1
le : α → α → Bool
a₁ : α
c₁ s₁ : Heap α
a₂ : α
c₂ s₂ : Heap α
⊢ (match node a₁ c₁ s₁, node a₂ c₂ s₂ with
      | nil, nil => nil
      | nil, node a₂ c₂ sibling => node a₂ c₂ nil
      | node a₁ c₁ sibling, nil => node a₁ c₁ nil
      | node a₁ c₁ sibling, node a₂ c₂ sibling_1 =>
        if le a₁ a₂ = true then node a₁ (node a₂ c₂ c₁) nil else node a₂ (node a₁ c₁ c₂) nil).size =
    c₁.size + c₂.size + 2
state_after: α : Type u_1
le : α → α → Bool
a₁ : α
c₁ s₁ : Heap α
a₂ : α
c₂ s₂ : Heap α
⊢ (if le a₁ a₂ = true then node a₁ (node a₂ c₂ c₁) nil else node a₂ (node a₁ c₁ c₂) nil).size = c₁.size + c₂.size + 2

tactic: split <;> simp_arith [size]
state_before: α : Type u_1
le : α → α → Bool
a₁ : α
c₁ s₁ : Heap α
a₂ : α
c₂ s₂ : Heap α
⊢ (if le a₁ a₂ = true then node a₁ (node a₂ c₂ c₁) nil else node a₂ (node a₁ c₁ c₂) nil).size = c₁.size + c₂.size + 2
state_after: no goals
Theorem: InnerProductSpace.Core.inner_sub_right
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: simp [sub_eq_add_neg, inner_add_right, inner_neg_right]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝² : _root_.RCLike 𝕜
inst✝¹ : AddCommGroup F
inst✝ : Module 𝕜 F
c : Core 𝕜 F
x y z : F
⊢ ⟪x, y - z⟫_𝕜 = ⟪x, y⟫_𝕜 - ⟪x, z⟫_𝕜
state_after: no goals
Theorem: ringExpChar.eq
File: Mathlib/Algebra/CharP/ExpChar.lean

tactic: cases' h with _ _ h _
state_before: R : Type u
inst✝ : Semiring R
q : ℕ
h : ExpChar R q
⊢ ringExpChar R = q
state_after: case zero
R : Type u
inst✝¹ : Semiring R
inst✝ : CharZero R
⊢ ringExpChar R = 1

case prime
R : Type u
inst✝ : Semiring R
q : ℕ
h : Nat.Prime q
hchar✝ : CharP R q
⊢ ringExpChar R = q

tactic: rw [ringExpChar, ringChar.eq R q]
state_before: case prime
R : Type u
inst✝ : Semiring R
q : ℕ
h : Nat.Prime q
hchar✝ : CharP R q
⊢ ringExpChar R = q
state_after: case prime
R : Type u
inst✝ : Semiring R
q : ℕ
h : Nat.Prime q
hchar✝ : CharP R q
⊢ max q 1 = q

tactic: exact Nat.max_eq_left h.one_lt.le
state_before: case prime
R : Type u
inst✝ : Semiring R
q : ℕ
h : Nat.Prime q
hchar✝ : CharP R q
⊢ max q 1 = q
state_after: no goals

tactic: haveI := CharP.ofCharZero R
state_before: case zero
R : Type u
inst✝¹ : Semiring R
inst✝ : CharZero R
⊢ ringExpChar R = 1
state_after: case zero
R : Type u
inst✝¹ : Semiring R
inst✝ : CharZero R
this : CharP R 0
⊢ ringExpChar R = 1

tactic: rw [ringExpChar, ringChar.eq R 0]
state_before: case zero
R : Type u
inst✝¹ : Semiring R
inst✝ : CharZero R
this : CharP R 0
⊢ ringExpChar R = 1
state_after: case zero
R : Type u
inst✝¹ : Semiring R
inst✝ : CharZero R
this : CharP R 0
⊢ max 0 1 = 1

tactic: rfl
state_before: case zero
R : Type u
inst✝¹ : Semiring R
inst✝ : CharZero R
this : CharP R 0
⊢ max 0 1 = 1
state_after: no goals