tasksource/leandojo huggingface dataset:
Theorem: LinearMap.ker_eq_bot_iff_range_eq_top_of_finrank_eq_finrank
File: Mathlib/LinearAlgebra/FiniteDimensional.lean

tactic: rw [range_eq_top, ker_eq_bot, injective_iff_surjective_of_finrank_eq_finrank H]
state_before: K : Type u
V : Type v
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
V₂ : Type v'
inst✝³ : AddCommGroup V₂
inst✝² : Module K V₂
inst✝¹ : FiniteDimensional K V
inst✝ : FiniteDimensional K V₂
H : finrank K V = finrank K V₂
f : V →ₗ[K] V₂
⊢ ker f = ⊥ ↔ range f = ⊤
Theorem: CategoryTheory.GradedObject.eqToHom_proj
File: Mathlib/CategoryTheory/GradedObject.lean

tactic: subst h
state_before: C : Type u
inst✝ : Category C
I : Type u_1
x x' : GradedObject I C
h : x = x'
i : I
⊢ eqToHom h i = eqToHom (_ : x i = x' i)

tactic: rfl
state_before: C : Type u
inst✝ : Category C
I : Type u_1
x : GradedObject I C
i : I
⊢ eqToHom (_ : x = x) i = eqToHom (_ : x i = x i)
Theorem: PiNat.mem_cylinder_iff_le_firstDiff
File: Mathlib/Topology/MetricSpace/PiNat.lean

tactic: constructor
state_before: E : ℕ → Type u_1
x y : (n : ℕ) → E n
hne : x ≠ y
i : ℕ
⊢ x ∈ cylinder y i ↔ i ≤ firstDiff x y

tactic: intro h
state_before: case mp
E : ℕ → Type u_1
x y : (n : ℕ) → E n
hne : x ≠ y
i : ℕ
⊢ x ∈ cylinder y i → i ≤ firstDiff x y

tactic: by_contra'
state_before: case mp
E : ℕ → Type u_1
x y : (n : ℕ) → E n
hne : x ≠ y
i : ℕ
h : x ∈ cylinder y i
⊢ i ≤ firstDiff x y

tactic: exact apply_firstDiff_ne hne (h _ this)
state_before: case mp
E : ℕ → Type u_1
x y : (n : ℕ) → E n
hne : x ≠ y
i : ℕ
h : x ∈ cylinder y i
this : firstDiff x y < i
⊢ False

tactic: intro hi j hj
state_before: case mpr
E : ℕ → Type u_1
x y : (n : ℕ) → E n
hne : x ≠ y
i : ℕ
⊢ i ≤ firstDiff x y → x ∈ cylinder y i

tactic: exact apply_eq_of_lt_firstDiff (hj.trans_le hi)
state_before: case mpr
E : ℕ → Type u_1
x y : (n : ℕ) → E n
hne : x ≠ y
i : ℕ
hi : i ≤ firstDiff x y
j : ℕ
hj : j < i
⊢ x j = y j
Theorem: Nat.factors_multiset_prod_of_irreducible
File: Mathlib/RingTheory/Int/Basic.lean

tactic: rw [← Multiset.rel_eq, ← associated_eq_eq]
state_before: s : Multiset ℕ
h : ∀ (x : ℕ), x ∈ s → Irreducible x
⊢ normalizedFactors (Multiset.prod s) = s

tactic: apply
  UniqueFactorizationMonoid.factors_unique irreducible_of_normalized_factor h
    (normalizedFactors_prod _)
state_before: s : Multiset ℕ
h : ∀ (x : ℕ), x ∈ s → Irreducible x
⊢ Multiset.Rel (fun x x_1 => Associated x x_1) (normalizedFactors (Multiset.prod s)) s

tactic: rw [Ne.def, Multiset.prod_eq_zero_iff]
state_before: s : Multiset ℕ
h : ∀ (x : ℕ), x ∈ s → Irreducible x
⊢ Multiset.prod s ≠ 0

tactic: intro con
state_before: s : Multiset ℕ
h : ∀ (x : ℕ), x ∈ s → Irreducible x
⊢ ¬0 ∈ s

tactic: exact not_irreducible_zero (h 0 con)
state_before: s : Multiset ℕ
h : ∀ (x : ℕ), x ∈ s → Irreducible x
con : 0 ∈ s
⊢ False
Theorem: Filter.EventuallyEq.iteratedFDerivWithin_eq
File: Mathlib/Analysis/Calculus/ContDiffDef.lean

tactic: simpa [EventuallyEq, hx]
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type uX
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x x₀ : E
c : F
m n✝ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
h : f₁ =ᶠ[𝓝[s] x] f
hx : f₁ x = f x
n : ℕ
⊢ f₁ =ᶠ[𝓝[insert x s] x] f
Theorem: Complex.arg_cos_add_sin_mul_I
File: Mathlib/Analysis/SpecialFunctions/Complex/Arg.lean

tactic: rw [← one_mul (_ + _), ← ofReal_one, arg_mul_cos_add_sin_mul_I zero_lt_one hθ]
state_before: θ : ℝ
hθ : θ ∈ Set.Ioc (-π) π
⊢ arg (cos ↑θ + sin ↑θ * I) = θ
Theorem: dvd_mul_of_dvd_right
File: Mathlib/Algebra/Divisibility/Basic.lean

tactic: rw [mul_comm]
state_before: α : Type u_1
inst✝ : CommSemigroup α
a b c✝ : α
h : a ∣ b
c : α
⊢ a ∣ c * b

tactic: exact h.mul_right _
state_before: α : Type u_1
inst✝ : CommSemigroup α
a b c✝ : α
h : a ∣ b
c : α
⊢ a ∣ b * c
Theorem: AlgHom.to_lieHom_injective
File: Mathlib/Algebra/Lie/OfAssociative.lean

tactic: ext a
state_before: A : Type v
inst✝⁶ : Ring A
R : Type u
inst✝⁵ : CommRing R
inst✝⁴ : Algebra R A
B : Type w
C : Type w₁
inst✝³ : Ring B
inst✝² : Ring C
inst✝¹ : Algebra R B
inst✝ : Algebra R C
f✝ : A →ₐ[R] B
g✝ : B →ₐ[R] C
f g : A →ₐ[R] B
h : toLieHom f = toLieHom g
⊢ f = g

tactic: exact LieHom.congr_fun h a
state_before: case H
A : Type v
inst✝⁶ : Ring A
R : Type u
inst✝⁵ : CommRing R
inst✝⁴ : Algebra R A
B : Type w
C : Type w₁
inst✝³ : Ring B
inst✝² : Ring C
inst✝¹ : Algebra R B
inst✝ : Algebra R C
f✝ : A →ₐ[R] B
g✝ : B →ₐ[R] C
f g : A →ₐ[R] B
h : toLieHom f = toLieHom g
a : A
⊢ ↑f a = ↑g a
Theorem: MeasureTheory.Measure.AbsolutelyContinuous.smul
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: simp only [h hνs, smul_eq_mul, smul_apply, smul_zero]
state_before: α : Type u_2
β : Type ?u.400038
γ : Type ?u.400041
δ : Type ?u.400044
ι : Type ?u.400047
R : Type u_1
R' : Type ?u.400053
m0 : MeasurableSpace α
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t : Set α
inst✝² : Monoid R
inst✝¹ : DistribMulAction R ℝ≥0∞
inst✝ : IsScalarTower R ℝ≥0∞ ℝ≥0∞
h : μ ≪ ν
c : R
s : Set α
hνs : ↑↑ν s = 0
⊢ ↑↑(c • μ) s = 0
Theorem: MeasureTheory.FiniteMeasure.zero_testAgainstNN
File: Mathlib/MeasureTheory/Measure/FiniteMeasure.lean

tactic: funext
state_before: Ω : Type u_1
inst✝⁵ : MeasurableSpace Ω
R : Type ?u.53954
inst✝⁴ : SMul R ℝ≥0
inst✝³ : SMul R ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0 ℝ≥0∞
inst✝¹ : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝ : TopologicalSpace Ω
⊢ testAgainstNN 0 = 0

tactic: simp only [zero_testAgainstNN_apply, Pi.zero_apply]
state_before: case h
Ω : Type u_1
inst✝⁵ : MeasurableSpace Ω
R : Type ?u.53954
inst✝⁴ : SMul R ℝ≥0
inst✝³ : SMul R ℝ≥0∞
inst✝² : IsScalarTower R ℝ≥0 ℝ≥0∞
inst✝¹ : IsScalarTower R ℝ≥0∞ ℝ≥0∞
inst✝ : TopologicalSpace Ω
x✝ : Ω →ᵇ ℝ≥0
⊢ testAgainstNN 0 x✝ = OfNat.ofNat 0 x✝
Theorem: Int.zero_ediv
File: Std/Data/Int/DivMod.lean

tactic: simp
state_before: a✝ : Nat
⊢ ofNat (0 / a✝) = 0

tactic: simp
state_before: a✝ : Nat
⊢ -ofNat (0 / succ a✝) = 0
Theorem: HomologicalComplex.cycles_eq_top
File: Mathlib/Algebra/Homology/Homology.lean

tactic: rw [eq_top_iff]
state_before: ι : Type u_1
V : Type u
inst✝² : Category V
inst✝¹ : HasZeroMorphisms V
c : ComplexShape ι
C : HomologicalComplex V c
inst✝ : HasKernels V
i : ι
h : ¬ComplexShape.Rel c i (ComplexShape.next c i)
⊢ cycles C i = ⊤

tactic: apply le_kernelSubobject
state_before: ι : Type u_1
V : Type u
inst✝² : Category V
inst✝¹ : HasZeroMorphisms V
c : ComplexShape ι
C : HomologicalComplex V c
inst✝ : HasKernels V
i : ι
h : ¬ComplexShape.Rel c i (ComplexShape.next c i)
⊢ ⊤ ≤ cycles C i

tactic: rw [C.dFrom_eq_zero h, comp_zero]
state_before: case h
ι : Type u_1
V : Type u
inst✝² : Category V
inst✝¹ : HasZeroMorphisms V
c : ComplexShape ι
C : HomologicalComplex V c
inst✝ : HasKernels V
i : ι
h : ¬ComplexShape.Rel c i (ComplexShape.next c i)
⊢ Subobject.arrow ⊤ ≫ dFrom C i = 0
Theorem: Subalgebra.star_adjoin_comm
File: Mathlib/Algebra/Star/Subalgebra.lean

tactic: simpa only [star_star] using Subalgebra.star_mono (this (star s))
state_before: F : Type ?u.414752
R : Type u_2
A : Type u_1
B : Type ?u.414761
inst✝⁹ : CommSemiring R
inst✝⁸ : StarRing R
inst✝⁷ : Semiring A
inst✝⁶ : Algebra R A
inst✝⁵ : StarRing A
inst✝⁴ : StarModule R A
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : StarModule R B
s : Set A
this : ∀ (t : Set A), Algebra.adjoin R (star t) ≤ star (Algebra.adjoin R t)
⊢ star (Algebra.adjoin R s) ≤ Algebra.adjoin R (star s)
Theorem: Finset.exists_ne_of_one_lt_card
File: Mathlib/Data/Finset/Card.lean

tactic: obtain ⟨x, hx, y, hy, hxy⟩ := Finset.one_lt_card.mp hs
state_before: α : Type u_1
β : Type ?u.58840
s t : Finset α
f : α → β
n : ℕ
hs : 1 < card s
a : α
⊢ ∃ b, b ∈ s ∧ b ≠ a

tactic: by_cases ha : y = a
state_before: case intro.intro.intro.intro
α : Type u_1
β : Type ?u.58840
s t : Finset α
f : α → β
n : ℕ
hs : 1 < card s
a x : α
hx : x ∈ s
y : α
hy : y ∈ s
hxy : x ≠ y
⊢ ∃ b, b ∈ s ∧ b ≠ a

tactic: exact ⟨x, hx, ne_of_ne_of_eq hxy ha⟩
state_before: case pos
α : Type u_1
β : Type ?u.58840
s t : Finset α
f : α → β
n : ℕ
hs : 1 < card s
a x : α
hx : x ∈ s
y : α
hy : y ∈ s
hxy : x ≠ y
ha : y = a
⊢ ∃ b, b ∈ s ∧ b ≠ a

tactic: exact ⟨y, hy, ha⟩
state_before: case neg
α : Type u_1
β : Type ?u.58840
s t : Finset α
f : α → β
n : ℕ
hs : 1 < card s
a x : α
hx : x ∈ s
y : α
hy : y ∈ s
hxy : x ≠ y
ha : ¬y = a
⊢ ∃ b, b ∈ s ∧ b ≠ a
Theorem: Cardinal.card_typein_lt
File: Mathlib/SetTheory/Ordinal/Basic.lean

tactic: rw [← lt_ord, h]
state_before: α : Type u_1
β : Type ?u.230049
γ : Type ?u.230052
r✝ : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
r : α → α → Prop
inst✝ : IsWellOrder α r
x : α
h : ord (#α) = type r
⊢ card (typein r x) < (#α)

tactic: apply typein_lt_type
state_before: α : Type u_1
β : Type ?u.230049
γ : Type ?u.230052
r✝ : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
r : α → α → Prop
inst✝ : IsWellOrder α r
x : α
h : ord (#α) = type r
⊢ typein r x < type r
Theorem: upperCentralSeries_mono
File: Mathlib/GroupTheory/Nilpotent.lean

tactic: refine' monotone_nat_of_le_succ _
state_before: G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
⊢ Monotone (upperCentralSeries G)

tactic: intro n x hx y
state_before: G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
⊢ ∀ (n : ℕ), upperCentralSeries G n ≤ upperCentralSeries G (n + 1)

tactic: rw [mul_assoc, mul_assoc, ← mul_assoc y x⁻¹ y⁻¹]
state_before: G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
n : ℕ
x : G
hx : x ∈ upperCentralSeries G n
y : G
⊢ x * y * x⁻¹ * y⁻¹ ∈ (upperCentralSeriesAux G (Nat.add n 0)).fst

tactic: exact mul_mem hx (Normal.conj_mem (upperCentralSeries_normal G n) x⁻¹ (inv_mem hx) y)
state_before: G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
n : ℕ
x : G
hx : x ∈ upperCentralSeries G n
y : G
⊢ x * (y * x⁻¹ * y⁻¹) ∈ (upperCentralSeriesAux G (Nat.add n 0)).fst
Theorem: Nat.pow_le_choose
File: Mathlib/Data/Nat/Choose/Bounds.lean

tactic: rw [div_le_iff']
state_before: α : Type u_1
inst✝ : LinearOrderedSemifield α
r n : ℕ
⊢ ↑((n + 1 - r) ^ r) / ↑r ! ≤ ↑(choose n r)

tactic: exact_mod_cast r.factorial_pos
state_before: α : Type u_1
inst✝ : LinearOrderedSemifield α
r n : ℕ
⊢ 0 < ↑r !

tactic: norm_cast
state_before: α : Type u_1
inst✝ : LinearOrderedSemifield α
r n : ℕ
⊢ ↑((n + 1 - r) ^ r) ≤ ↑r ! * ↑(choose n r)

tactic: rw [← Nat.descFactorial_eq_factorial_mul_choose]
state_before: α : Type u_1
inst✝ : LinearOrderedSemifield α
r n : ℕ
⊢ (n + 1 - r) ^ r ≤ r ! * choose n r

tactic: exact n.pow_sub_le_descFactorial r
state_before: α : Type u_1
inst✝ : LinearOrderedSemifield α
r n : ℕ
⊢ (n + 1 - r) ^ r ≤ descFactorial n r
Theorem: List.sum_map_count_dedup_eq_length
File: Mathlib/Data/List/Dedup.lean

tactic: simpa using sum_map_count_dedup_filter_eq_countp (fun _ => True) l
state_before: α : Type u
inst✝ : DecidableEq α
l : List α
⊢ sum (map (fun x => count x l) (dedup l)) = length l
Theorem: Submodule.smul_induction_on
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: have H0 : p 0 := by simpa only [zero_smul] using Hb 0 I.zero_mem 0 N.zero_mem
state_before: R : Type u
M : Type v
F : Type ?u.37815
G : Type ?u.37818
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
I J : Ideal R
N P : Submodule R M
p : M → Prop
x : M
H : x ∈ I • N
Hb : ∀ (r : R), r ∈ I → ∀ (n : M), n ∈ N → p (r • n)
H1 : ∀ (x y : M), p x → p y → p (x + y)
⊢ p x

tactic: refine Submodule.iSup_induction (x := x) _ H ?_ H0 H1
state_before: R : Type u
M : Type v
F : Type ?u.37815
G : Type ?u.37818
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
I J : Ideal R
N P : Submodule R M
p : M → Prop
x : M
H : x ∈ I • N
Hb : ∀ (r : R), r ∈ I → ∀ (n : M), n ∈ N → p (r • n)
H1 : ∀ (x y : M), p x → p y → p (x + y)
H0 : p 0
⊢ p x

tactic: rintro ⟨i, hi⟩ m ⟨j, hj, hj'⟩
state_before: R : Type u
M : Type v
F : Type ?u.37815
G : Type ?u.37818
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
I J : Ideal R
N P : Submodule R M
p : M → Prop
x : M
H : x ∈ I • N
Hb : ∀ (r : R), r ∈ I → ∀ (n : M), n ∈ N → p (r • n)
H1 : ∀ (x y : M), p x → p y → p (x + y)
H0 : p 0
⊢ ∀ (i : { x // x ∈ I }) (x : M), x ∈ map (↑(LinearMap.lsmul R M) ↑i) N → p x

tactic: rw [← hj']
state_before: case mk.intro.intro
R : Type u
M : Type v
F : Type ?u.37815
G : Type ?u.37818
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
I J : Ideal R
N P : Submodule R M
p : M → Prop
x : M
H : x ∈ I • N
Hb : ∀ (r : R), r ∈ I → ∀ (n : M), n ∈ N → p (r • n)
H1 : ∀ (x y : M), p x → p y → p (x + y)
H0 : p 0
i : R
hi : i ∈ I
m j : M
hj : j ∈ ↑N
hj' : ↑(↑(LinearMap.lsmul R M) ↑{ val := i, property := hi }) j = m
⊢ p m

tactic: exact Hb _ hi _ hj
state_before: case mk.intro.intro
R : Type u
M : Type v
F : Type ?u.37815
G : Type ?u.37818
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
I J : Ideal R
N P : Submodule R M
p : M → Prop
x : M
H : x ∈ I • N
Hb : ∀ (r : R), r ∈ I → ∀ (n : M), n ∈ N → p (r • n)
H1 : ∀ (x y : M), p x → p y → p (x + y)
H0 : p 0
i : R
hi : i ∈ I
m j : M
hj : j ∈ ↑N
hj' : ↑(↑(LinearMap.lsmul R M) ↑{ val := i, property := hi }) j = m
⊢ p (↑(↑(LinearMap.lsmul R M) ↑{ val := i, property := hi }) j)

tactic: simpa only [zero_smul] using Hb 0 I.zero_mem 0 N.zero_mem
state_before: R : Type u
M : Type v
F : Type ?u.37815
G : Type ?u.37818
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
I J : Ideal R
N P : Submodule R M
p : M → Prop
x : M
H : x ∈ I • N
Hb : ∀ (r : R), r ∈ I → ∀ (n : M), n ∈ N → p (r • n)
H1 : ∀ (x y : M), p x → p y → p (x + y)
⊢ p 0
Theorem: FormalMultilinearSeries.changeOriginSeries_summable_aux₃
File: Mathlib/Analysis/Analytic/Basic.lean

tactic: refine' NNReal.summable_of_le
  (fun n => _) (NNReal.summable_sigma.1 <| p.changeOriginSeries_summable_aux₂ hr k).2
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type ?u.1521843
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r✝ R r : ℝ≥0
hr : ↑r < radius p
k : ℕ
⊢ Summable fun l => ‖changeOriginSeries p k l‖₊ * r ^ l

tactic: simp only [NNReal.tsum_mul_right]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type ?u.1521843
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r✝ R r : ℝ≥0
hr : ↑r < radius p
k n : ℕ
⊢ ‖changeOriginSeries p k n‖₊ * r ^ n ≤
    ∑' (y : { s // Finset.card s = n }), ‖p (k + { fst := n, snd := y }.fst)‖₊ * r ^ { fst := n, snd := y }.fst

tactic: exact mul_le_mul' (p.nnnorm_changeOriginSeries_le_tsum _ _) le_rfl
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type ?u.1521843
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r✝ R r : ℝ≥0
hr : ↑r < radius p
k n : ℕ
⊢ ‖changeOriginSeries p k n‖₊ * r ^ n ≤ (∑' (x : { s // Finset.card s = n }), ‖p (k + n)‖₊) * r ^ n
Theorem: sup_assoc
File: Mathlib/Order/Lattice.lean

tactic: simp only [sup_le_iff]
state_before: α : Type u
β : Type v
inst✝ : SemilatticeSup α
a b c d x : α
⊢ a ⊔ b ⊔ c ≤ x ↔ a ⊔ (b ⊔ c) ≤ x

tactic: rw [and_assoc]
state_before: α : Type u
β : Type v
inst✝ : SemilatticeSup α
a b c d x : α
⊢ (a ≤ x ∧ b ≤ x) ∧ c ≤ x ↔ a ≤ x ∧ b ≤ x ∧ c ≤ x
Theorem: Finset.centroid_singleton
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

tactic: simp [centroid_def, affineCombination_apply]
state_before: k : Type u_2
V : Type u_3
P : Type u_1
inst✝³ : DivisionRing k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type ?u.480542
s₂ : Finset ι₂
p : ι → P
i : ι
⊢ centroid k {i} p = p i
Theorem: Multiset.length_ndinsert_of_mem
File: Mathlib/Data/Multiset/FinsetOps.lean

tactic: simp [h]
state_before: α : Type u_1
inst✝ : DecidableEq α
s✝ : Multiset α
a : α
s : Multiset α
h : a ∈ s
⊢ ↑card (ndinsert a s) = ↑card s
Theorem: Associates.pow_factors
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: induction' k with n h
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝¹ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
inst✝ : Nontrivial α
a : Associates α
k : ℕ
⊢ factors (a ^ k) = k • factors a

tactic: rw [zero_nsmul, pow_zero]
state_before: case zero
α : Type u_1
inst✝² : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝¹ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
inst✝ : Nontrivial α
a : Associates α
⊢ factors (a ^ Nat.zero) = Nat.zero • factors a

tactic: exact factors_one
state_before: case zero
α : Type u_1
inst✝² : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝¹ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
inst✝ : Nontrivial α
a : Associates α
⊢ factors 1 = 0

tactic: rw [pow_succ, succ_nsmul, factors_mul, h]
state_before: case succ
α : Type u_1
inst✝² : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝¹ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
inst✝ : Nontrivial α
a : Associates α
n : ℕ
h : factors (a ^ n) = n • factors a
⊢ factors (a ^ Nat.succ n) = Nat.succ n • factors a
Theorem: ContinuousMap.compactConvNhd_nhd_basis
File: Mathlib/Topology/UniformSpace/CompactConvergence.lean

tactic: obtain ⟨V', h₁, h₂⟩ := comp_mem_uniformity_sets hV
state_before: α : Type u₁
β : Type u₂
inst✝¹ : TopologicalSpace α
inst✝ : UniformSpace β
K : Set α
V : Set (β × β)
f : C(α, β)
hV : V ∈ 𝓤 β
⊢ ∃ V', V' ∈ 𝓤 β ∧ V' ⊆ V ∧ ∀ (g : C(α, β)), g ∈ compactConvNhd K V' f → compactConvNhd K V' g ⊆ compactConvNhd K V f

tactic: exact
  ⟨V', h₁, Subset.trans (subset_comp_self_of_mem_uniformity h₁) h₂, fun g hg g' hg' =>
    compactConvNhd_mono f h₂ (compactConvNhd_mem_comp f hg hg')⟩
state_before: case intro.intro
α : Type u₁
β : Type u₂
inst✝¹ : TopologicalSpace α
inst✝ : UniformSpace β
K : Set α
V : Set (β × β)
f : C(α, β)
hV : V ∈ 𝓤 β
V' : Set (β × β)
h₁ : V' ∈ 𝓤 β
h₂ : V' ○ V' ⊆ V
⊢ ∃ V', V' ∈ 𝓤 β ∧ V' ⊆ V ∧ ∀ (g : C(α, β)), g ∈ compactConvNhd K V' f → compactConvNhd K V' g ⊆ compactConvNhd K V f
Theorem: Set.preimage_sub_const_Ioo
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: simp [sub_eq_add_neg]
state_before: α : Type u_1
inst✝ : OrderedAddCommGroup α
a b c : α
⊢ (fun x => x - a) ⁻¹' Ioo b c = Ioo (b + a) (c + a)
Theorem: PEquiv.trans_symm_eq_iff_forall_isSome
File: Mathlib/Data/PEquiv.lean

tactic: rw [self_trans_symm, ofSet_eq_refl, Set.eq_univ_iff_forall]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type x
f : α ≃. β
⊢ PEquiv.trans f (PEquiv.symm f) = PEquiv.refl α ↔ ∀ (a : α), isSome (↑f a) = true

tactic: rfl
state_before: α : Type u
β : Type v
γ : Type w
δ : Type x
f : α ≃. β
⊢ (∀ (x : α), x ∈ {a | isSome (↑f a) = true}) ↔ ∀ (a : α), isSome (↑f a) = true
Theorem: ENNReal.tendsto_toReal_iff
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: lift f to ι → ℝ≥0 using hf
state_before: α : Type ?u.305098
β : Type ?u.305101
γ : Type ?u.305104
a b c d : ℝ≥0∞
r p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
ι : Type u_1
fi : Filter ι
f : ι → ℝ≥0∞
hf : ∀ (i : ι), f i ≠ ⊤
x : ℝ≥0∞
hx : x ≠ ⊤
⊢ Tendsto (fun n => ENNReal.toReal (f n)) fi (𝓝 (ENNReal.toReal x)) ↔ Tendsto f fi (𝓝 x)

tactic: lift x to ℝ≥0 using hx
state_before: case intro
α : Type ?u.305098
β : Type ?u.305101
γ : Type ?u.305104
a b c d : ℝ≥0∞
r p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
ι : Type u_1
fi : Filter ι
x : ℝ≥0∞
hx : x ≠ ⊤
f : ι → ℝ≥0
⊢ Tendsto (fun n => ENNReal.toReal ((fun i => ↑(f i)) n)) fi (𝓝 (ENNReal.toReal x)) ↔ Tendsto (fun i => ↑(f i)) fi (𝓝 x)

tactic: simp [tendsto_coe]
state_before: case intro.intro
α : Type ?u.305098
β : Type ?u.305101
γ : Type ?u.305104
a b c d : ℝ≥0∞
r p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
ι : Type u_1
fi : Filter ι
f : ι → ℝ≥0
x : ℝ≥0
⊢ Tendsto (fun n => ENNReal.toReal ((fun i => ↑(f i)) n)) fi (𝓝 (ENNReal.toReal ↑x)) ↔
    Tendsto (fun i => ↑(f i)) fi (𝓝 ↑x)
Theorem: Finset.iSup_singleton
File: Mathlib/Data/Finset/Lattice.lean

tactic: simp
state_before: F : Type ?u.429228
α : Type u_2
β : Type u_1
γ : Type ?u.429237
ι : Type ?u.429240
κ : Type ?u.429243
inst✝ : CompleteLattice β
a : α
s : α → β
⊢ (⨆ (x : α) (_ : x ∈ {a}), s x) = s a
Theorem: List.Duplicate.mem
File: Mathlib/Data/List/Duplicate.lean

tactic: induction' h with l' _ y l' _ hm
state_before: α : Type u_1
l : List α
x : α
h : x ∈+ l
⊢ x ∈ l

tactic: exact mem_cons_self _ _
state_before: case cons_mem
α : Type u_1
l : List α
x : α
l' : List α
a✝ : x ∈ l'
⊢ x ∈ x :: l'

tactic: exact mem_cons_of_mem _ hm
state_before: case cons_duplicate
α : Type u_1
l : List α
x y : α
l' : List α
a✝ : x ∈+ l'
hm : x ∈ l'
⊢ x ∈ y :: l'
Theorem: Subgroup.bot_or_nontrivial
File: Mathlib/GroupTheory/Subgroup/Basic.lean

tactic: by_cases h : ∀ x ∈ H, x = (1 : G)
state_before: G : Type u_1
G' : Type ?u.174621
inst✝² : Group G
inst✝¹ : Group G'
A : Type ?u.174630
inst✝ : AddGroup A
H✝ K H : Subgroup G
⊢ H = ⊥ ∨ Nontrivial { x // x ∈ H }

tactic: left
state_before: case pos
G : Type u_1
G' : Type ?u.174621
inst✝² : Group G
inst✝¹ : Group G'
A : Type ?u.174630
inst✝ : AddGroup A
H✝ K H : Subgroup G
h : ∀ (x : G), x ∈ H → x = 1
⊢ H = ⊥ ∨ Nontrivial { x // x ∈ H }

tactic: exact H.eq_bot_iff_forall.mpr h
state_before: case pos.h
G : Type u_1
G' : Type ?u.174621
inst✝² : Group G
inst✝¹ : Group G'
A : Type ?u.174630
inst✝ : AddGroup A
H✝ K H : Subgroup G
h : ∀ (x : G), x ∈ H → x = 1
⊢ H = ⊥

tactic: right
state_before: case neg
G : Type u_1
G' : Type ?u.174621
inst✝² : Group G
inst✝¹ : Group G'
A : Type ?u.174630
inst✝ : AddGroup A
H✝ K H : Subgroup G
h : ¬∀ (x : G), x ∈ H → x = 1
⊢ H = ⊥ ∨ Nontrivial { x // x ∈ H }

tactic: simp only [not_forall] at h
state_before: case neg.h
G : Type u_1
G' : Type ?u.174621
inst✝² : Group G
inst✝¹ : Group G'
A : Type ?u.174630
inst✝ : AddGroup A
H✝ K H : Subgroup G
h : ¬∀ (x : G), x ∈ H → x = 1
⊢ Nontrivial { x // x ∈ H }

tactic: simpa [nontrivial_iff_exists_ne_one] using h
state_before: case neg.h
G : Type u_1
G' : Type ?u.174621
inst✝² : Group G
inst✝¹ : Group G'
A : Type ?u.174630
inst✝ : AddGroup A
H✝ K H : Subgroup G
h : ∃ x x_1, ¬x = 1
⊢ Nontrivial { x // x ∈ H }
Theorem: Set.bddAbove_mul
File: Mathlib/Data/Set/Pointwise/Basic.lean

tactic: rintro ⟨bA, hbA⟩ ⟨bB, hbB⟩
state_before: F : Type ?u.160142
α : Type u_1
β : Type ?u.160148
γ : Type ?u.160151
inst✝ : OrderedCommMonoid α
A B : Set α
⊢ BddAbove A → BddAbove B → BddAbove (A * B)

tactic: use bA * bB
state_before: case intro.intro
F : Type ?u.160142
α : Type u_1
β : Type ?u.160148
γ : Type ?u.160151
inst✝ : OrderedCommMonoid α
A B : Set α
bA : α
hbA : bA ∈ upperBounds A
bB : α
hbB : bB ∈ upperBounds B
⊢ BddAbove (A * B)

tactic: rintro x ⟨xa, xb, hxa, hxb, rfl⟩
state_before: case intro.intro
F : Type ?u.160142
α : Type u_1
β : Type ?u.160148
γ : Type ?u.160151
inst✝ : OrderedCommMonoid α
A B : Set α
bA : α
hbA : bA ∈ upperBounds A
bB : α
hbB : bB ∈ upperBounds B
⊢ bA * bB ∈ upperBounds (A * B)

tactic: exact mul_le_mul' (hbA hxa) (hbB hxb)
state_before: case intro.intro.intro.intro.intro.intro
F : Type ?u.160142
α : Type u_1
β : Type ?u.160148
γ : Type ?u.160151
inst✝ : OrderedCommMonoid α
A B : Set α
bA : α
hbA : bA ∈ upperBounds A
bB : α
hbB : bB ∈ upperBounds B
xa xb : α
hxa : xa ∈ A
hxb : xb ∈ B
⊢ (fun x x_1 => x * x_1) xa xb ≤ bA * bB
Theorem: Nat.even_div
File: Mathlib/Data/Nat/Parity.lean

tactic: rw [even_iff_two_dvd, dvd_iff_mod_eq_zero, Nat.div_mod_eq_mod_mul_div, mul_comm]
state_before: m n : ℕ
⊢ Even (m / n) ↔ m % (2 * n) / n = 0