tasksource/leandojo huggingface dataset:
Theorem: Commute.isNilpotent_sub
File: Mathlib/RingTheory/Nilpotent.lean

tactic: rw [← neg_right_iff] at h_comm
state_before: R S : Type u
x y : R
inst✝ : Ring R
h_comm : Commute x y
hx : IsNilpotent x
hy : IsNilpotent y
⊢ IsNilpotent (x - y)

tactic: rw [← isNilpotent_neg_iff] at hy
state_before: R S : Type u
x y : R
inst✝ : Ring R
h_comm✝ : Commute x y
h_comm : Commute x (-y)
hx : IsNilpotent x
hy : IsNilpotent y
⊢ IsNilpotent (x - y)

tactic: rw [sub_eq_add_neg]
state_before: R S : Type u
x y : R
inst✝ : Ring R
h_comm✝ : Commute x y
h_comm : Commute x (-y)
hx : IsNilpotent x
hy : IsNilpotent (-y)
⊢ IsNilpotent (x - y)

tactic: exact h_comm.isNilpotent_add hx hy
state_before: R S : Type u
x y : R
inst✝ : Ring R
h_comm✝ : Commute x y
h_comm : Commute x (-y)
hx : IsNilpotent x
hy : IsNilpotent (-y)
⊢ IsNilpotent (x + -y)
Theorem: Subbimodule.smul_mem'
File: Mathlib/Algebra/Module/Bimodule.lean

tactic: suffices b • m = (1 : A) ⊗ₜ[R] b • m by exact this.symm ▸ p.smul_mem _ hm
state_before: R : Type u_4
A : Type u_2
B : Type u_1
M : Type u_3
inst✝¹¹ : CommSemiring R
inst✝¹⁰ : AddCommMonoid M
inst✝⁹ : Module R M
inst✝⁸ : Semiring A
inst✝⁷ : Semiring B
inst✝⁶ : Module A M
inst✝⁵ : Module B M
inst✝⁴ : Algebra R A
inst✝³ : Algebra R B
inst✝² : IsScalarTower R A M
inst✝¹ : IsScalarTower R B M
inst✝ : SMulCommClass A B M
p : Submodule (A ⊗[R] B) M
b : B
m : M
hm : m ∈ p
⊢ b • m ∈ p

tactic: simp [TensorProduct.Algebra.smul_def]
state_before: R : Type u_4
A : Type u_2
B : Type u_1
M : Type u_3
inst✝¹¹ : CommSemiring R
inst✝¹⁰ : AddCommMonoid M
inst✝⁹ : Module R M
inst✝⁸ : Semiring A
inst✝⁷ : Semiring B
inst✝⁶ : Module A M
inst✝⁵ : Module B M
inst✝⁴ : Algebra R A
inst✝³ : Algebra R B
inst✝² : IsScalarTower R A M
inst✝¹ : IsScalarTower R B M
inst✝ : SMulCommClass A B M
p : Submodule (A ⊗[R] B) M
b : B
m : M
hm : m ∈ p
⊢ b • m = 1 ⊗ₜ[R] b • m

tactic: exact this.symm ▸ p.smul_mem _ hm
state_before: R : Type u_4
A : Type u_2
B : Type u_1
M : Type u_3
inst✝¹¹ : CommSemiring R
inst✝¹⁰ : AddCommMonoid M
inst✝⁹ : Module R M
inst✝⁸ : Semiring A
inst✝⁷ : Semiring B
inst✝⁶ : Module A M
inst✝⁵ : Module B M
inst✝⁴ : Algebra R A
inst✝³ : Algebra R B
inst✝² : IsScalarTower R A M
inst✝¹ : IsScalarTower R B M
inst✝ : SMulCommClass A B M
p : Submodule (A ⊗[R] B) M
b : B
m : M
hm : m ∈ p
this : b • m = 1 ⊗ₜ[R] b • m
⊢ b • m ∈ p
Theorem: Cardinal.add_eq_left_iff
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: rw [max_le_iff]
state_before: a b : Cardinal
⊢ a + b = a ↔ max ℵ₀ b ≤ a ∨ b = 0

tactic: refine' ⟨fun h => _, _⟩
state_before: a b : Cardinal
⊢ a + b = a ↔ ℵ₀ ≤ a ∧ b ≤ a ∨ b = 0

tactic: cases' le_or_lt ℵ₀ a with ha ha
state_before: case refine'_1
a b : Cardinal
h : a + b = a
⊢ ℵ₀ ≤ a ∧ b ≤ a ∨ b = 0

