tasksource/leandojo huggingface dataset:
Theorem: ConvexOn.lt_right_of_left_lt
File: Mathlib/Analysis/Convex/Function.lean

tactic: obtain ⟨a, b, ha, hb, hab, rfl⟩ := hz
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.618434
α : Type ?u.618437
β : Type u_3
ι : Type ?u.618443
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : AddCommMonoid E
inst✝⁴ : AddCommMonoid F
inst✝³ : LinearOrderedCancelAddCommMonoid β
inst✝² : Module 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s : Set E
f g : E → β
hf : ConvexOn 𝕜 s f
x y z : E
hx : x ∈ s
hy : y ∈ s
hz : z ∈ openSegment 𝕜 x y
hxz : f x < f z
⊢ f z < f y

tactic: exact hf.lt_right_of_left_lt' hx hy ha hb hab hxz
state_before: case intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type ?u.618434
α : Type ?u.618437
β : Type u_3
ι : Type ?u.618443
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : AddCommMonoid E
inst✝⁴ : AddCommMonoid F
inst✝³ : LinearOrderedCancelAddCommMonoid β
inst✝² : Module 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s : Set E
f g : E → β
hf : ConvexOn 𝕜 s f
x y : E
hx : x ∈ s
hy : y ∈ s
a b : 𝕜
ha : 0 < a
hb : 0 < b
hab : a + b = 1
hxz : f x < f (a • x + b • y)
⊢ f (a • x + b • y) < f y
Theorem: IntermediateField.restrictScalars_bot_eq_self
File: Mathlib/FieldTheory/Adjoin.lean

tactic: ext x
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
K : IntermediateField F E
⊢ restrictScalars F ⊥ = K

tactic: rw [mem_restrictScalars, mem_bot]
state_before: case h
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
K : IntermediateField F E
x : E
⊢ x ∈ restrictScalars F ⊥ ↔ x ∈ K

