tasksource/leandojo huggingface dataset:
Theorem: Flow.isInvariant_omegaLimit
File: Mathlib/Dynamics/OmegaLimit.lean

tactic: refine' fun t ↦ MapsTo.mono_right _ (omegaLimit_subset_of_tendsto ϕ s (hf t))
state_before: τ : Type u_1
inst✝³ : TopologicalSpace τ
inst✝² : AddMonoid τ
inst✝¹ : ContinuousAdd τ
α : Type u_2
inst✝ : TopologicalSpace α
f : Filter τ
ϕ : Flow τ α
s : Set α
hf : ∀ (t : τ), Tendsto ((fun x x_1 => x + x_1) t) f f
⊢ IsInvariant ϕ.toFun (ω f ϕ.toFun s)

tactic: exact
  mapsTo_omegaLimit _ (mapsTo_id _) (fun t' x ↦ (ϕ.map_add _ _ _).symm)
    (continuous_const.flow ϕ continuous_id)
state_before: τ : Type u_1
inst✝³ : TopologicalSpace τ
inst✝² : AddMonoid τ
inst✝¹ : ContinuousAdd τ
α : Type u_2
inst✝ : TopologicalSpace α
f : Filter τ
ϕ : Flow τ α
s : Set α
hf : ∀ (t : τ), Tendsto ((fun x x_1 => x + x_1) t) f f
t : τ
⊢ MapsTo (toFun ϕ t) (ω f ϕ.toFun s) (ω f (fun t_1 x => toFun ϕ ((fun x x_1 => x + x_1) t t_1) x) s)
Theorem: FirstOrder.Language.Theory.CompleteType.toList_foldr_inf_mem
File: Mathlib/ModelTheory/Types.lean

tactic: simp_rw [subset_def, ← SetLike.mem_coe, p.isMaximal.mem_iff_models, models_sentence_iff,
  Sentence.Realize, Formula.Realize, BoundedFormula.realize_foldr_inf, Finset.mem_toList]
state_before: L : Language
T : Theory L
α : Type w
p : CompleteType T α
t : Finset (Sentence (L[[α]]))
⊢ List.foldr (fun x x_1 => x ⊓ x_1) ⊤ (Finset.toList t) ∈ p ↔ ↑t ⊆ ↑p

tactic: exact ⟨fun h φ hφ M => h _ _ hφ, fun h M φ hφ => h _ hφ _⟩
state_before: L : Language
T : Theory L
α : Type w
p : CompleteType T α
t : Finset (Sentence (L[[α]]))
⊢ (∀ (M : ModelType ↑p) (φ : BoundedFormula (L[[α]]) Empty 0), φ ∈ t → BoundedFormula.Realize φ default default) ↔
    ∀ (x : Sentence (L[[α]])), x ∈ ↑t → ∀ (M : ModelType ↑p), BoundedFormula.Realize x default default
Theorem: Filter.tendsto_atTop_principal
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: rw [tendsto_iff_comap, comap_principal, le_principal_iff, mem_atTop_sets]
state_before: ι : Type ?u.256503
ι' : Type ?u.256506
α : Type u_2
β : Type u_1
γ : Type ?u.256515
inst✝¹ : Nonempty β
inst✝ : SemilatticeSup β
f : β → α
s : Set α
⊢ Tendsto f atTop (𝓟 s) ↔ ∃ N, ∀ (n : β), n ≥ N → f n ∈ s

tactic: rfl
state_before: ι : Type ?u.256503
ι' : Type ?u.256506
α : Type u_2
β : Type u_1
γ : Type ?u.256515
inst✝¹ : Nonempty β
inst✝ : SemilatticeSup β
f : β → α
s : Set α
⊢ (∃ a, ∀ (b : β), b ≥ a → b ∈ f ⁻¹' s) ↔ ∃ N, ∀ (n : β), n ≥ N → f n ∈ s
Theorem: nullMeasurableSet_eq_fun
File: Mathlib/MeasureTheory/Group/Arithmetic.lean

tactic: apply (measurableSet_eq_fun hf.measurable_mk hg.measurable_mk).nullMeasurableSet.congr
state_before: G : Type ?u.2047564
α : Type u_2
inst✝⁵ : MeasurableSpace G
inst✝⁴ : Div G
m : MeasurableSpace α
f✝ g✝ : α → G
μ : MeasureTheory.Measure α
E : Type u_1
inst✝³ : MeasurableSpace E
inst✝² : AddGroup E
inst✝¹ : MeasurableSingletonClass E
inst✝ : MeasurableSub₂ E
f g : α → E
hf : AEMeasurable f
hg : AEMeasurable g
⊢ NullMeasurableSet {x | f x = g x}

tactic: filter_upwards [hf.ae_eq_mk, hg.ae_eq_mk]with x hfx hgx
state_before: G : Type ?u.2047564
α : Type u_2
inst✝⁵ : MeasurableSpace G
inst✝⁴ : Div G
m : MeasurableSpace α
f✝ g✝ : α → G
μ : MeasureTheory.Measure α
E : Type u_1
inst✝³ : MeasurableSpace E
inst✝² : AddGroup E
inst✝¹ : MeasurableSingletonClass E
inst✝ : MeasurableSub₂ E
f g : α → E
hf : AEMeasurable f
hg : AEMeasurable g
⊢ {x | AEMeasurable.mk f hf x = AEMeasurable.mk g hg x} =ᵐ[μ] {x | f x = g x}

tactic: change (hf.mk f x = hg.mk g x) = (f x = g x)
state_before: case h
G : Type ?u.2047564
α : Type u_2
inst✝⁵ : MeasurableSpace G
inst✝⁴ : Div G
m : MeasurableSpace α
f✝ g✝ : α → G
μ : MeasureTheory.Measure α
E : Type u_1
inst✝³ : MeasurableSpace E
inst✝² : AddGroup E
inst✝¹ : MeasurableSingletonClass E
inst✝ : MeasurableSub₂ E
f g : α → E
hf : AEMeasurable f
hg : AEMeasurable g
x : α
hfx : f x = AEMeasurable.mk f hf x
hgx : g x = AEMeasurable.mk g hg x
⊢ setOf (fun x => AEMeasurable.mk f hf x = AEMeasurable.mk g hg x) x = setOf (fun x => f x = g x) x

tactic: simp only [hfx, hgx]
state_before: case h
G : Type ?u.2047564
α : Type u_2
inst✝⁵ : MeasurableSpace G
inst✝⁴ : Div G
m : MeasurableSpace α
f✝ g✝ : α → G
μ : MeasureTheory.Measure α
E : Type u_1
inst✝³ : MeasurableSpace E
inst✝² : AddGroup E
inst✝¹ : MeasurableSingletonClass E
inst✝ : MeasurableSub₂ E
f g : α → E
hf : AEMeasurable f
hg : AEMeasurable g
x : α
hfx : f x = AEMeasurable.mk f hf x
hgx : g x = AEMeasurable.mk g hg x
⊢ (AEMeasurable.mk f hf x = AEMeasurable.mk g hg x) = (f x = g x)
Theorem: Polynomial.taylor_one
File: Mathlib/Data/Polynomial/Taylor.lean

tactic: rw [← C_1, taylor_C]
state_before: R : Type u_1
inst✝ : Semiring R
r : R
f : R[X]
⊢ ↑(taylor r) 1 = ↑C 1
Theorem: strictConvexOn_zpow
File: Mathlib/Analysis/Convex/SpecificFunctions/Deriv.lean

tactic: apply strictConvexOn_of_deriv2_pos' (convex_Ioi 0)
state_before: m : ℤ
hm₀ : m ≠ 0
hm₁ : m ≠ 1
⊢ StrictConvexOn ℝ (Ioi 0) fun x => x ^ m

tactic: intro x hx
state_before: case hf''
m : ℤ
hm₀ : m ≠ 0
hm₁ : m ≠ 1
⊢ ∀ (x : ℝ), x ∈ Ioi 0 → 0 < (deriv^[2]) (fun x => x ^ m) x

tactic: rw [mem_Ioi] at hx
state_before: case hf''
m : ℤ
hm₀ : m ≠ 0
hm₁ : m ≠ 1
x : ℝ
hx : x ∈ Ioi 0
⊢ 0 < (deriv^[2]) (fun x => x ^ m) x

tactic: rw [iter_deriv_zpow]
state_before: case hf''
m : ℤ
hm₀ : m ≠ 0
hm₁ : m ≠ 1
x : ℝ
hx : 0 < x
⊢ 0 < (deriv^[2]) (fun x => x ^ m) x

tactic: refine' mul_pos _ (zpow_pos_of_pos hx _)
state_before: case hf''
m : ℤ
hm₀ : m ≠ 0
hm₁ : m ≠ 1
x : ℝ
hx : 0 < x
⊢ 0 < (∏ i in Finset.range 2, (↑m - ↑i)) * x ^ (m - ↑2)

tactic: norm_cast
state_before: case hf''
m : ℤ
hm₀ : m ≠ 0
hm₁ : m ≠ 1
x : ℝ
hx : 0 < x
⊢ 0 < ∏ i in Finset.range 2, (↑m - ↑i)

tactic: refine' int_prod_range_pos (by simp only) fun hm => _
state_before: case hf''
m : ℤ
hm₀ : m ≠ 0
hm₁ : m ≠ 1
x : ℝ
hx : 0 < x
⊢ 0 < ∏ i in Finset.range 2, (m - ↑i)

tactic: rw [← Finset.coe_Ico] at hm
state_before: case hf''
m : ℤ
hm₀ : m ≠ 0
hm₁ : m ≠ 1
x : ℝ
hx : 0 < x
hm : m ∈ Ico 0 ↑2
⊢ False

tactic: norm_cast at hm
state_before: case hf''
m : ℤ
hm₀ : m ≠ 0
hm₁ : m ≠ 1
x : ℝ
hx : 0 < x
hm✝ : m ∈ Ico 0 ↑2
hm : m ∈ ↑(Finset.Ico 0 ↑2)
⊢ False

tactic: fin_cases hm <;> simp_all
state_before: case hf''
m : ℤ
hm₀ : m ≠ 0
hm₁ : m ≠ 1
x : ℝ
hx : 0 < x
hm✝ : m ∈ Ico 0 ↑2
hm : m ∈ Finset.Ico 0 2
⊢ False

tactic: exact (continuousOn_zpow₀ m).mono fun x hx => ne_of_gt hx
state_before: case hf
m : ℤ
hm₀ : m ≠ 0
hm₁ : m ≠ 1
⊢ ContinuousOn (fun x => x ^ m) (Ioi 0)

tactic: simp only
state_before: m : ℤ
hm₀ : m ≠ 0
hm₁ : m ≠ 1
x : ℝ
hx : 0 < x
⊢ Even 2
Theorem: toIcoMod_eq_sub
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: rw [toIcoMod_sub_eq_sub, zero_add, sub_add_cancel]
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
⊢ toIcoMod hp a b = toIcoMod hp 0 (b - a) + a
Theorem: iSup_false
File: Mathlib/Order/CompleteLattice.lean

tactic: simp
state_before: α : Type u_1
β : Type ?u.104937
β₂ : Type ?u.104940
γ : Type ?u.104943
ι : Sort ?u.104946
ι' : Sort ?u.104949
κ : ι → Sort ?u.104954
κ' : ι' → Sort ?u.104959
inst✝ : CompleteLattice α
f g s✝ t : ι → α
a b : α
s : False → α
⊢ iSup s = ⊥
Theorem: Finset.sigma_nonempty
File: Mathlib/Data/Finset/Sigma.lean

tactic: simp [Finset.Nonempty]
state_before: ι : Type u_1
α : ι → Type u_2
β : Type ?u.1273
s s₁ s₂ : Finset ι
t t₁ t₂ : (i : ι) → Finset (α i)
⊢ Finset.Nonempty (Finset.sigma s t) ↔ ∃ i, i ∈ s ∧ Finset.Nonempty (t i)
Theorem: CategoryTheory.leftUnitor_inv_braiding
File: Mathlib/CategoryTheory/Monoidal/Braided.lean

tactic: apply (cancel_mono (ρ_ X).hom).1
state_before: C : Type u₁
inst✝² : Category C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
X : C
⊢ (λ_ X).inv ≫ (β_ (𝟙_ C) X).hom = (ρ_ X).inv

tactic: simp only [assoc, braiding_rightUnitor, Iso.inv_hom_id]
state_before: C : Type u₁
inst✝² : Category C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
X : C
⊢ ((λ_ X).inv ≫ (β_ (𝟙_ C) X).hom) ≫ (ρ_ X).hom = (ρ_ X).inv ≫ (ρ_ X).hom
Theorem: MeasureTheory.integrable_withDensity_iff_integrable_smul'
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: rw [← withDensity_congr_ae (coe_toNNReal_ae_eq hflt),
  integrable_withDensity_iff_integrable_smul]
state_before: α : Type u_1
β : Type ?u.1021419
γ : Type ?u.1021422
δ : Type ?u.1021425
m : MeasurableSpace α
μ ν : Measure α
inst✝⁴ : MeasurableSpace δ
inst✝³ : NormedAddCommGroup β
inst✝² : NormedAddCommGroup γ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0∞
hf : Measurable f
hflt : ∀ᵐ (x : α) ∂μ, f x < ⊤
g : α → E
⊢ Integrable g ↔ Integrable fun x => ENNReal.toReal (f x) • g x

tactic: rfl
state_before: α : Type u_1
β : Type ?u.1021419
γ : Type ?u.1021422
δ : Type ?u.1021425
m : MeasurableSpace α
μ ν : Measure α
inst✝⁴ : MeasurableSpace δ
inst✝³ : NormedAddCommGroup β
inst✝² : NormedAddCommGroup γ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0∞
hf : Measurable f
hflt : ∀ᵐ (x : α) ∂μ, f x < ⊤
g : α → E
⊢ (Integrable fun x => ENNReal.toNNReal (f x) • g x) ↔ Integrable fun x => ENNReal.toReal (f x) • g x

tactic: exact hf.ennreal_toNNReal
state_before: case hf
α : Type u_1
β : Type ?u.1021419
γ : Type ?u.1021422
δ : Type ?u.1021425
m : MeasurableSpace α
μ ν : Measure α
inst✝⁴ : MeasurableSpace δ
inst✝³ : NormedAddCommGroup β
inst✝² : NormedAddCommGroup γ
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : α → ℝ≥0∞
hf : Measurable f
hflt : ∀ᵐ (x : α) ∂μ, f x < ⊤
g : α → E
⊢ Measurable fun x => ENNReal.toNNReal (f x)
Theorem: LieSubmodule.lie_le_right
File: Mathlib/Algebra/Lie/IdealOperations.lean

tactic: rw [lieIdeal_oper_eq_span, lieSpan_le]
state_before: R : Type u
L : Type v
M : Type w
M₂ : Type w₁
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M₂
inst✝² : Module R M₂
inst✝¹ : LieRingModule L M₂
inst✝ : LieModule R L M₂
N N' : LieSubmodule R L M
I J : LieIdeal R L
N₂ : LieSubmodule R L M₂
⊢ ⁅I, N⁆ ≤ N

tactic: rintro m ⟨x, n, hn⟩
state_before: R : Type u
L : Type v
M : Type w
M₂ : Type w₁
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M₂
inst✝² : Module R M₂
inst✝¹ : LieRingModule L M₂
inst✝ : LieModule R L M₂
N N' : LieSubmodule R L M
I J : LieIdeal R L
N₂ : LieSubmodule R L M₂
⊢ {m | ∃ x n, ⁅↑x, ↑n⁆ = m} ⊆ ↑N

tactic: rw [← hn]
state_before: case intro.intro
R : Type u
L : Type v
M : Type w
M₂ : Type w₁
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M₂
inst✝² : Module R M₂
inst✝¹ : LieRingModule L M₂
inst✝ : LieModule R L M₂
N N' : LieSubmodule R L M
I J : LieIdeal R L
N₂ : LieSubmodule R L M₂
m : M
x : { x // x ∈ I }
n : { x // x ∈ N }
hn : ⁅↑x, ↑n⁆ = m
⊢ m ∈ ↑N

tactic: exact N.lie_mem n.property
state_before: case intro.intro
R : Type u
L : Type v
M : Type w
M₂ : Type w₁
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M₂
inst✝² : Module R M₂
inst✝¹ : LieRingModule L M₂
inst✝ : LieModule R L M₂
N N' : LieSubmodule R L M
I J : LieIdeal R L
N₂ : LieSubmodule R L M₂
m : M
x : { x // x ∈ I }
n : { x // x ∈ N }
hn : ⁅↑x, ↑n⁆ = m
⊢ ⁅↑x, ↑n⁆ ∈ ↑N
Theorem: TopCat.inducing_prod_map
File: Mathlib/Topology/Category/TopCat/Limits/Products.lean

tactic: constructor
state_before: J : Type v
inst✝ : SmallCategory J
W X Y Z : TopCat
f : W ⟶ X
g : Y ⟶ Z
hf : Inducing ((forget TopCat).map f)
hg : Inducing ((forget TopCat).map g)
⊢ Inducing ((forget TopCat).map (prod.map f g))

tactic: simp only [prod_topology, induced_compose, ← coe_comp, Limits.prod.map_fst, Limits.prod.map_snd,
  induced_inf]
state_before: case induced
J : Type v
inst✝ : SmallCategory J
W X Y Z : TopCat
f : W ⟶ X
g : Y ⟶ Z
hf : Inducing ((forget TopCat).map f)
hg : Inducing ((forget TopCat).map g)
⊢ topologicalSpace_forget (W ⨯ Y) = induced ((forget TopCat).map (prod.map f g)) (topologicalSpace_forget (X ⨯ Z))

tactic: simp only [coe_comp]
state_before: case induced
J : Type v
inst✝ : SmallCategory J
W X Y Z : TopCat
f : W ⟶ X
g : Y ⟶ Z
hf : Inducing ((forget TopCat).map f)
hg : Inducing ((forget TopCat).map g)
⊢ induced ((forget TopCat).map prod.fst) W.str ⊓ induced ((forget TopCat).map prod.snd) Y.str =
    induced ((forget TopCat).map (prod.fst ≫ f)) X.str ⊓ induced ((forget TopCat).map (prod.snd ≫ g)) Z.str

tactic: rw [← @induced_compose _ _ _ _ _ f, ← @induced_compose _ _ _ _ _ g, ← hf.induced, ← hg.induced]
state_before: case induced
J : Type v
inst✝ : SmallCategory J
W X Y Z : TopCat
f : W ⟶ X
g : Y ⟶ Z
hf : Inducing ((forget TopCat).map f)
hg : Inducing ((forget TopCat).map g)
⊢ induced ((forget TopCat).map prod.fst) W.str ⊓ induced ((forget TopCat).map prod.snd) Y.str =
    induced ((forget TopCat).map f ∘ (forget TopCat).map prod.fst) X.str ⊓
      induced ((forget TopCat).map g ∘ (forget TopCat).map prod.snd) Z.str
Theorem: Complex.frontier_setOf_re_lt
File: Mathlib/Analysis/Complex/ReImTopology.lean

tactic: simpa only [frontier_Iio] using frontier_preimage_re (Iio a)
state_before: a : ℝ
⊢ frontier {z | z.re < a} = {z | z.re = a}
Theorem: NNReal.tendsto_sum_nat_add
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: rw [← tendsto_coe]
state_before: α : Type ?u.319791
β : Type ?u.319794
γ : Type ?u.319797
f : ℕ → ℝ≥0
⊢ Tendsto (fun i => ∑' (k : ℕ), f (k + i)) atTop (𝓝 0)

tactic: convert _root_.tendsto_sum_nat_add fun i => (f i : ℝ)
state_before: α : Type ?u.319791
β : Type ?u.319794
γ : Type ?u.319797
f : ℕ → ℝ≥0
⊢ Tendsto (fun a => ↑(∑' (k : ℕ), f (k + a))) atTop (𝓝 ↑0)

tactic: norm_cast
state_before: case h.e'_3.h
α : Type ?u.319791
β : Type ?u.319794
γ : Type ?u.319797
f : ℕ → ℝ≥0
x✝ : ℕ
⊢ ↑(∑' (k : ℕ), f (k + x✝)) = ∑' (k : ℕ), ↑(f (k + x✝))
Theorem: Std.RBNode.setBlack_idem
File: Std/Data/RBMap/WF.lean

tactic: cases t <;> rfl
state_before: α : Type u_1
t : RBNode α
⊢ setBlack (setBlack t) = setBlack t
Theorem: AddMonoidAlgebra.single_zero_mul_apply
File: Mathlib/Algebra/MonoidAlgebra/Basic.lean

tactic: rw [zero_add]
state_before: k : Type u₁
G : Type u₂
R : Type ?u.2059773
inst✝¹ : Semiring k
inst✝ : AddZeroClass G
f : AddMonoidAlgebra k G
r : k
x a : G
⊢ 0 + a = x ↔ a = x
Theorem: SimpleGraph.compl_eq_deleteEdges
File: Mathlib/Combinatorics/SimpleGraph/Basic.lean

tactic: ext
state_before: ι : Sort ?u.154998
𝕜 : Type ?u.155001
V : Type u
W : Type v
X : Type w
G : SimpleGraph V
G' : SimpleGraph W
a b c u v w : V
e : Sym2 V
⊢ Gᶜ = deleteEdges ⊤ (edgeSet G)

tactic: simp
state_before: case Adj.h.h.a
ι : Sort ?u.154998
𝕜 : Type ?u.155001
V : Type u
W : Type v
X : Type w
G : SimpleGraph V
G' : SimpleGraph W
a b c u v w : V
e : Sym2 V
x✝¹ x✝ : V
⊢ Adj (Gᶜ) x✝¹ x✝ ↔ Adj (deleteEdges ⊤ (edgeSet G)) x✝¹ x✝
Theorem: ENNReal.tsum_condensed_le
File: Mathlib/Analysis/PSeries.lean

tactic: rw [ENNReal.tsum_eq_iSup_nat' (tendsto_atTop_mono Nat.le_succ tendsto_id), two_mul, ← two_nsmul]
state_before: f : ℕ → ℝ≥0∞
hf : ∀ ⦃m n : ℕ⦄, 1 < m → m ≤ n → f n ≤ f m
⊢ (∑' (k : ℕ), 2 ^ k * f (2 ^ k)) ≤ f 1 + 2 * ∑' (k : ℕ), f k

tactic: refine'
  iSup_le fun n =>
    le_trans _
      (add_le_add_left
        (nsmul_le_nsmul_of_le_right (ENNReal.sum_le_tsum <| Finset.Ico 2 (2 ^ n + 1)) _) _)
state_before: f : ℕ → ℝ≥0∞
hf : ∀ ⦃m n : ℕ⦄, 1 < m → m ≤ n → f n ≤ f m
⊢ (⨆ (i : ℕ), ∑ a in Finset.range (Nat.succ i), 2 ^ a * f (2 ^ a)) ≤ f 1 + 2 • ∑' (k : ℕ), f k

tactic: simpa using Finset.sum_condensed_le hf n
state_before: f : ℕ → ℝ≥0∞
hf : ∀ ⦃m n : ℕ⦄, 1 < m → m ≤ n → f n ≤ f m
n : ℕ
⊢ ∑ a in Finset.range (Nat.succ n), 2 ^ a * f (2 ^ a) ≤ f 1 + 2 • ∑ x in Finset.Ico 2 (2 ^ n + 1), f x
Theorem: Set.Ioc_union_Ioc_right
File: Mathlib/Data/Set/Intervals/Basic.lean

tactic: rw [Ioc_union_Ioc, min_self] <;> exact (min_le_left _ _).trans (le_max_left _ _)
state_before: α : Type u_1
β : Type ?u.211189
inst✝¹ : LinearOrder α
inst✝ : LinearOrder β
f : α → β
a a₁ a₂ b b₁ b₂ c d : α
⊢ Ioc a b ∪ Ioc a c = Ioc a (max b c)
Theorem: interior_Ioc
File: Mathlib/Topology/Order/Basic.lean

tactic: rw [← Ioi_inter_Iic, interior_inter, interior_Ioi, interior_Iic, Ioi_inter_Iio]
state_before: α : Type u
β : Type v
γ : Type w
inst✝⁴ : TopologicalSpace α
inst✝³ : LinearOrder α
inst✝² : OrderTopology α
inst✝¹ : DenselyOrdered α
a✝ b✝ : α
s : Set α
inst✝ : NoMaxOrder α
a b : α
⊢ interior (Ioc a b) = Ioo a b
Theorem: Filter.eventually_atBot_prod_self'
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: simp only [eventually_atBot_prod_self, ball_cond_comm]
state_before: ι : Type ?u.301355
ι' : Type ?u.301358
α : Type u_1
β : Type ?u.301364
γ : Type ?u.301367
inst✝¹ : SemilatticeInf α
inst✝ : Nonempty α
p : α × α → Prop
⊢ (∀ᶠ (x : α × α) in atBot, p x) ↔ ∃ a, ∀ (k : α), k ≤ a → ∀ (l : α), l ≤ a → p (k, l)
Theorem: Num.add_succ
File: Mathlib/Data/Num/Lemmas.lean

tactic: simp [zero_add]
state_before: α : Type ?u.173867
n : Num
⊢ 0 + succ n = succ (0 + n)

tactic: rw [PosNum.add_one, add_zero]
state_before: α : Type ?u.173867
p : PosNum
⊢ pos (p + 1) = succ (pos p + 0)

tactic: rfl
state_before: α : Type ?u.173867
p : PosNum
⊢ pos (PosNum.succ p) = succ (pos p)
Theorem: Polynomial.prod_cyclotomic_eq_X_pow_sub_one
File: Mathlib/RingTheory/Polynomial/Cyclotomic/Basic.lean

tactic: have integer : (∏ i in Nat.divisors n, cyclotomic i ℤ) = X ^ n - 1 := by
  apply map_injective (Int.castRingHom ℂ) Int.cast_injective
  simp only [Polynomial.map_prod, int_cyclotomic_spec, Polynomial.map_pow, map_X,
    Polynomial.map_one, Polynomial.map_sub]
  exact prod_cyclotomic'_eq_X_pow_sub_one hpos (Complex.isPrimitiveRoot_exp n hpos.ne')
state_before: n : ℕ
hpos : 0 < n
R : Type u_1
inst✝ : CommRing R
⊢ ∏ i in Nat.divisors n, cyclotomic i R = X ^ n - 1

tactic: simpa only [Polynomial.map_prod, map_cyclotomic_int, Polynomial.map_sub, Polynomial.map_one,
  Polynomial.map_pow, Polynomial.map_X] using congr_arg (map (Int.castRingHom R)) integer
state_before: n : ℕ
hpos : 0 < n
R : Type u_1
inst✝ : CommRing R
integer : ∏ i in Nat.divisors n, cyclotomic i ℤ = X ^ n - 1
⊢ ∏ i in Nat.divisors n, cyclotomic i R = X ^ n - 1

tactic: apply map_injective (Int.castRingHom ℂ) Int.cast_injective
state_before: n : ℕ
hpos : 0 < n
R : Type u_1
inst✝ : CommRing R
⊢ ∏ i in Nat.divisors n, cyclotomic i ℤ = X ^ n - 1

tactic: simp only [Polynomial.map_prod, int_cyclotomic_spec, Polynomial.map_pow, map_X,
  Polynomial.map_one, Polynomial.map_sub]
state_before: case a
n : ℕ
hpos : 0 < n
R : Type u_1
inst✝ : CommRing R
⊢ map (Int.castRingHom ℂ) (∏ i in Nat.divisors n, cyclotomic i ℤ) = map (Int.castRingHom ℂ) (X ^ n - 1)

tactic: exact prod_cyclotomic'_eq_X_pow_sub_one hpos (Complex.isPrimitiveRoot_exp n hpos.ne')
state_before: case a
n : ℕ
hpos : 0 < n
R : Type u_1
inst✝ : CommRing R
⊢ ∏ x in Nat.divisors n, cyclotomic' x ℂ = X ^ n - 1
Theorem: FreeProduct.lift_word_prod_nontrivial_of_head_eq_last
File: Mathlib/GroupTheory/FreeProduct.lean

tactic: obtain ⟨k, hk⟩ := exists_ne i
state_before: ι : Type u_1
M : ι → Type ?u.773601
inst✝⁴ : (i : ι) → Monoid (M i)
N : Type ?u.773612
inst✝³ : Monoid N
hnontriv : Nontrivial ι
G : Type u_3
inst✝² : Group G
H : ι → Type u_2
inst✝¹ : (i : ι) → Group (H i)
f : (i : ι) → H i →* G
hcard : 3 ≤ (#ι) ∨ ∃ i, 3 ≤ (#H i)
α : Type ?u.774393
inst✝ : MulAction G α
X : ι → Set α
hXnonempty : ∀ (i : ι), Set.Nonempty (X i)
hXdisj : Pairwise fun i j => Disjoint (X i) (X j)
hpp : Pairwise fun i j => ∀ (h : H i), h ≠ 1 → ↑(f i) h • X j ⊆ X i
i : ι
w : NeWord H i i
⊢ ↑(↑lift f) (NeWord.prod w) ≠ 1

tactic: exact lift_word_prod_nontrivial_of_other_i f X hXnonempty hXdisj hpp w hk hk
state_before: case intro
ι : Type u_1
M : ι → Type ?u.773601
inst✝⁴ : (i : ι) → Monoid (M i)
N : Type ?u.773612
inst✝³ : Monoid N
hnontriv : Nontrivial ι
G : Type u_3
inst✝² : Group G
H : ι → Type u_2
inst✝¹ : (i : ι) → Group (H i)
f : (i : ι) → H i →* G
hcard : 3 ≤ (#ι) ∨ ∃ i, 3 ≤ (#H i)
α : Type ?u.774393
inst✝ : MulAction G α
X : ι → Set α
hXnonempty : ∀ (i : ι), Set.Nonempty (X i)
hXdisj : Pairwise fun i j => Disjoint (X i) (X j)
hpp : Pairwise fun i j => ∀ (h : H i), h ≠ 1 → ↑(f i) h • X j ⊆ X i
i : ι
w : NeWord H i i
k : ι
hk : k ≠ i
⊢ ↑(↑lift f) (NeWord.prod w) ≠ 1
Theorem: LinearOrderedField.smul_Ioo
File: Mathlib/Algebra/Order/Pointwise.lean

tactic: ext x
state_before: α : Type ?u.52465
K : Type u_1
inst✝ : LinearOrderedField K
a b r : K
hr : 0 < r
⊢ r • Ioo a b = Ioo (r • a) (r • b)

tactic: simp only [mem_smul_set, smul_eq_mul, mem_Ioo]
state_before: case h
α : Type ?u.52465
K : Type u_1
inst✝ : LinearOrderedField K
a b r : K
hr : 0 < r
x : K
⊢ x ∈ r • Ioo a b ↔ x ∈ Ioo (r • a) (r • b)

tactic: constructor
state_before: case h
α : Type ?u.52465
K : Type u_1
inst✝ : LinearOrderedField K
a b r : K
hr : 0 < r
x : K
⊢ (∃ y, (a < y ∧ y < b) ∧ r * y = x) ↔ r * a < x ∧ x < r * b

tactic: rintro ⟨a, ⟨a_h_left_left, a_h_left_right⟩, rfl⟩
state_before: case h.mp
α : Type ?u.52465
K : Type u_1
inst✝ : LinearOrderedField K
a b r : K
hr : 0 < r
x : K
⊢ (∃ y, (a < y ∧ y < b) ∧ r * y = x) → r * a < x ∧ x < r * b

tactic: constructor
state_before: case h.mp.intro.intro.intro
α : Type ?u.52465
K : Type u_1
inst✝ : LinearOrderedField K
a✝ b r : K
hr : 0 < r
a : K
a_h_left_left : a✝ < a
a_h_left_right : a < b
⊢ r * a✝ < r * a ∧ r * a < r * b

tactic: exact (mul_lt_mul_left hr).mpr a_h_left_left
state_before: case h.mp.intro.intro.intro.left
α : Type ?u.52465
K : Type u_1
inst✝ : LinearOrderedField K
a✝ b r : K
hr : 0 < r
a : K
a_h_left_left : a✝ < a
a_h_left_right : a < b
⊢ r * a✝ < r * a

case h.mp.intro.intro.intro.right
α : Type ?u.52465
K : Type u_1
inst✝ : LinearOrderedField K
a✝ b r : K
hr : 0 < r
a : K
a_h_left_left : a✝ < a
a_h_left_right : a < b
⊢ r * a < r * b

tactic: exact (mul_lt_mul_left hr).mpr a_h_left_right
state_before: case h.mp.intro.intro.intro.right
α : Type ?u.52465
K : Type u_1
inst✝ : LinearOrderedField K
a✝ b r : K
hr : 0 < r
a : K
a_h_left_left : a✝ < a
a_h_left_right : a < b
⊢ r * a < r * b

tactic: rintro ⟨a_left, a_right⟩
state_before: case h.mpr
α : Type ?u.52465
K : Type u_1
inst✝ : LinearOrderedField K
a b r : K
hr : 0 < r
x : K
⊢ r * a < x ∧ x < r * b → ∃ y, (a < y ∧ y < b) ∧ r * y = x

tactic: use x / r
state_before: case h.mpr.intro
α : Type ?u.52465
K : Type u_1
inst✝ : LinearOrderedField K
a b r : K
hr : 0 < r
x : K
a_left : r * a < x
a_right : x < r * b
⊢ ∃ y, (a < y ∧ y < b) ∧ r * y = x

tactic: refine' ⟨⟨(lt_div_iff' hr).mpr a_left, (div_lt_iff' hr).mpr a_right⟩, _⟩
state_before: case h.mpr.intro
α : Type ?u.52465
K : Type u_1
inst✝ : LinearOrderedField K
a b r : K
hr : 0 < r
x : K
a_left : r * a < x
a_right : x < r * b
⊢ (a < x / r ∧ x / r < b) ∧ r * (x / r) = x

tactic: rw [mul_div_cancel' _ (ne_of_gt hr)]
state_before: case h.mpr.intro
α : Type ?u.52465
K : Type u_1
inst✝ : LinearOrderedField K
a b r : K
hr : 0 < r
x : K
a_left : r * a < x
a_right : x < r * b
⊢ r * (x / r) = x
Theorem: CharP.cast_eq_mod
File: Mathlib/Algebra/CharP/Basic.lean

tactic: rw [Nat.mod_add_div]
state_before: R : Type u_1
inst✝¹ : NonAssocRing R
p : ℕ
inst✝ : CharP R p
k : ℕ
⊢ ↑k = ↑(k % p + p * (k / p))

tactic: simp [cast_eq_zero]
state_before: R : Type u_1
inst✝¹ : NonAssocRing R
p : ℕ
inst✝ : CharP R p
k : ℕ
⊢ ↑(k % p + p * (k / p)) = ↑(k % p)
Theorem: Fin.val_succ
File: Mathlib/Data/Fin/Basic.lean

tactic: cases j
state_before: n m : ℕ
j : Fin n
⊢ ↑(succ j) = ↑j + 1

tactic: simp [Fin.succ]
state_before: case mk
n m val✝ : ℕ
isLt✝ : val✝ < n
⊢ ↑(succ { val := val✝, isLt := isLt✝ }) = ↑{ val := val✝, isLt := isLt✝ } + 1