tactic: right
state_before: case refine'_1.inr
a b : Cardinal
h : a + b = a
ha : a < ℵ₀
⊢ ℵ₀ ≤ a ∧ b ≤ a ∨ b = 0

tactic: rw [← h, add_lt_aleph0_iff, lt_aleph0, lt_aleph0] at ha
state_before: case refine'_1.inr.h
a b : Cardinal
h : a + b = a
ha : a < ℵ₀
⊢ b = 0

tactic: rcases ha with ⟨⟨n, rfl⟩, ⟨m, rfl⟩⟩
state_before: case refine'_1.inr.h
a b : Cardinal
h : a + b = a
ha : (∃ n, a = ↑n) ∧ ∃ n, b = ↑n
⊢ b = 0

tactic: norm_cast  at h⊢
state_before: case refine'_1.inr.h.intro.intro.intro
n m : ℕ
h : ↑n + ↑m = ↑n
⊢ ↑m = 0

tactic: rw [← add_right_inj, h, add_zero]
state_before: case refine'_1.inr.h.intro.intro.intro
n m : ℕ
h : n + m = n
⊢ m = 0

tactic: left
state_before: case refine'_1.inl
a b : Cardinal
h : a + b = a
ha : ℵ₀ ≤ a
⊢ ℵ₀ ≤ a ∧ b ≤ a ∨ b = 0

tactic: use ha
state_before: case refine'_1.inl.h
a b : Cardinal
h : a + b = a
ha : ℵ₀ ≤ a
⊢ ℵ₀ ≤ a ∧ b ≤ a

tactic: rw [← not_lt]
state_before: case refine'_1.inl.h
a b : Cardinal
h : a + b = a
ha : ℵ₀ ≤ a
⊢ b ≤ a

tactic: apply fun hb => ne_of_gt _ h
state_before: case refine'_1.inl.h
a b : Cardinal
h : a + b = a
ha : ℵ₀ ≤ a
⊢ ¬a < b

tactic: intro hb
state_before: a b : Cardinal
h : a + b = a
ha : ℵ₀ ≤ a
⊢ a < b → a < a + b

tactic: exact hb.trans_le (self_le_add_left b a)
state_before: a b : Cardinal
h : a + b = a
ha : ℵ₀ ≤ a
hb : a < b
⊢ a < a + b

tactic: rintro (⟨h1, h2⟩ | h3)
state_before: case refine'_2
a b : Cardinal
⊢ ℵ₀ ≤ a ∧ b ≤ a ∨ b = 0 → a + b = a

tactic: rw [add_eq_max h1, max_eq_left h2]
state_before: case refine'_2.inl.intro
a b : Cardinal
h1 : ℵ₀ ≤ a
h2 : b ≤ a
⊢ a + b = a

tactic: rw [h3, add_zero]
state_before: case refine'_2.inr
a b : Cardinal
h3 : b = 0
⊢ a + b = a
Theorem: AlgEquiv.arrowCongr_refl
File: Mathlib/Algebra/Algebra/Equiv.lean

tactic: ext
state_before: R : Type u
A₁ : Type v
A₂ : Type w
A₃ : Type u₁
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring A₁
inst✝⁴ : Semiring A₂
inst✝³ : Semiring A₃
inst✝² : Algebra R A₁
inst✝¹ : Algebra R A₂
inst✝ : Algebra R A₃
e : A₁ ≃ₐ[R] A₂
⊢ arrowCongr refl refl = Equiv.refl (A₁ →ₐ[R] A₂)

tactic: rfl
state_before: case H.H
R : Type u
A₁ : Type v
A₂ : Type w
A₃ : Type u₁
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring A₁
inst✝⁴ : Semiring A₂
inst✝³ : Semiring A₃
inst✝² : Algebra R A₁
inst✝¹ : Algebra R A₂
inst✝ : Algebra R A₃
e : A₁ ≃ₐ[R] A₂
x✝¹ : A₁ →ₐ[R] A₂
x✝ : A₁
⊢ ↑(↑(arrowCongr refl refl) x✝¹) x✝ = ↑(↑(Equiv.refl (A₁ →ₐ[R] A₂)) x✝¹) x✝
Theorem: Coplanar.finiteDimensional_vectorSpan
File: Mathlib/LinearAlgebra/AffineSpace/FiniteDimensional.lean