tactic: exact Set.ext_iff.mp Subtype.range_coe x
state_before: case h
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
K : IntermediateField F E
x : E
⊢ x ∈ Set.range ↑(algebraMap { x // x ∈ K } E) ↔ x ∈ K
Theorem: Real.Angle.sign_toReal
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: rcases lt_trichotomy θ.toReal 0 with (ht | ht | ht)
state_before: θ : Angle
h : θ ≠ ↑π
⊢ ↑SignType.sign (toReal θ) = sign θ

tactic: simp [ht, toReal_neg_iff_sign_neg.1 ht]
state_before: case inl
θ : Angle
h : θ ≠ ↑π
ht : toReal θ < 0
⊢ ↑SignType.sign (toReal θ) = sign θ

tactic: simp [sign, ht, ← sin_toReal]
state_before: case inr.inl
θ : Angle
h : θ ≠ ↑π
ht : toReal θ = 0
⊢ ↑SignType.sign (toReal θ) = sign θ

tactic: rw [sign, ← sin_toReal, sign_pos ht,
  sign_pos
    (sin_pos_of_pos_of_lt_pi ht ((toReal_le_pi θ).lt_of_ne (toReal_eq_pi_iff.not.2 h)))]
state_before: case inr.inr
θ : Angle
h : θ ≠ ↑π
ht : 0 < toReal θ
⊢ ↑SignType.sign (toReal θ) = sign θ
Theorem: Function.Periodic.zsmul
File: Mathlib/Algebra/Periodic.lean

tactic: cases' n with n n
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.104199
f g : α → β
c c₁ c₂ x : α
inst✝ : AddGroup α
h : Periodic f c
n : ℤ
⊢ Periodic f (n • c)

tactic: simpa only [Int.ofNat_eq_coe, coe_nat_zsmul] using h.nsmul n
state_before: case ofNat
α : Type u_1
β : Type u_2
γ : Type ?u.104199
f g : α → β
c c₁ c₂ x : α
inst✝ : AddGroup α
h : Periodic f c
n : ℕ
⊢ Periodic f (Int.ofNat n • c)

tactic: simpa only [negSucc_zsmul] using (h.nsmul (n + 1)).neg
state_before: case negSucc
α : Type u_1
β : Type u_2
γ : Type ?u.104199
f g : α → β
c c₁ c₂ x : α
inst✝ : AddGroup α
h : Periodic f c
n : ℕ
⊢ Periodic f (Int.negSucc n • c)
Theorem: Polynomial.roots_ne_zero_of_splits'
File: Mathlib/Data/Polynomial/Splits.lean

tactic: rw [← eval_map] at hx
state_before: F : Type u
K : Type v
L : Type w
inst✝² : CommRing K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
f : K[X]
hs : Splits i f
hf0 : natDegree (map i f) ≠ 0
x : L
hx : eval₂ i x f = 0
h : roots (map i f) = 0
⊢ False

tactic: have : f.map i ≠ 0 := by intro; simp_all
state_before: F : Type u
K : Type v
L : Type w
inst✝² : CommRing K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
f : K[X]
hs : Splits i f
hf0 : natDegree (map i f) ≠ 0
x : L
hx : eval x (map i f) = 0
h : roots (map i f) = 0
⊢ False

tactic: cases h.subst ((mem_roots this).2 hx)
state_before: F : Type u
K : Type v
L : Type w
inst✝² : CommRing K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
f : K[X]
hs : Splits i f
hf0 : natDegree (map i f) ≠ 0
x : L
hx : eval x (map i f) = 0
h : roots (map i f) = 0
this : map i f ≠ 0
⊢ False

tactic: intro
state_before: F : Type u
K : Type v
L : Type w
inst✝² : CommRing K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
f : K[X]
hs : Splits i f
hf0 : natDegree (map i f) ≠ 0
x : L
hx : eval x (map i f) = 0
h : roots (map i f) = 0
⊢ map i f ≠ 0

tactic: simp_all
state_before: F : Type u
K : Type v
L : Type w
inst✝² : CommRing K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
f : K[X]
hs : Splits i f
hf0 : natDegree (map i f) ≠ 0
x : L
hx : eval x (map i f) = 0
h : roots (map i f) = 0
a✝ : map i f = 0
⊢ False
Theorem: Set.preimage_neg_Icc
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: simp [← Ici_inter_Iic, inter_comm]
state_before: α : Type u_1
inst✝ : OrderedAddCommGroup α
a b c : α
⊢ -Icc a b = Icc (-b) (-a)
Theorem: DenseInducing.mk'
File: Mathlib/Topology/DenseEmbedding.lean

tactic: simpa [Filter.le_def] using H a
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.27032
δ : Type ?u.27035
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
i✝ : α → β
di : DenseInducing i✝
inst✝¹ : TopologicalSpace δ
f : γ → α
g : γ → δ
h : δ → β
inst✝ : TopologicalSpace γ
i : α → β
c : Continuous i
dense : ∀ (x : β), x ∈ closure (range i)
H : ∀ (a : α) (s : Set α), s ∈ 𝓝 a → ∃ t, t ∈ 𝓝 (i a) ∧ ∀ (b : α), i b ∈ t → b ∈ s
a : α
⊢ comap i (𝓝 (i a)) ≤ 𝓝 a
Theorem: MvPolynomial.vars_C_mul
File: Mathlib/Data/MvPolynomial/Variables.lean

tactic: ext1 i
state_before: R : Type u
S : Type v
σ : Type u_2
τ : Type ?u.169900
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝² : CommSemiring R
p q : MvPolynomial σ R
A : Type u_1
inst✝¹ : CommRing A
inst✝ : IsDomain A
a : A
ha : a ≠ 0
φ : MvPolynomial σ A
⊢ vars (↑C a * φ) = vars φ

tactic: simp only [mem_vars, exists_prop, mem_support_iff]
state_before: case a
R : Type u
S : Type v
σ : Type u_2
τ : Type ?u.169900
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝² : CommSemiring R
p q : MvPolynomial σ R
A : Type u_1
inst✝¹ : CommRing A
inst✝ : IsDomain A
a : A
ha : a ≠ 0
φ : MvPolynomial σ A
i : σ
⊢ i ∈ vars (↑C a * φ) ↔ i ∈ vars φ

tactic: apply exists_congr
state_before: case a
R : Type u
S : Type v
σ : Type u_2
τ : Type ?u.169900
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝² : CommSemiring R
p q : MvPolynomial σ R
A : Type u_1
inst✝¹ : CommRing A
inst✝ : IsDomain A
a : A
ha : a ≠ 0
φ : MvPolynomial σ A
i : σ
⊢ (∃ d, coeff d (↑C a * φ) ≠ 0 ∧ i ∈ d.support) ↔ ∃ d, coeff d φ ≠ 0 ∧ i ∈ d.support

tactic: intro d
state_before: case a.h
R : Type u
S : Type v
σ : Type u_2
τ : Type ?u.169900
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝² : CommSemiring R
p q : MvPolynomial σ R
A : Type u_1
inst✝¹ : CommRing A
inst✝ : IsDomain A
a : A
ha : a ≠ 0
φ : MvPolynomial σ A
i : σ
⊢ ∀ (a_1 : σ →₀ ℕ), coeff a_1 (↑C a * φ) ≠ 0 ∧ i ∈ a_1.support ↔ coeff a_1 φ ≠ 0 ∧ i ∈ a_1.support

tactic: apply and_congr _ Iff.rfl
state_before: case a.h
R : Type u
S : Type v
σ : Type u_2
τ : Type ?u.169900
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝² : CommSemiring R
p q : MvPolynomial σ R
A : Type u_1
inst✝¹ : CommRing A
inst✝ : IsDomain A
a : A
ha : a ≠ 0
φ : MvPolynomial σ A
i : σ
d : σ →₀ ℕ
⊢ coeff d (↑C a * φ) ≠ 0 ∧ i ∈ d.support ↔ coeff d φ ≠ 0 ∧ i ∈ d.support

tactic: rw [coeff_C_mul, mul_ne_zero_iff, eq_true ha, true_and_iff]
state_before: R : Type u
S : Type v
σ : Type u_2
τ : Type ?u.169900
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝² : CommSemiring R
p q : MvPolynomial σ R
A : Type u_1
inst✝¹ : CommRing A
inst✝ : IsDomain A
a : A
ha : a ≠ 0
φ : MvPolynomial σ A
i : σ
d : σ →₀ ℕ
⊢ coeff d (↑C a * φ) ≠ 0 ↔ coeff d φ ≠ 0
Theorem: LeftOrdContinuous.id
File: Mathlib/Order/OrdContinuous.lean

tactic: simpa only [image_id] using h
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Preorder γ
g : β → γ
f : α → β
s : Set α
x : α
h : IsLUB s x
⊢ IsLUB (id '' s) (id x)
Theorem: Submonoid.leftInv_leftInv_le
File: Mathlib/GroupTheory/Submonoid/Inverses.lean

tactic: rintro x ⟨⟨y, z, h₁⟩, h₂ : x * y = 1⟩
state_before: M : Type u_1
inst✝ : Monoid M
S : Submonoid M
⊢ leftInv (leftInv S) ≤ S

tactic: convert z.prop
state_before: case intro.mk.intro
M : Type u_1
inst✝ : Monoid M
S : Submonoid M
x y : M
z : { x // x ∈ S }
h₁ : y * ↑z = 1
h₂ : x * y = 1
⊢ x ∈ S

tactic: rw [← mul_one x, ← h₁, ← mul_assoc, h₂, one_mul]
state_before: case h.e'_4
M : Type u_1
inst✝ : Monoid M
S : Submonoid M
x y : M
z : { x // x ∈ S }
h₁ : y * ↑z = 1
h₂ : x * y = 1
⊢ x = ↑z
Theorem: Filter.disjoint_comap_iff
File: Mathlib/Order/Filter/Basic.lean

tactic: rw [disjoint_iff, disjoint_iff, ← comap_inf, comap_surjective_eq_bot h]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.264840
ι : Sort x
f f₁ f₂ : Filter α
g g₁ g₂ : Filter β
m : α → β
m' : β → γ
s : Set α
t : Set β
h : Surjective m
⊢ Disjoint (comap m g₁) (comap m g₂) ↔ Disjoint g₁ g₂
Theorem: Asymptotics.isBigO_iff_isBigOWith
File: Mathlib/Analysis/Asymptotics/Asymptotics.lean

tactic: rw [IsBigO_def]
state_before: α : Type u_1
β : Type ?u.12161
E : Type u_2
F : Type u_3
G : Type ?u.12170
E' : Type ?u.12173
F' : Type ?u.12176
G' : Type ?u.12179
E'' : Type ?u.12182
F'' : Type ?u.12185
G'' : Type ?u.12188
R : Type ?u.12191
R' : Type ?u.12194
𝕜 : Type ?u.12197
𝕜' : Type ?u.12200
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 α
⊢ f =O[l] g ↔ ∃ c, IsBigOWith c l f g
Theorem: CategoryTheory.Limits.coequalizer.π_colimMap_desc
File: Mathlib/CategoryTheory/Limits/Shapes/Equalizers.lean

tactic: rw [ι_colimMap_assoc, parallelPairHom_app_one, coequalizer.π_desc]
state_before: C : Type u
inst✝² : Category C
X Y : C
f g : X ⟶ Y
inst✝¹ : HasCoequalizer f g
X' Y' Z : C
f' g' : X' ⟶ Y'
inst✝ : HasCoequalizer f' g'
p : X ⟶ X'
q : Y ⟶ Y'
wf : f ≫ q = p ≫ f'
wg : g ≫ q = p ≫ g'
h : Y' ⟶ Z
wh : f' ≫ h = g' ≫ h
⊢ π f g ≫ colimMap (parallelPairHom f g f' g' p q wf wg) ≫ desc h wh = q ≫ h
Theorem: HahnSeries.embDomain_injective
File: Mathlib/RingTheory/HahnSeries.lean

tactic: ext g
state_before: Γ : Type u_1
R : Type u_3
inst✝² : PartialOrder Γ
inst✝¹ : Zero R
a b : Γ
r : R
Γ' : Type u_2
inst✝ : PartialOrder Γ'
f : Γ ↪o Γ'
x y : HahnSeries Γ R
xy : embDomain f x = embDomain f y
⊢ x = y

tactic: rw [HahnSeries.ext_iff, Function.funext_iff] at xy
state_before: case coeff.h
Γ : Type u_1
R : Type u_3
inst✝² : PartialOrder Γ
inst✝¹ : Zero R
a b : Γ
r : R
Γ' : Type u_2
inst✝ : PartialOrder Γ'
f : Γ ↪o Γ'
x y : HahnSeries Γ R
xy : embDomain f x = embDomain f y
g : Γ
⊢ coeff x g = coeff y g

tactic: have xyg := xy (f g)
state_before: case coeff.h
Γ : Type u_1
R : Type u_3
inst✝² : PartialOrder Γ
inst✝¹ : Zero R
a b : Γ
r : R
Γ' : Type u_2
inst✝ : PartialOrder Γ'
f : Γ ↪o Γ'
x y : HahnSeries Γ R
xy : ∀ (a : Γ'), coeff (embDomain f x) a = coeff (embDomain f y) a
g : Γ
⊢ coeff x g = coeff y g

tactic: rwa [embDomain_coeff, embDomain_coeff] at xyg
state_before: case coeff.h
Γ : Type u_1
R : Type u_3
inst✝² : PartialOrder Γ
inst✝¹ : Zero R
a b : Γ
r : R
Γ' : Type u_2
inst✝ : PartialOrder Γ'
f : Γ ↪o Γ'
x y : HahnSeries Γ R
xy : ∀ (a : Γ'), coeff (embDomain f x) a = coeff (embDomain f y) a
g : Γ
xyg : coeff (embDomain f x) (↑f g) = coeff (embDomain f y) (↑f g)
⊢ coeff x g = coeff y g
Theorem: or_iff_right_iff_imp
File: Std/Logic.lean

tactic: rw [or_comm, or_iff_left_iff_imp]
state_before: a b : Prop
⊢ (a ∨ b ↔ b) ↔ a → b
Theorem: Multiset.erase_add_left_neg
File: Mathlib/Data/Multiset/Basic.lean

tactic: rw [add_comm, erase_add_right_neg s h, add_comm]
state_before: α : Type u_1
β : Type ?u.98762
γ : Type ?u.98765
inst✝ : DecidableEq α
s✝ t✝ : Multiset α
a✝ b a : α
s t : Multiset α
h : ¬a ∈ t
⊢ erase (s + t) a = erase s a + t
Theorem: Finset.attach_nonempty_iff
File: Mathlib/Data/Finset/Basic.lean

tactic: simp [Finset.Nonempty]
state_before: α : Type u_1
β : Type ?u.288285
γ : Type ?u.288288
s : Finset α
⊢ Finset.Nonempty (attach s) ↔ Finset.Nonempty s
Theorem: Rat.inv_divInt
File: Std/Data/Rat/Lemmas.lean

tactic: if z : d = 0 then simp [z] else
cases e : n /. d; rcases divInt_num_den z e with ⟨g, zg, rfl, rfl⟩
simp [inv_def, divInt_mul_right zg]
state_before: n d : Int
⊢ Rat.inv (n /. d) = d /. n

tactic: simp [z]
state_before: n d : Int
z : d = 0
⊢ Rat.inv (n /. d) = d /. n

tactic: cases e : n /. d
state_before: n d : Int
z : ¬d = 0
⊢ Rat.inv (n /. d) = d /. n

tactic: rcases divInt_num_den z e with ⟨g, zg, rfl, rfl⟩
state_before: case mk'
n d : Int
z : ¬d = 0
num✝ : Int
den✝ : Nat
den_nz✝ : den✝ ≠ 0
reduced✝ : Nat.coprime (Int.natAbs num✝) den✝
e : n /. d = mk' num✝ den✝
⊢ Rat.inv (mk' num✝ den✝) = d /. n

tactic: simp [inv_def, divInt_mul_right zg]
state_before: case mk'.intro.intro.intro
num✝ : Int
den✝ : Nat
den_nz✝ : den✝ ≠ 0
reduced✝ : Nat.coprime (Int.natAbs num✝) den✝
g : Int
zg : g ≠ 0
z : ¬↑den✝ * g = 0
e : num✝ * g /. (↑den✝ * g) = mk' num✝ den✝
⊢ Rat.inv (mk' num✝ den✝) = ↑den✝ * g /. (num✝ * g)
Theorem: Polynomial.separable_map
File: Mathlib/FieldTheory/Separable.lean

tactic: simp_rw [separable_def, derivative_map, isCoprime_map]
state_before: F : Type u
inst✝¹ : Field F
K : Type v
inst✝ : Field K
f : F →+* K
p : F[X]
⊢ Separable (map f p) ↔ Separable p
Theorem: hnot_hnot_sdiff_distrib
File: Mathlib/Order/Heyting/Basic.lean

tactic: refine' le_antisymm _ _
state_before: ι : Type ?u.179703
α : Type u_1
β : Type ?u.179709
inst✝ : CoheytingAlgebra α
a✝ b✝ c a b : α
⊢ ￢￢(a \ b) = ￢￢a \ ￢￢b

tactic: refine' hnot_le_comm.1 ((hnot_anti sdiff_le_inf_hnot).trans' _)
state_before: case refine'_1
ι : Type ?u.179703
α : Type u_1
β : Type ?u.179709
inst✝ : CoheytingAlgebra α
a✝ b✝ c a b : α
⊢ ￢￢(a \ b) ≤ ￢￢a \ ￢￢b

tactic: rw [hnot_inf_distrib, hnot_le_iff_codisjoint_right, codisjoint_left_comm, ←
  hnot_le_iff_codisjoint_right]
state_before: case refine'_1
ι : Type ?u.179703
α : Type u_1
β : Type ?u.179709
inst✝ : CoheytingAlgebra α
a✝ b✝ c a b : α
⊢ ￢(￢￢a \ ￢￢b) ≤ ￢(a ⊓ ￢b)

tactic: exact le_sdiff_sup
state_before: case refine'_1
ι : Type ?u.179703
α : Type u_1
β : Type ?u.179709
inst✝ : CoheytingAlgebra α
a✝ b✝ c a b : α
⊢ ￢￢a ≤ ￢￢a \ ￢￢b ⊔ ￢￢b

tactic: rw [sdiff_le_iff, ← hnot_hnot_sup_distrib]
state_before: case refine'_2
ι : Type ?u.179703
α : Type u_1
β : Type ?u.179709
inst✝ : CoheytingAlgebra α
a✝ b✝ c a b : α
⊢ ￢￢a \ ￢￢b ≤ ￢￢(a \ b)

tactic: exact hnot_anti (hnot_anti le_sup_sdiff)
state_before: case refine'_2
ι : Type ?u.179703
α : Type u_1
β : Type ?u.179709
inst✝ : CoheytingAlgebra α
a✝ b✝ c a b : α
⊢ ￢￢a ≤ ￢￢(b ⊔ a \ b)
Theorem: HasDerivAt.lhopital_zero_nhds'
File: Mathlib/Analysis/Calculus/LHopital.lean

tactic: simp only [← Iio_union_Ioi, nhdsWithin_union, tendsto_sup, eventually_sup] at *
state_before: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : ∀ᶠ (x : ℝ) in 𝓝[{a}ᶜ] a, HasDerivAt f (f' x) x
hgg' : ∀ᶠ (x : ℝ) in 𝓝[{a}ᶜ] a, HasDerivAt g (g' x) x
hg' : ∀ᶠ (x : ℝ) in 𝓝[{a}ᶜ] a, g' x ≠ 0
hfa : Tendsto f (𝓝[{a}ᶜ] a) (𝓝 0)
hga : Tendsto g (𝓝[{a}ᶜ] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[{a}ᶜ] a) l
⊢ Tendsto (fun x => f x / g x) (𝓝[{a}ᶜ] a) l

tactic: exact ⟨lhopital_zero_nhds_left hff'.1 hgg'.1 hg'.1 hfa.1 hga.1 hdiv.1,
  lhopital_zero_nhds_right hff'.2 hgg'.2 hg'.2 hfa.2 hga.2 hdiv.2⟩
state_before: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hff' : (∀ᶠ (x : ℝ) in 𝓝[Iio a] a, HasDerivAt f (f' x) x) ∧ ∀ᶠ (x : ℝ) in 𝓝[Ioi a] a, HasDerivAt f (f' x) x
hgg' : (∀ᶠ (x : ℝ) in 𝓝[Iio a] a, HasDerivAt g (g' x) x) ∧ ∀ᶠ (x : ℝ) in 𝓝[Ioi a] a, HasDerivAt g (g' x) x
hg' : (∀ᶠ (x : ℝ) in 𝓝[Iio a] a, g' x ≠ 0) ∧ ∀ᶠ (x : ℝ) in 𝓝[Ioi a] a, g' x ≠ 0
hfa : Tendsto f (𝓝[Iio a] a) (𝓝 0) ∧ Tendsto f (𝓝[Ioi a] a) (𝓝 0)
hga : Tendsto g (𝓝[Iio a] a) (𝓝 0) ∧ Tendsto g (𝓝[Ioi a] a) (𝓝 0)
hdiv : Tendsto (fun x => f' x / g' x) (𝓝[Iio a] a) l ∧ Tendsto (fun x => f' x / g' x) (𝓝[Ioi a] a) l
⊢ Tendsto (fun x => f x / g x) (𝓝[Iio a] a) l ∧ Tendsto (fun x => f x / g x) (𝓝[Ioi a] a) l
Theorem: List.forall_mem_append
File: Std/Data/List/Lemmas.lean

tactic: simp only [mem_append, or_imp, forall_and]
state_before: α : Type u_1
p : α → Prop
l₁ l₂ : List α
⊢ (∀ (x : α), x ∈ l₁ ++ l₂ → p x) ↔ (∀ (x : α), x ∈ l₁ → p x) ∧ ∀ (x : α), x ∈ l₂ → p x
Theorem: Submodule.map_id
File: Mathlib/LinearAlgebra/Basic.lean

tactic: simp
state_before: R : Type u_2
R₁ : Type ?u.474481
R₂ : Type ?u.474484
R₃ : Type ?u.474487
R₄ : Type ?u.474490
S : Type ?u.474493
K : Type ?u.474496
K₂ : Type ?u.474499
M : Type u_1
M' : Type ?u.474505
M₁ : Type ?u.474508
M₂ : Type ?u.474511
M₃ : Type ?u.474514
M₄ : Type ?u.474517
N : Type ?u.474520
N₂ : Type ?u.474523
ι : Type ?u.474526
V : Type ?u.474529
V₂ : Type ?u.474532
inst✝¹⁴ : Semiring R
inst✝¹³ : Semiring R₂
inst✝¹² : Semiring R₃
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M₂
inst✝⁹ : AddCommMonoid M₃
inst✝⁸ : AddCommMonoid M'
inst✝⁷ : Module R M
inst✝⁶ : Module R M'
inst✝⁵ : Module R₂ M₂
inst✝⁴ : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
σ₂₁ : R₂ →+* R
inst✝³ : RingHomInvPair σ₁₂ σ₂₁
inst✝² : RingHomInvPair σ₂₁ σ₁₂
inst✝¹ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
p p' : Submodule R M
q q' : Submodule R₂ M₂
q₁ q₁' : Submodule R M'
r : R
x y : M
inst✝ : RingHomSurjective σ₁₂
F : Type ?u.475113
sc : SemilinearMapClass F σ₁₂ M M₂
a : M
⊢ a ∈ map LinearMap.id p ↔ a ∈ p
Theorem: MeasureTheory.MeasurePreserving.ergodic_conjugate_iff
File: Mathlib/Dynamics/Ergodic/Ergodic.lean

tactic: have : MeasurePreserving (e ∘ f ∘ e.symm) μ' μ' ↔ MeasurePreserving f μ μ := by
  rw [h.comp_left_iff, (MeasurePreserving.symm e h).comp_right_iff]
state_before: α : Type u_1
m : MeasurableSpace α
f : α → α
s : Set α
μ : Measure α
β : Type u_2
m' : MeasurableSpace β
μ' : Measure β
s' : Set β
g : α → β
e : α ≃ᵐ β
h : MeasurePreserving ↑e
⊢ Ergodic (↑e ∘ f ∘ ↑(MeasurableEquiv.symm e)) ↔ Ergodic f

tactic: replace h : PreErgodic (e ∘ f ∘ e.symm) μ' ↔ PreErgodic f μ := h.preErgodic_conjugate_iff
state_before: α : Type u_1
m : MeasurableSpace α
f : α → α
s : Set α
μ : Measure α
β : Type u_2
m' : MeasurableSpace β
μ' : Measure β
s' : Set β
g : α → β
e : α ≃ᵐ β
h : MeasurePreserving ↑e
this : MeasurePreserving (↑e ∘ f ∘ ↑(MeasurableEquiv.symm e)) ↔ MeasurePreserving f
⊢ Ergodic (↑e ∘ f ∘ ↑(MeasurableEquiv.symm e)) ↔ Ergodic f

tactic: exact ⟨fun hf => { this.mp hf.toMeasurePreserving, h.mp hf.toPreErgodic with },
  fun hf => { this.mpr hf.toMeasurePreserving, h.mpr hf.toPreErgodic with }⟩
state_before: α : Type u_1
m : MeasurableSpace α
f : α → α
s : Set α
μ : Measure α
β : Type u_2
m' : MeasurableSpace β
μ' : Measure β
s' : Set β
g : α → β
e : α ≃ᵐ β
this : MeasurePreserving (↑e ∘ f ∘ ↑(MeasurableEquiv.symm e)) ↔ MeasurePreserving f
h : PreErgodic (↑e ∘ f ∘ ↑(MeasurableEquiv.symm e)) ↔ PreErgodic f
⊢ Ergodic (↑e ∘ f ∘ ↑(MeasurableEquiv.symm e)) ↔ Ergodic f

tactic: rw [h.comp_left_iff, (MeasurePreserving.symm e h).comp_right_iff]
state_before: α : Type u_1
m : MeasurableSpace α
f : α → α
s : Set α
μ : Measure α
β : Type u_2
m' : MeasurableSpace β
μ' : Measure β
s' : Set β
g : α → β
e : α ≃ᵐ β
h : MeasurePreserving ↑e
⊢ MeasurePreserving (↑e ∘ f ∘ ↑(MeasurableEquiv.symm e)) ↔ MeasurePreserving f
Theorem: OreLocalization.oreDiv_mul_oreDiv_comm
File: Mathlib/RingTheory/OreLocalization/Basic.lean

tactic: rw [oreDiv_mul_char r₁ r₂ s₁ s₂ r₂ s₁ (by simp [mul_comm]), mul_comm s₂]
state_before: R : Type u_1
inst✝¹ : CommMonoid R
S : Submonoid R
inst✝ : OreSet S
r₁ r₂ : R
s₁ s₂ : { x // x ∈ S }
⊢ r₁ /ₒ s₁ * (r₂ /ₒ s₂) = r₁ * r₂ /ₒ (s₁ * s₂)

tactic: simp [mul_comm]
state_before: R : Type u_1
inst✝¹ : CommMonoid R
S : Submonoid R
inst✝ : OreSet S
r₁ r₂ : R
s₁ s₂ : { x // x ∈ S }
⊢ r₂ * ↑s₁ = ↑s₁ * r₂
Theorem: MeasureTheory.eventually_mul_left_iff
File: Mathlib/MeasureTheory/Group/Measure.lean

tactic: conv_rhs => rw [Filter.Eventually, ← map_mul_left_ae μ t]; rfl
state_before: 𝕜 : Type ?u.490392
G : Type u_1
H : Type ?u.490398
inst✝⁴ : MeasurableSpace G
inst✝³ : MeasurableSpace H
inst✝² : Group G
inst✝¹ : MeasurableMul G
μ : Measure G
inst✝ : IsMulLeftInvariant μ
t : G
p : G → Prop
⊢ (∀ᵐ (x : G) ∂μ, p (t * x)) ↔ ∀ᵐ (x : G) ∂μ, p x
Theorem: IsLUB.mem_upperBounds_of_tendsto
File: Mathlib/Topology/Order/Basic.lean

tactic: rintro _ ⟨x, hx, rfl⟩
state_before: α : Type u
β : Type v
γ : Type w
inst✝⁸ : TopologicalSpace α
inst✝⁷ : TopologicalSpace β
inst✝⁶ : LinearOrder α
inst✝⁵ : LinearOrder β
inst✝⁴ : OrderTopology α
inst✝³ : OrderTopology β
inst✝² : Preorder γ
inst✝¹ : TopologicalSpace γ
inst✝ : OrderClosedTopology γ
f : α → γ
s : Set α
a : α
b : γ
hf : MonotoneOn f s
ha : IsLUB s a
hb : Tendsto f (𝓝[s] a) (𝓝 b)
⊢ b ∈ upperBounds (f '' s)

tactic: replace ha := ha.inter_Ici_of_mem hx
state_before: case intro.intro
α : Type u
β : Type v
γ : Type w
inst✝⁸ : TopologicalSpace α
inst✝⁷ : TopologicalSpace β
inst✝⁶ : LinearOrder α
inst✝⁵ : LinearOrder β
inst✝⁴ : OrderTopology α
inst✝³ : OrderTopology β
inst✝² : Preorder γ
inst✝¹ : TopologicalSpace γ
inst✝ : OrderClosedTopology γ
f : α → γ
s : Set α
a : α
b : γ
hf : MonotoneOn f s
ha : IsLUB s a
hb : Tendsto f (𝓝[s] a) (𝓝 b)
x : α
hx : x ∈ s
⊢ f x ≤ b

tactic: haveI := ha.nhdsWithin_neBot ⟨x, hx, le_rfl⟩
state_before: case intro.intro
α : Type u
β : Type v
γ : Type w
inst✝⁸ : TopologicalSpace α
inst✝⁷ : TopologicalSpace β
inst✝⁶ : LinearOrder α
inst✝⁵ : LinearOrder β
inst✝⁴ : OrderTopology α
inst✝³ : OrderTopology β
inst✝² : Preorder γ
inst✝¹ : TopologicalSpace γ
inst✝ : OrderClosedTopology γ
f : α → γ
s : Set α
a : α
b : γ
hf : MonotoneOn f s
hb : Tendsto f (𝓝[s] a) (𝓝 b)
x : α
hx : x ∈ s
ha : IsLUB (s ∩ Ici x) a
⊢ f x ≤ b

tactic: refine' ge_of_tendsto (hb.mono_left (nhdsWithin_mono _ (inter_subset_left s (Ici x)))) _
state_before: case intro.intro
α : Type u
β : Type v
γ : Type w
inst✝⁸ : TopologicalSpace α
inst✝⁷ : TopologicalSpace β
inst✝⁶ : LinearOrder α
inst✝⁵ : LinearOrder β
inst✝⁴ : OrderTopology α
inst✝³ : OrderTopology β
inst✝² : Preorder γ
inst✝¹ : TopologicalSpace γ
inst✝ : OrderClosedTopology γ
f : α → γ
s : Set α
a : α
b : γ
hf : MonotoneOn f s
hb : Tendsto f (𝓝[s] a) (𝓝 b)
x : α
hx : x ∈ s
ha : IsLUB (s ∩ Ici x) a
this : NeBot (𝓝[s ∩ Ici x] a)
⊢ f x ≤ b

tactic: exact mem_of_superset self_mem_nhdsWithin fun y hy => hf hx hy.1 hy.2
state_before: case intro.intro
α : Type u
β : Type v
γ : Type w
inst✝⁸ : TopologicalSpace α
inst✝⁷ : TopologicalSpace β
inst✝⁶ : LinearOrder α
inst✝⁵ : LinearOrder β
inst✝⁴ : OrderTopology α
inst✝³ : OrderTopology β
inst✝² : Preorder γ
inst✝¹ : TopologicalSpace γ
inst✝ : OrderClosedTopology γ
f : α → γ
s : Set α
a : α
b : γ
hf : MonotoneOn f s
hb : Tendsto f (𝓝[s] a) (𝓝 b)
x : α
hx : x ∈ s
ha : IsLUB (s ∩ Ici x) a
this : NeBot (𝓝[s ∩ Ici x] a)
⊢ ∀ᶠ (c : α) in 𝓝[s ∩ Ici x] a, f x ≤ f c
Theorem: zero_pow_le_one
File: Mathlib/Algebra/GroupPower/Order.lean

tactic: rw [zero_pow n.succ_pos]
state_before: β : Type ?u.202613
A : Type ?u.202616
G : Type ?u.202619
M : Type ?u.202622
R : Type u_1
inst✝ : OrderedSemiring R
a x y : R
n✝ m n : ℕ
⊢ 0 ^ (n + 1) ≤ 1

tactic: exact zero_le_one
state_before: β : Type ?u.202613
A : Type ?u.202616
G : Type ?u.202619
M : Type ?u.202622
R : Type u_1
inst✝ : OrderedSemiring R
a x y : R
n✝ m n : ℕ
⊢ 0 ≤ 1
Theorem: Real.surjOn_cos
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: simpa only [cos_zero, cos_pi] using intermediate_value_Icc' pi_pos.le continuous_cos.continuousOn
state_before: ⊢ SurjOn cos (Icc 0 π) (Icc (-1) 1)