tactic: refine' IsNoetherian.iff_fg.1 (IsNoetherian.iff_rank_lt_aleph0.2 (lt_of_le_of_lt h _))
state_before: k : Type u_2
V : Type u_3
P : Type u_1
ι : Type ?u.339734
inst✝³ : DivisionRing k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : Set P
h : Coplanar k s
⊢ FiniteDimensional k { x // x ∈ vectorSpan k s }

tactic: exact Cardinal.lt_aleph0.2 ⟨2, rfl⟩
state_before: k : Type u_2
V : Type u_3
P : Type u_1
ι : Type ?u.339734
inst✝³ : DivisionRing k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : Set P
h : Coplanar k s
⊢ 2 < Cardinal.aleph0
Theorem: GroupTopology.continuous_inv'
File: Mathlib/Topology/Algebra/Group/Basic.lean

tactic: letI := g.toTopologicalSpace
state_before: α : Type u
β : Type v
G : Type w
H : Type x
inst✝ : Group α
g : GroupTopology α
⊢ Continuous Inv.inv

tactic: haveI := g.toTopologicalGroup
state_before: α : Type u
β : Type v
G : Type w
H : Type x
inst✝ : Group α
g : GroupTopology α
this : TopologicalSpace α := g.toTopologicalSpace
⊢ Continuous Inv.inv

tactic: exact continuous_inv
state_before: α : Type u
β : Type v
G : Type w
H : Type x
inst✝ : Group α
g : GroupTopology α
this✝ : TopologicalSpace α := g.toTopologicalSpace
this : TopologicalGroup α
⊢ Continuous Inv.inv
Theorem: Nat.dvd_of_mul_dvd_mul_left
File: Std/Data/Nat/Lemmas.lean

tactic: let ⟨l, H⟩ := H
state_before: k m n : Nat
kpos : 0 < k
H : k * m ∣ k * n
⊢ m ∣ n

tactic: rw [Nat.mul_assoc] at H
state_before: k m n : Nat
kpos : 0 < k
H✝ : k * m ∣ k * n
l : Nat
H : k * n = k * m * l
⊢ m ∣ n

tactic: exact ⟨_, Nat.eq_of_mul_eq_mul_left kpos H⟩
state_before: k m n : Nat
kpos : 0 < k
H✝ : k * m ∣ k * n
l : Nat
H : k * n = k * (m * l)
⊢ m ∣ n
Theorem: Finset.weightedVSubOfPoint_indicator_subset
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

tactic: rw [weightedVSubOfPoint_apply, weightedVSubOfPoint_apply]
state_before: k : Type u_3
V : Type u_2
P : Type u_4
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_1
s : Finset ι
ι₂ : Type ?u.58761
s₂✝ : Finset ι₂
w : ι → k
p : ι → P
b : P
s₁ s₂ : Finset ι
h : s₁ ⊆ s₂
⊢ ↑(weightedVSubOfPoint s₁ p b) w = ↑(weightedVSubOfPoint s₂ p b) (Set.indicator (↑s₁) w)

tactic: exact
  Set.sum_indicator_subset_of_eq_zero w (fun i wi => wi • (p i -ᵥ b : V)) h fun i => zero_smul k _
state_before: k : Type u_3
V : Type u_2
P : Type u_4
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_1
s : Finset ι
ι₂ : Type ?u.58761
s₂✝ : Finset ι₂
w : ι → k
p : ι → P
b : P
s₁ s₂ : Finset ι
h : s₁ ⊆ s₂
⊢ ∑ i in s₁, w i • (p i -ᵥ b) = ∑ i in s₂, Set.indicator (↑s₁) w i • (p i -ᵥ b)
Theorem: Disjoint.edgeSet
File: Mathlib/Combinatorics/SimpleGraph/Subgraph.lean

tactic: simpa using edgeSet_mono h.le_bot
state_before: ι : Sort ?u.125448
V : Type u
W : Type v
G : SimpleGraph V
G₁ G₂ : Subgraph G
a b : V
H₁ H₂ : Subgraph G
h : Disjoint H₁ H₂
⊢ SimpleGraph.Subgraph.edgeSet H₁ ⊓ SimpleGraph.Subgraph.edgeSet H₂ ≤ ⊥
Theorem: Filter.Germ.map_id
File: Mathlib/Order/Filter/Germ.lean

tactic: ext ⟨f⟩
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.39044
δ : Type ?u.39047
l : Filter α
f g h : α → β
⊢ map id = id

tactic: rfl
state_before: case h.mk
α : Type u_1
β : Type u_2
γ : Type ?u.39044
δ : Type ?u.39047
l : Filter α
f✝ g h : α → β
x✝ : Germ l β
f : α → β
⊢ map id (Quot.mk Setoid.r f) = id (Quot.mk Setoid.r f)
Theorem: Complex.sub_conj
File: Mathlib/Data/Complex/Basic.lean

tactic: simp [two_mul, sub_eq_add_neg, ofReal']
state_before: z : ℂ
⊢ (z - ↑(starRingEnd ℂ) z).re = (↑(2 * z.im) * I).re ∧ (z - ↑(starRingEnd ℂ) z).im = (↑(2 * z.im) * I).im
Theorem: List.mem_diff_of_mem
File: Std/Data/List/Lemmas.lean

tactic: rw [diff_cons]
state_before: α : Type u_1
inst✝ : DecidableEq α
a : α
l₁ : List α
b : α
l₂ : List α
h₁ : a ∈ l₁
h₂ : ¬a ∈ b :: l₂
⊢ a ∈ List.diff l₁ (b :: l₂)

tactic: exact mem_diff_of_mem ((mem_erase_of_ne <| ne_of_not_mem_cons h₂).2 h₁) (mt (.tail _) h₂)
state_before: α : Type u_1
inst✝ : DecidableEq α
a : α
l₁ : List α
b : α
l₂ : List α
h₁ : a ∈ l₁
h₂ : ¬a ∈ b :: l₂
⊢ a ∈ List.diff (List.erase l₁ b) l₂
Theorem: TopologicalSpace.Compacts.coe_finset_sup
File: Mathlib/Topology/Sets/Compacts.lean

tactic: refine Finset.cons_induction_on s rfl fun a s _ h => ?_
state_before: α : Type u_2
β : Type ?u.34252
γ : Type ?u.34255
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
ι : Type u_1
s : Finset ι
f : ι → Compacts α
⊢ ↑(Finset.sup s f) = Finset.sup s fun i => ↑(f i)

tactic: simp_rw [Finset.sup_cons, coe_sup, sup_eq_union]
state_before: α : Type u_2
β : Type ?u.34252
γ : Type ?u.34255
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
ι : Type u_1
s✝ : Finset ι
f : ι → Compacts α
a : ι
s : Finset ι
x✝ : ¬a ∈ s
h : ↑(Finset.sup s f) = Finset.sup s fun i => ↑(f i)
⊢ ↑(Finset.sup (Finset.cons a s x✝) f) = Finset.sup (Finset.cons a s x✝) fun i => ↑(f i)

tactic: congr
state_before: α : Type u_2
β : Type ?u.34252
γ : Type ?u.34255
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
ι : Type u_1
s✝ : Finset ι
f : ι → Compacts α
a : ι
s : Finset ι
x✝ : ¬a ∈ s
h : ↑(Finset.sup s f) = Finset.sup s fun i => ↑(f i)
⊢ ↑(f a) ∪ ↑(Finset.sup s f) = ↑(f a) ∪ Finset.sup s fun i => ↑(f i)
Theorem: WittVector.matrix_vecEmpty_coeff
File: Mathlib/RingTheory/WittVector/Basic.lean

tactic: rcases i with ⟨_ | _ | _ | _ | i_val, ⟨⟩⟩
state_before: p : ℕ
R✝ : Type ?u.636245
S : Type ?u.636248
T : Type ?u.636251
hp : Fact (Nat.Prime p)
inst✝² : CommRing R✝
inst✝¹ : CommRing S
inst✝ : CommRing T
α : Type ?u.636266
β : Type ?u.636269
x y : 𝕎 R✝
R : Type u_1
i : Fin 0
j : ℕ
⊢ coeff ![] j = ![]
Theorem: Fin.card_fintypeIci
File: Mathlib/Data/Fin/Interval.lean

tactic: rw [Fintype.card_ofFinset, card_Ici]
state_before: n : ℕ
a b : Fin n
⊢ Fintype.card ↑(Set.Ici a) = n - ↑a

tactic: assumption
state_before: case b
n : ℕ
a b : Fin n
⊢ Fin n
Theorem: toIcoDiv_sub
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: simpa only [one_zsmul] using toIcoDiv_sub_zsmul hp a b 1
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
⊢ toIcoDiv hp a (b - p) = toIcoDiv hp a b - 1
Theorem: fn_min_mul_fn_max
File: Mathlib/Algebra/Order/Monoid/MinMax.lean

tactic: cases' le_total n m with h h <;> simp [h, mul_comm]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : LinearOrder α
inst✝ : CommSemigroup β
f : α → β
n m : α
⊢ f (min n m) * f (max n m) = f n * f m
Theorem: exists_nonneg_left_iff_sameRay
File: Mathlib/LinearAlgebra/Ray.lean

tactic: refine' ⟨fun h => _, fun h => h.exists_nonneg_left hx⟩
state_before: R : Type u_2
inst✝² : LinearOrderedField R
M : Type u_1
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y : M
hx : x ≠ 0
⊢ (∃ r, 0 ≤ r ∧ r • x = y) ↔ SameRay R x y

tactic: rcases h with ⟨r, hr, rfl⟩
state_before: R : Type u_2
inst✝² : LinearOrderedField R
M : Type u_1
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y : M
hx : x ≠ 0
h : ∃ r, 0 ≤ r ∧ r • x = y
⊢ SameRay R x y

tactic: exact SameRay.sameRay_nonneg_smul_right x hr
state_before: case intro.intro
R : Type u_2
inst✝² : LinearOrderedField R
M : Type u_1
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x : M
hx : x ≠ 0
r : R
hr : 0 ≤ r
⊢ SameRay R x (r • x)
Theorem: Matrix.diagonal_zero
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext
state_before: l : Type ?u.47813
m : Type ?u.47816
n : Type u_1
o : Type ?u.47822
m' : o → Type ?u.47827
n' : o → Type ?u.47832
R : Type ?u.47835
S : Type ?u.47838
α : Type v
β : Type w
γ : Type ?u.47845
inst✝¹ : DecidableEq n
inst✝ : Zero α
⊢ (diagonal fun x => 0) = 0

tactic: simp [diagonal]
state_before: case a.h
l : Type ?u.47813
m : Type ?u.47816
n : Type u_1
o : Type ?u.47822
m' : o → Type ?u.47827
n' : o → Type ?u.47832
R : Type ?u.47835
S : Type ?u.47838
α : Type v
β : Type w
γ : Type ?u.47845
inst✝¹ : DecidableEq n
inst✝ : Zero α
i✝ x✝ : n
⊢ diagonal (fun x => 0) i✝ x✝ = OfNat.ofNat 0 i✝ x✝
Theorem: FreeAbelianGroup.toFinsupp_comp_toFreeAbelianGroup
File: Mathlib/GroupTheory/FreeAbelianGroupFinsupp.lean

tactic: ext (x y)
state_before: X : Type u_1
⊢ AddMonoidHom.comp toFinsupp toFreeAbelianGroup = AddMonoidHom.id (X →₀ ℤ)

tactic: simp only [AddMonoidHom.id_comp]
state_before: case H.h1.h
X : Type u_1
x y : X
⊢ ↑(↑(AddMonoidHom.comp (AddMonoidHom.comp toFinsupp toFreeAbelianGroup) (singleAddHom x)) 1) y =
    ↑(↑(AddMonoidHom.comp (AddMonoidHom.id (X →₀ ℤ)) (singleAddHom x)) 1) y

tactic: rw [AddMonoidHom.comp_assoc, Finsupp.toFreeAbelianGroup_comp_singleAddHom]
state_before: case H.h1.h
X : Type u_1
x y : X
⊢ ↑(↑(AddMonoidHom.comp (AddMonoidHom.comp toFinsupp toFreeAbelianGroup) (singleAddHom x)) 1) y =
    ↑(↑(singleAddHom x) 1) y

tactic: simp only [toFinsupp, AddMonoidHom.coe_comp, Finsupp.singleAddHom_apply, Function.comp_apply,
  one_smul, lift.of, AddMonoidHom.flip_apply, smulAddHom_apply, AddMonoidHom.id_apply]
state_before: case H.h1.h
X : Type u_1
x y : X
⊢ ↑(↑(AddMonoidHom.comp toFinsupp (↑(AddMonoidHom.flip (smulAddHom ℤ (FreeAbelianGroup X))) (of x))) 1) y =
    ↑(↑(singleAddHom x) 1) y
Theorem: char_dvd_card_solutions
File: Mathlib/FieldTheory/ChevalleyWarning.lean

tactic: let F : Unit → MvPolynomial σ K := fun _ => f
state_before: K : Type u_2
σ : Type u_1
ι : Type ?u.638341
inst✝⁵ : Fintype K
inst✝⁴ : Field K
inst✝³ : Fintype σ
inst✝² : DecidableEq σ
inst✝¹ : DecidableEq K
p : ℕ
inst✝ : CharP K p
f : MvPolynomial σ K
h : totalDegree f < Fintype.card σ
⊢ p ∣ Fintype.card { x // ↑(eval x) f = 0 }

tactic: have : (∑ i : Unit, (F i).totalDegree) < Fintype.card σ := h
state_before: K : Type u_2
σ : Type u_1
ι : Type ?u.638341
inst✝⁵ : Fintype K
inst✝⁴ : Field K
inst✝³ : Fintype σ
inst✝² : DecidableEq σ
inst✝¹ : DecidableEq K
p : ℕ
inst✝ : CharP K p
f : MvPolynomial σ K
h : totalDegree f < Fintype.card σ
F : Unit → MvPolynomial σ K := fun x => f
⊢ p ∣ Fintype.card { x // ↑(eval x) f = 0 }

tactic: convert char_dvd_card_solutions_of_sum_lt p this
state_before: K : Type u_2
σ : Type u_1
ι : Type ?u.638341
inst✝⁵ : Fintype K
inst✝⁴ : Field K
inst✝³ : Fintype σ
inst✝² : DecidableEq σ
inst✝¹ : DecidableEq K
p : ℕ
inst✝ : CharP K p
f : MvPolynomial σ K
h : totalDegree f < Fintype.card σ
F : Unit → MvPolynomial σ K := fun x => f
this : ∑ i : Unit, totalDegree (F i) < Fintype.card σ
⊢ p ∣ Fintype.card { x // ↑(eval x) f = 0 }

tactic: aesop
state_before: case h.e'_4.h.h.e'_2.h.a
K : Type u_2
σ : Type u_1
ι : Type ?u.638341
inst✝⁵ : Fintype K
inst✝⁴ : Field K
inst✝³ : Fintype σ
inst✝² : DecidableEq σ
inst✝¹ : DecidableEq K
p : ℕ
inst✝ : CharP K p
f : MvPolynomial σ K
h : totalDegree f < Fintype.card σ
F : Unit → MvPolynomial σ K := fun x => f
this : ∑ i : Unit, totalDegree (F i) < Fintype.card σ
x✝ : σ → K
⊢ ↑(eval x✝) f = 0 ↔ ∀ (i : Unit), i ∈ univ → ↑(eval x✝) (F i) = 0
Theorem: Nat.multichoose_zero_right
File: Mathlib/Data/Nat/Choose/Basic.lean

tactic: cases n <;> simp [multichoose]
state_before: n : ℕ
⊢ multichoose n 0 = 1
Theorem: Convex.is_const_of_fderivWithin_eq_zero
File: Mathlib/Analysis/Calculus/MeanValue.lean

tactic: have bound : ∀ x ∈ s, ‖fderivWithin 𝕜 f s x‖ ≤ 0 := fun x hx => by
  simp only [hf' x hx, norm_zero, le_rfl]
state_before: E : Type u_1
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
F : Type ?u.244965
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
𝕜 : Type u_2
G : Type u_3
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → G
C : ℝ
s : Set E
x y : E
f' g' : E → E →L[𝕜] G
φ : E →L[𝕜] G
hs : Convex ℝ s
hf : DifferentiableOn 𝕜 f s
hf' : ∀ (x : E), x ∈ s → fderivWithin 𝕜 f s x = 0
hx : x ∈ s
hy : y ∈ s
⊢ f x = f y

tactic: simpa only [(dist_eq_norm _ _).symm, zero_mul, dist_le_zero, eq_comm] using
  hs.norm_image_sub_le_of_norm_fderivWithin_le hf bound hx hy
state_before: E : Type u_1
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
F : Type ?u.244965
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
𝕜 : Type u_2
G : Type u_3
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → G
C : ℝ
s : Set E
x y : E
f' g' : E → E →L[𝕜] G
φ : E →L[𝕜] G
hs : Convex ℝ s
hf : DifferentiableOn 𝕜 f s
hf' : ∀ (x : E), x ∈ s → fderivWithin 𝕜 f s x = 0
hx : x ∈ s
hy : y ∈ s
bound : ∀ (x : E), x ∈ s → ‖fderivWithin 𝕜 f s x‖ ≤ 0
⊢ f x = f y

tactic: simp only [hf' x hx, norm_zero, le_rfl]
state_before: E : Type u_1
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
F : Type ?u.244965
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
𝕜 : Type u_2
G : Type u_3
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → G
C : ℝ
s : Set E
x✝ y : E
f' g' : E → E →L[𝕜] G
φ : E →L[𝕜] G
hs : Convex ℝ s
hf : DifferentiableOn 𝕜 f s
hf' : ∀ (x : E), x ∈ s → fderivWithin 𝕜 f s x = 0
hx✝ : x✝ ∈ s
hy : y ∈ s
x : E
hx : x ∈ s
⊢ ‖fderivWithin 𝕜 f s x‖ ≤ 0
Theorem: DirectedOn.strictConvex_sUnion
File: Mathlib/Analysis/Convex/Strict.lean

tactic: rw [sUnion_eq_iUnion]
state_before: 𝕜 : Type u_2
𝕝 : Type ?u.6609
E : Type u_1
F : Type ?u.6615
β : Type ?u.6618
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : TopologicalSpace E
inst✝⁴ : TopologicalSpace F
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : SMul 𝕜 E
inst✝ : SMul 𝕜 F
s : Set E
x y : E
a b : 𝕜
S : Set (Set E)
hdir : DirectedOn (fun x x_1 => x ⊆ x_1) S
hS : ∀ (s : Set E), s ∈ S → StrictConvex 𝕜 s
⊢ StrictConvex 𝕜 (⋃₀ S)

tactic: exact (directedOn_iff_directed.1 hdir).strictConvex_iUnion fun s => hS _ s.2
state_before: 𝕜 : Type u_2
𝕝 : Type ?u.6609
E : Type u_1
F : Type ?u.6615
β : Type ?u.6618
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : TopologicalSpace E
inst✝⁴ : TopologicalSpace F
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : SMul 𝕜 E
inst✝ : SMul 𝕜 F
s : Set E
x y : E
a b : 𝕜
S : Set (Set E)
hdir : DirectedOn (fun x x_1 => x ⊆ x_1) S
hS : ∀ (s : Set E), s ∈ S → StrictConvex 𝕜 s
⊢ StrictConvex 𝕜 (⋃ (i : ↑S), ↑i)
Theorem: Function.update_comp_equiv
File: Mathlib/Logic/Equiv/Basic.lean

tactic: rw [← update_comp_eq_of_injective _ g.injective, g.apply_symm_apply]
state_before: α' : Sort u_1
α : Sort u_2
β : Sort u_3
inst✝¹ : DecidableEq α'
inst✝ : DecidableEq α
f : α → β
g : α' ≃ α
a : α
v : β
⊢ update f a v ∘ ↑g = update (f ∘ ↑g) (↑g.symm a) v
Theorem: Nat.factors_chain
File: Mathlib/Data/Nat/Factors.lean

tactic: match n with
| 0 => simp
| 1 => simp
| k + 2 =>
    intro a h
    let m := minFac (k + 2)
    have : (k + 2) / m < (k + 2) := factors_lemma
    rw [factors]
    refine' List.Chain.cons ((le_minFac.2 h).resolve_left (by simp)) (factors_chain _)
    exact fun p pp d => minFac_le_of_dvd pp.two_le (d.trans <| div_dvd_of_dvd <| minFac_dvd _)
state_before: n : ℕ
⊢ ∀ {a : ℕ}, (∀ (p : ℕ), Prime p → p ∣ n → a ≤ p) → List.Chain (fun x x_1 => x ≤ x_1) a (factors n)

tactic: simp
state_before: n : ℕ
⊢ ∀ {a : ℕ}, (∀ (p : ℕ), Prime p → p ∣ 0 → a ≤ p) → List.Chain (fun x x_1 => x ≤ x_1) a (factors 0)

tactic: simp
state_before: n : ℕ
⊢ ∀ {a : ℕ}, (∀ (p : ℕ), Prime p → p ∣ 1 → a ≤ p) → List.Chain (fun x x_1 => x ≤ x_1) a (factors 1)

tactic: intro a h
state_before: n k : ℕ
⊢ ∀ {a : ℕ}, (∀ (p : ℕ), Prime p → p ∣ k + 2 → a ≤ p) → List.Chain (fun x x_1 => x ≤ x_1) a (factors (k + 2))

tactic: let m := minFac (k + 2)
state_before: n k a : ℕ
h : ∀ (p : ℕ), Prime p → p ∣ k + 2 → a ≤ p
⊢ List.Chain (fun x x_1 => x ≤ x_1) a (factors (k + 2))

tactic: have : (k + 2) / m < (k + 2) := factors_lemma
state_before: n k a : ℕ
h : ∀ (p : ℕ), Prime p → p ∣ k + 2 → a ≤ p
m : ℕ := minFac (k + 2)
⊢ List.Chain (fun x x_1 => x ≤ x_1) a (factors (k + 2))

tactic: rw [factors]
state_before: n k a : ℕ
h : ∀ (p : ℕ), Prime p → p ∣ k + 2 → a ≤ p
m : ℕ := minFac (k + 2)
this : (k + 2) / m < k + 2
⊢ List.Chain (fun x x_1 => x ≤ x_1) a (factors (k + 2))

tactic: refine' List.Chain.cons ((le_minFac.2 h).resolve_left (by simp)) (factors_chain _)
state_before: n k a : ℕ
h : ∀ (p : ℕ), Prime p → p ∣ k + 2 → a ≤ p
m : ℕ := minFac (k + 2)
this : (k + 2) / m < k + 2
⊢ List.Chain (fun x x_1 => x ≤ x_1) a
    (let m := minFac (k + 2);
    let_fun this := (_ : (k + 2) / minFac (k + 2) < k + 2);
    m :: factors ((k + 2) / m))

tactic: exact fun p pp d => minFac_le_of_dvd pp.two_le (d.trans <| div_dvd_of_dvd <| minFac_dvd _)
state_before: n k a : ℕ
h : ∀ (p : ℕ), Prime p → p ∣ k + 2 → a ≤ p
m : ℕ := minFac (k + 2)
this : (k + 2) / m < k + 2
⊢ ∀ (p : ℕ), Prime p → p ∣ (k + 2) / minFac (k + 2) → minFac (k + 2) ≤ p

tactic: simp
state_before: n k a : ℕ
h : ∀ (p : ℕ), Prime p → p ∣ k + 2 → a ≤ p
m : ℕ := minFac (k + 2)
this : (k + 2) / m < k + 2
⊢ ¬k + 2 = 1
Theorem: PFunctor.M.iselect_cons
File: Mathlib/Data/PFunctor/Univariate/M.lean

tactic: simp only [iselect, isubtree_cons]
state_before: F : PFunctor
X : Type ?u.28846
f✝ : X → Obj F X
inst✝¹ : DecidableEq F.A
inst✝ : Inhabited (M F)
ps : Path F
a : F.A
f : B F a → M F
i : B F a
⊢ iselect ({ fst := a, snd := i } :: ps) (M.mk { fst := a, snd := f }) = iselect ps (f i)
Theorem: Asymptotics.isLittleO_one_left_iff
File: Mathlib/Analysis/Asymptotics/Asymptotics.lean

tactic: simp only [norm_one, zero_le_one]
state_before: α : Type u_1
β : Type ?u.297892
E : Type u_3
F : Type u_2
G : Type ?u.297901
E' : Type ?u.297904
F' : Type ?u.297907
G' : Type ?u.297910
E'' : Type ?u.297913
F'' : Type ?u.297916
G'' : Type ?u.297919
R : Type ?u.297922
R' : Type ?u.297925
𝕜 : Type ?u.297928
𝕜' : Type ?u.297931
inst✝¹⁴ : Norm E
inst✝¹³ : Norm F
inst✝¹² : Norm G
inst✝¹¹ : SeminormedAddCommGroup E'
inst✝¹⁰ : SeminormedAddCommGroup F'
inst✝⁹ : SeminormedAddCommGroup G'
inst✝⁸ : NormedAddCommGroup E''
inst✝⁷ : NormedAddCommGroup F''
inst✝⁶ : NormedAddCommGroup G''
inst✝⁵ : SeminormedRing R
inst✝⁴ : SeminormedRing R'
inst✝³ : NormedField 𝕜
inst✝² : NormedField 𝕜'
c c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
inst✝¹ : One F
inst✝ : NormOneClass F
_x : α
⊢ 0 ≤ ‖1‖

tactic: simp only [norm_one, mul_one, true_imp_iff, mem_Ici]
state_before: α : Type u_1
β : Type ?u.297892
E : Type u_3
F : Type u_2
G : Type ?u.297901
E' : Type ?u.297904
F' : Type ?u.297907
G' : Type ?u.297910
E'' : Type ?u.297913
F'' : Type ?u.297916
G'' : Type ?u.297919
R : Type ?u.297922
R' : Type ?u.297925
𝕜 : Type ?u.297928
𝕜' : Type ?u.297931
inst✝¹⁴ : Norm E
inst✝¹³ : Norm F
inst✝¹² : Norm G
inst✝¹¹ : SeminormedAddCommGroup E'
inst✝¹⁰ : SeminormedAddCommGroup F'
inst✝⁹ : SeminormedAddCommGroup G'
inst✝⁸ : NormedAddCommGroup E''
inst✝⁷ : NormedAddCommGroup F''
inst✝⁶ : NormedAddCommGroup G''
inst✝⁵ : SeminormedRing R
inst✝⁴ : SeminormedRing R'
inst✝³ : NormedField 𝕜
inst✝² : NormedField 𝕜'
c c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
inst✝¹ : One F
inst✝ : NormOneClass F
⊢ (∀ (n : ℕ), ∀ᶠ (x : α) in l, ↑n * ‖1‖ ≤ ‖f x‖) ↔ ∀ (n : ℕ), True → ∀ᶠ (x : α) in l, ‖f x‖ ∈ Ici ↑n