tasksource/leandojo huggingface dataset:
Theorem: ConvexCone.innerDualCone_of_innerDualCone_eq_self
File: Mathlib/Analysis/Convex/Cone/Dual.lean

tactic: ext x
state_before: 𝕜 : Type ?u.119420
E : Type ?u.119423
F : Type ?u.119426
G : Type ?u.119429
H : Type u_1
inst✝² : NormedAddCommGroup H
inst✝¹ : InnerProductSpace ℝ H
s t : Set H
inst✝ : CompleteSpace H
K : ConvexCone ℝ H
ne : Set.Nonempty ↑K
hc : IsClosed ↑K
⊢ innerDualCone ↑(innerDualCone ↑K) = K

tactic: constructor
state_before: case h
𝕜 : Type ?u.119420
E : Type ?u.119423
F : Type ?u.119426
G : Type ?u.119429
H : Type u_1
inst✝² : NormedAddCommGroup H
inst✝¹ : InnerProductSpace ℝ H
s t : Set H
inst✝ : CompleteSpace H
K : ConvexCone ℝ H
ne : Set.Nonempty ↑K
hc : IsClosed ↑K
x : H
⊢ x ∈ innerDualCone ↑(innerDualCone ↑K) ↔ x ∈ K

tactic: rw [mem_innerDualCone, ← SetLike.mem_coe]
state_before: case h.mp
𝕜 : Type ?u.119420
E : Type ?u.119423
F : Type ?u.119426
G : Type ?u.119429
H : Type u_1
inst✝² : NormedAddCommGroup H
inst✝¹ : InnerProductSpace ℝ H
s t : Set H
inst✝ : CompleteSpace H
K : ConvexCone ℝ H
ne : Set.Nonempty ↑K
hc : IsClosed ↑K
x : H
⊢ x ∈ innerDualCone ↑(innerDualCone ↑K) → x ∈ K

tactic: contrapose!
state_before: case h.mp
𝕜 : Type ?u.119420
E : Type ?u.119423
F : Type ?u.119426
G : Type ?u.119429
H : Type u_1
inst✝² : NormedAddCommGroup H
inst✝¹ : InnerProductSpace ℝ H
s t : Set H
inst✝ : CompleteSpace H
K : ConvexCone ℝ H
ne : Set.Nonempty ↑K
hc : IsClosed ↑K
x : H
⊢ (∀ (x_1 : H), x_1 ∈ ↑(innerDualCone ↑K) → 0 ≤ inner x_1 x) → x ∈ ↑K

tactic: exact K.hyperplane_separation_of_nonempty_of_isClosed_of_nmem ne hc
state_before: case h.mp
𝕜 : Type ?u.119420
E : Type ?u.119423
F : Type ?u.119426
G : Type ?u.119429
H : Type u_1
inst✝² : NormedAddCommGroup H
inst✝¹ : InnerProductSpace ℝ H
s t : Set H
inst✝ : CompleteSpace H
K : ConvexCone ℝ H
ne : Set.Nonempty ↑K
hc : IsClosed ↑K
x : H
⊢ ¬x ∈ ↑K → ∃ x_1, x_1 ∈ ↑(innerDualCone ↑K) ∧ inner x_1 x < 0

tactic: rintro hxK y h
state_before: case h.mpr
𝕜 : Type ?u.119420
E : Type ?u.119423
F : Type ?u.119426
G : Type ?u.119429
H : Type u_1
inst✝² : NormedAddCommGroup H
inst✝¹ : InnerProductSpace ℝ H
s t : Set H
inst✝ : CompleteSpace H
K : ConvexCone ℝ H
ne : Set.Nonempty ↑K
hc : IsClosed ↑K
x : H
⊢ x ∈ K → x ∈ innerDualCone ↑(innerDualCone ↑K)

tactic: specialize h x hxK
state_before: case h.mpr
𝕜 : Type ?u.119420
E : Type ?u.119423
F : Type ?u.119426
G : Type ?u.119429
H : Type u_1
inst✝² : NormedAddCommGroup H
inst✝¹ : InnerProductSpace ℝ H
s t : Set H
inst✝ : CompleteSpace H
K : ConvexCone ℝ H
ne : Set.Nonempty ↑K
hc : IsClosed ↑K
x : H
hxK : x ∈ K
y : H
h : y ∈ ↑(innerDualCone ↑K)
⊢ 0 ≤ inner y x

tactic: rwa [real_inner_comm]
state_before: case h.mpr
𝕜 : Type ?u.119420
E : Type ?u.119423
F : Type ?u.119426
G : Type ?u.119429
H : Type u_1
inst✝² : NormedAddCommGroup H
inst✝¹ : InnerProductSpace ℝ H
s t : Set H
inst✝ : CompleteSpace H
K : ConvexCone ℝ H
ne : Set.Nonempty ↑K
hc : IsClosed ↑K
x : H
hxK : x ∈ K
y : H
h : 0 ≤ inner x y
⊢ 0 ≤ inner y x
Theorem: Finset.compl_ne_univ_iff_nonempty
File: Mathlib/Data/Fintype/Basic.lean

tactic: simp [eq_univ_iff_forall, Finset.Nonempty]
state_before: α : Type u_1
β : Type ?u.16577
γ : Type ?u.16580
inst✝¹ : Fintype α
s✝ t : Finset α
inst✝ : DecidableEq α
a : α
s : Finset α
⊢ sᶜ ≠ univ ↔ Finset.Nonempty s
Theorem: Ideal.bot_quotient_isMaximal_iff
File: Mathlib/RingTheory/Ideal/QuotientOperations.lean

tactic: skip
state_before: R : Type u
S : Type v
F : Type w
inst✝¹ : CommRing R
inst✝ : CommRing S
I : Ideal R
hI : IsMaximal I
⊢ IsMaximal ⊥

tactic: letI := Quotient.field I
state_before: R : Type u
S : Type v
F : Type w
inst✝¹ : CommRing R
inst✝ : CommRing S
I : Ideal R
hI : IsMaximal I
⊢ IsMaximal ⊥

tactic: exact bot_isMaximal
state_before: R : Type u
S : Type v
F : Type w
inst✝¹ : CommRing R
inst✝ : CommRing S
I : Ideal R
hI : IsMaximal I
this : Field (R ⧸ I) := Quotient.field I
⊢ IsMaximal ⊥
Theorem: Fin.predAbove_above
File: Mathlib/Data/Fin/Basic.lean

tactic: simp [predAbove, h]
state_before: n m : ℕ
p : Fin n
i : Fin (n + 1)
h : ↑castSucc p < i
⊢ predAbove p i = pred i (_ : i ≠ 0)
Theorem: Filter.HasBasis.ext
File: Mathlib/Order/Filter/Bases.lean

tactic: apply le_antisymm
state_before: α : Type u_1
β : Type ?u.26106
γ : Type ?u.26109
ι : Sort u_2
ι' : Sort u_3
l l' : Filter α
p : ι → Prop
s : ι → Set α
t : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
hl : HasBasis l p s
hl' : HasBasis l' p' s'
h : ∀ (i : ι), p i → ∃ i', p' i' ∧ s' i' ⊆ s i
h' : ∀ (i' : ι'), p' i' → ∃ i, p i ∧ s i ⊆ s' i'
⊢ l = l'

tactic: rw [hl.le_basis_iff hl']
state_before: case a
α : Type u_1
β : Type ?u.26106
γ : Type ?u.26109
ι : Sort u_2
ι' : Sort u_3
l l' : Filter α
p : ι → Prop
s : ι → Set α
t : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
hl : HasBasis l p s
hl' : HasBasis l' p' s'
h : ∀ (i : ι), p i → ∃ i', p' i' ∧ s' i' ⊆ s i
h' : ∀ (i' : ι'), p' i' → ∃ i, p i ∧ s i ⊆ s' i'
⊢ l ≤ l'

tactic: simpa using h'
state_before: case a
α : Type u_1
β : Type ?u.26106
γ : Type ?u.26109
ι : Sort u_2
ι' : Sort u_3
l l' : Filter α
p : ι → Prop
s : ι → Set α
t : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
hl : HasBasis l p s
hl' : HasBasis l' p' s'
h : ∀ (i : ι), p i → ∃ i', p' i' ∧ s' i' ⊆ s i
h' : ∀ (i' : ι'), p' i' → ∃ i, p i ∧ s i ⊆ s' i'
⊢ ∀ (i' : ι'), p' i' → ∃ i, p i ∧ s i ⊆ s' i'

tactic: rw [hl'.le_basis_iff hl]
state_before: case a
α : Type u_1
β : Type ?u.26106
γ : Type ?u.26109
ι : Sort u_2
ι' : Sort u_3
l l' : Filter α
p : ι → Prop
s : ι → Set α
t : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
hl : HasBasis l p s
hl' : HasBasis l' p' s'
h : ∀ (i : ι), p i → ∃ i', p' i' ∧ s' i' ⊆ s i
h' : ∀ (i' : ι'), p' i' → ∃ i, p i ∧ s i ⊆ s' i'
⊢ l' ≤ l

tactic: simpa using h
state_before: case a
α : Type u_1
β : Type ?u.26106
γ : Type ?u.26109
ι : Sort u_2
ι' : Sort u_3
l l' : Filter α
p : ι → Prop
s : ι → Set α
t : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
hl : HasBasis l p s
hl' : HasBasis l' p' s'
h : ∀ (i : ι), p i → ∃ i', p' i' ∧ s' i' ⊆ s i
h' : ∀ (i' : ι'), p' i' → ∃ i, p i ∧ s i ⊆ s' i'
⊢ ∀ (i' : ι), p i' → ∃ i, p' i ∧ s' i ⊆ s i'
Theorem: List.mapIdx_append_one
File: Mathlib/Data/List/Indexes.lean

tactic: intros f l e
state_before: α : Type u
β : Type v
⊢ ∀ (f : ℕ → α → β) (l : List α) (e : α), mapIdx f (l ++ [e]) = mapIdx f l ++ [f (length l) e]

tactic: unfold mapIdx
state_before: α : Type u
β : Type v
f : ℕ → α → β
l : List α
e : α
⊢ mapIdx f (l ++ [e]) = mapIdx f l ++ [f (length l) e]

tactic: rw [mapIdxGo_append f l [e]]
state_before: α : Type u
β : Type v
f : ℕ → α → β
l : List α
e : α
⊢ mapIdx.go f (l ++ [e]) #[] = mapIdx.go f l #[] ++ [f (length l) e]

tactic: simp only [mapIdx.go, Array.size_toArray, mapIdxGo_length, length_nil, add_zero, Array.toList_eq,
  Array.push_data, Array.data_toArray]
state_before: α : Type u
β : Type v
f : ℕ → α → β
l : List α
e : α
⊢ mapIdx.go f [e] (toArray (mapIdx.go f l #[])) = mapIdx.go f l #[] ++ [f (length l) e]
Theorem: closedEmbedding_iff_closedEmbedding_of_iSup_eq_top
File: Mathlib/Topology/LocalAtTarget.lean

tactic: simp_rw [closedEmbedding_iff]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s : Set β
ι : Type ?u.46884
U : ι → Opens β
hU : iSup U = ⊤
h : Continuous f
⊢ ClosedEmbedding f ↔ ∀ (i : ι), ClosedEmbedding (restrictPreimage (U i).carrier f)

tactic: rw [forall_and]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s : Set β
ι : Type ?u.46884
U : ι → Opens β
hU : iSup U = ⊤
h : Continuous f
⊢ Embedding f ∧ IsClosed (range f) ↔
    ∀ (i : ι), Embedding (restrictPreimage (U i).carrier f) ∧ IsClosed (range (restrictPreimage (U i).carrier f))

tactic: apply and_congr
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s : Set β
ι : Type ?u.46884
U : ι → Opens β
hU : iSup U = ⊤
h : Continuous f
⊢ Embedding f ∧ IsClosed (range f) ↔
    (∀ (x : ι), Embedding (restrictPreimage (U x).carrier f)) ∧
      ∀ (x : ι), IsClosed (range (restrictPreimage (U x).carrier f))

tactic: apply embedding_iff_embedding_of_iSup_eq_top <;> assumption
state_before: case h₁
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s : Set β
ι : Type ?u.46884
U : ι → Opens β
hU : iSup U = ⊤
h : Continuous f
⊢ Embedding f ↔ ∀ (x : ι), Embedding (restrictPreimage (U x).carrier f)

tactic: simp_rw [Set.range_restrictPreimage]
state_before: case h₂
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s : Set β
ι : Type ?u.46884
U : ι → Opens β
hU : iSup U = ⊤
h : Continuous f
⊢ IsClosed (range f) ↔ ∀ (x : ι), IsClosed (range (restrictPreimage (U x).carrier f))

tactic: apply isClosed_iff_coe_preimage_of_iSup_eq_top hU
state_before: case h₂
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s : Set β
ι : Type ?u.46884
U : ι → Opens β
hU : iSup U = ⊤
h : Continuous f
⊢ IsClosed (range f) ↔ ∀ (x : ι), IsClosed (Subtype.val ⁻¹' range f)
Theorem: LinearMap.lTensor_comp_map
File: Mathlib/LinearAlgebra/TensorProduct.lean

tactic: simp only [lTensor, rTensor, ← map_comp, id_comp, comp_id]
state_before: R : Type u_1
inst✝¹⁴ : CommSemiring R
R' : Type ?u.1294603
inst✝¹³ : Monoid R'
R'' : Type ?u.1294609
inst✝¹² : Semiring R''
M : Type u_4
N : Type u_6
P : Type u_5
Q : Type u_2
S : Type u_3
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid N
inst✝⁹ : AddCommMonoid P
inst✝⁸ : AddCommMonoid Q
inst✝⁷ : AddCommMonoid S
inst✝⁶ : Module R M
inst✝⁵ : Module R N
inst✝⁴ : Module R P
inst✝³ : Module R Q
inst✝² : Module R S
inst✝¹ : DistribMulAction R' M
inst✝ : Module R'' M
g✝ : P →ₗ[R] Q
f✝ : N →ₗ[R] P
g' : Q →ₗ[R] S
f : M →ₗ[R] P
g : N →ₗ[R] Q
⊢ comp (lTensor P g') (map f g) = map f (comp g' g)
Theorem: Set.Finite.biUnion
File: Mathlib/Data/Set/Finite.lean

tactic: classical
  cases hs
  haveI := fintypeBiUnion s t fun i hi => (ht i hi).fintype
  apply toFinite
state_before: α : Type u
β : Type v
ι✝ : Sort w
γ : Type x
ι : Type u_1
s : Set ι
hs : Set.Finite s
t : ι → Set α
ht : ∀ (i : ι), i ∈ s → Set.Finite (t i)
⊢ Set.Finite (⋃ (i : ι) (_ : i ∈ s), t i)

tactic: cases hs
state_before: α : Type u
β : Type v
ι✝ : Sort w
γ : Type x
ι : Type u_1
s : Set ι
hs : Set.Finite s
t : ι → Set α
ht : ∀ (i : ι), i ∈ s → Set.Finite (t i)
⊢ Set.Finite (⋃ (i : ι) (_ : i ∈ s), t i)

tactic: haveI := fintypeBiUnion s t fun i hi => (ht i hi).fintype
state_before: case intro
α : Type u
β : Type v
ι✝ : Sort w
γ : Type x
ι : Type u_1
s : Set ι
t : ι → Set α
ht : ∀ (i : ι), i ∈ s → Set.Finite (t i)
a✝ : Fintype ↑s
⊢ Set.Finite (⋃ (i : ι) (_ : i ∈ s), t i)

tactic: apply toFinite
state_before: case intro
α : Type u
β : Type v
ι✝ : Sort w
γ : Type x
ι : Type u_1
s : Set ι
t : ι → Set α
ht : ∀ (i : ι), i ∈ s → Set.Finite (t i)
a✝ : Fintype ↑s
this : Fintype ↑(⋃ (x : ι) (_ : x ∈ s), t x)
⊢ Set.Finite (⋃ (i : ι) (_ : i ∈ s), t i)
Theorem: one_add_mul_sub_le_pow
File: Mathlib/Algebra/GroupPower/Lemmas.lean

tactic: have : -2 ≤ a - 1 := by
  rwa [← one_add_one_eq_two, neg_add, ← sub_eq_add_neg, sub_le_sub_iff_right]
state_before: α : Type ?u.314044
M : Type u
N : Type v
G : Type w
H✝ : Type x
A : Type y
B : Type z
R : Type u₁
S : Type u₂
inst✝ : LinearOrderedRing R
a : R
n✝ : ℕ
H : -1 ≤ a
n : ℕ
⊢ 1 + ↑n * (a - 1) ≤ a ^ n

tactic: simpa only [add_sub_cancel'_right] using one_add_mul_le_pow this n
state_before: α : Type ?u.314044
M : Type u
N : Type v
G : Type w
H✝ : Type x
A : Type y
B : Type z
R : Type u₁
S : Type u₂
inst✝ : LinearOrderedRing R
a : R
n✝ : ℕ
H : -1 ≤ a
n : ℕ
this : -2 ≤ a - 1
⊢ 1 + ↑n * (a - 1) ≤ a ^ n

tactic: rwa [← one_add_one_eq_two, neg_add, ← sub_eq_add_neg, sub_le_sub_iff_right]
state_before: α : Type ?u.314044
M : Type u
N : Type v
G : Type w
H✝ : Type x
A : Type y
B : Type z
R : Type u₁
S : Type u₂
inst✝ : LinearOrderedRing R
a : R
n✝ : ℕ
H : -1 ≤ a
n : ℕ
⊢ -2 ≤ a - 1
Theorem: ofMul_image_powers_eq_multiples_ofMul
File: Mathlib/GroupTheory/Submonoid/Membership.lean

tactic: ext
state_before: M : Type u_1
A : Type ?u.284676
B : Type ?u.284679
inst✝ : Monoid M
x : M
⊢ ↑Additive.ofMul '' ↑(Submonoid.powers x) = ↑(AddSubmonoid.multiples (↑Additive.ofMul x))

tactic: constructor
state_before: case h
M : Type u_1
A : Type ?u.284676
B : Type ?u.284679
inst✝ : Monoid M
x : M
x✝ : Additive M
⊢ x✝ ∈ ↑Additive.ofMul '' ↑(Submonoid.powers x) ↔ x✝ ∈ ↑(AddSubmonoid.multiples (↑Additive.ofMul x))

tactic: rintro ⟨y, ⟨n, hy1⟩, hy2⟩
state_before: case h.mp
M : Type u_1
A : Type ?u.284676
B : Type ?u.284679
inst✝ : Monoid M
x : M
x✝ : Additive M
⊢ x✝ ∈ ↑Additive.ofMul '' ↑(Submonoid.powers x) → x✝ ∈ ↑(AddSubmonoid.multiples (↑Additive.ofMul x))

tactic: use n
state_before: case h.mp.intro.intro.intro
M : Type u_1
A : Type ?u.284676
B : Type ?u.284679
inst✝ : Monoid M
x : M
x✝ : Additive M
y : M
hy2 : ↑Additive.ofMul y = x✝
n : ℕ
hy1 : (fun x x_1 => x ^ x_1) x n = y
⊢ x✝ ∈ ↑(AddSubmonoid.multiples (↑Additive.ofMul x))

tactic: simpa [← ofMul_pow, hy1]
state_before: case h.mp.intro.intro.intro
M : Type u_1
A : Type ?u.284676
B : Type ?u.284679
inst✝ : Monoid M
x : M
x✝ : Additive M
y : M
hy2 : ↑Additive.ofMul y = x✝
n : ℕ
hy1 : (fun x x_1 => x ^ x_1) x n = y
⊢ (fun i => i • ↑Additive.ofMul x) n = x✝

tactic: rintro ⟨n, hn⟩
state_before: case h.mpr
M : Type u_1
A : Type ?u.284676
B : Type ?u.284679
inst✝ : Monoid M
x : M
x✝ : Additive M
⊢ x✝ ∈ ↑(AddSubmonoid.multiples (↑Additive.ofMul x)) → x✝ ∈ ↑Additive.ofMul '' ↑(Submonoid.powers x)

tactic: refine' ⟨x ^ n, ⟨n, rfl⟩, _⟩
state_before: case h.mpr.intro
M : Type u_1
A : Type ?u.284676
B : Type ?u.284679
inst✝ : Monoid M
x : M
x✝ : Additive M
n : ℕ
hn : (fun i => i • ↑Additive.ofMul x) n = x✝
⊢ x✝ ∈ ↑Additive.ofMul '' ↑(Submonoid.powers x)

tactic: rwa [ofMul_pow]
state_before: case h.mpr.intro
M : Type u_1
A : Type ?u.284676
B : Type ?u.284679
inst✝ : Monoid M
x : M
x✝ : Additive M
n : ℕ
hn : (fun i => i • ↑Additive.ofMul x) n = x✝
⊢ ↑Additive.ofMul (x ^ n) = x✝
Theorem: Polynomial.toFinsupp_sub
File: Mathlib/Data/Polynomial/Basic.lean

tactic: rw [sub_eq_add_neg, ← toFinsupp_neg, ← toFinsupp_add]
state_before: R✝ : Type u
a✝ b✝ : R✝
m n : ℕ
inst✝¹ : Semiring R✝
p q : R✝[X]
R : Type u
inst✝ : Ring R
a b : R[X]
⊢ (a - b).toFinsupp = a.toFinsupp - b.toFinsupp

tactic: rfl
state_before: R✝ : Type u
a✝ b✝ : R✝
m n : ℕ
inst✝¹ : Semiring R✝
p q : R✝[X]
R : Type u
inst✝ : Ring R
a b : R[X]
⊢ (a - b).toFinsupp = (a + -b).toFinsupp
Theorem: MvPolynomial.aeval_map_algebraMap
File: Mathlib/RingTheory/MvPolynomial/Tower.lean

tactic: rw [aeval_def, aeval_def, eval₂_map, IsScalarTower.algebraMap_eq R A B]
state_before: R : Type u_2
A : Type u_4
B : Type u_3
σ : Type u_1
inst✝⁶ : CommSemiring R
inst✝⁵ : CommSemiring A
inst✝⁴ : CommSemiring B
inst✝³ : Algebra R A
inst✝² : Algebra A B
inst✝¹ : Algebra R B
inst✝ : IsScalarTower R A B
x : σ → B
p : MvPolynomial σ R
⊢ ↑(aeval x) (↑(map (algebraMap R A)) p) = ↑(aeval x) p
Theorem: tendsto_iff_norm_tendsto_one
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: convert tendsto_iff_dist_tendsto_zero (f := f) (x := a) (a := b) using 1
state_before: 𝓕 : Type ?u.448410
𝕜 : Type ?u.448413
α : Type u_1
ι : Type ?u.448419
κ : Type ?u.448422
E : Type u_2
F : Type ?u.448428
G : Type ?u.448431
inst✝² : SeminormedGroup E
inst✝¹ : SeminormedGroup F
inst✝ : SeminormedGroup G
s : Set E
a✝ a₁ a₂ b✝ b₁ b₂ : E
r r₁ r₂ : ℝ
f : α → E
a : Filter α
b : E
⊢ Tendsto f a (𝓝 b) ↔ Tendsto (fun e => ‖f e / b‖) a (𝓝 0)

tactic: simp [dist_eq_norm_div]
state_before: case h.e'_2.a
𝓕 : Type ?u.448410
𝕜 : Type ?u.448413
α : Type u_1
ι : Type ?u.448419
κ : Type ?u.448422
E : Type u_2
F : Type ?u.448428
G : Type ?u.448431
inst✝² : SeminormedGroup E
inst✝¹ : SeminormedGroup F
inst✝ : SeminormedGroup G
s : Set E
a✝ a₁ a₂ b✝ b₁ b₂ : E
r r₁ r₂ : ℝ
f : α → E
a : Filter α
b : E
⊢ Tendsto (fun e => ‖f e / b‖) a (𝓝 0) ↔ Tendsto (fun b_1 => dist (f b_1) b) a (𝓝 0)
Theorem: Real.sin_sq_le_one
File: Mathlib/Data/Complex/Exponential.lean

tactic: rw [← sin_sq_add_cos_sq x]
state_before: x y : ℝ
⊢ sin x ^ 2 ≤ 1

tactic: exact le_add_of_nonneg_right (sq_nonneg _)
state_before: x y : ℝ
⊢ sin x ^ 2 ≤ sin x ^ 2 + cos x ^ 2
Theorem: EuclideanGeometry.Sphere.secondInter_dist
File: Mathlib/Geometry/Euclidean/Sphere/SecondInter.lean

tactic: rw [Sphere.secondInter]
state_before: V : Type u_2
P : Type u_1
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Sphere P
p : P
v : V
⊢ dist (secondInter s p v) s.center = dist p s.center

tactic: by_cases hv : v = 0
state_before: V : Type u_2
P : Type u_1
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Sphere P
p : P
v : V
⊢ dist ((-2 * inner v (p -ᵥ s.center) / inner v v) • v +ᵥ p) s.center = dist p s.center

tactic: rw [dist_smul_vadd_eq_dist _ _ hv]
state_before: case neg
V : Type u_2
P : Type u_1
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Sphere P
p : P
v : V
hv : ¬v = 0
⊢ dist ((-2 * inner v (p -ᵥ s.center) / inner v v) • v +ᵥ p) s.center = dist p s.center

tactic: exact Or.inr rfl
state_before: case neg
V : Type u_2
P : Type u_1
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Sphere P
p : P
v : V
hv : ¬v = 0
⊢ -2 * inner v (p -ᵥ s.center) / inner v v = 0 ∨
    -2 * inner v (p -ᵥ s.center) / inner v v = -2 * inner v (p -ᵥ s.center) / inner v v

tactic: simp [hv]
state_before: case pos
V : Type u_2
P : Type u_1
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Sphere P
p : P
v : V
hv : v = 0
⊢ dist ((-2 * inner v (p -ᵥ s.center) / inner v v) • v +ᵥ p) s.center = dist p s.center
Theorem: Finset.inr_mem_sumLift₂
File: Mathlib/Data/Sum/Interval.lean

tactic: rw [mem_sumLift₂, or_iff_right]
state_before: α₁ : Type u_3
α₂ : Type u_4
β₁ : Type u_5
β₂ : Type u_6
γ₁ : Type u_2
γ₂ : Type u_1
f f₁ g₁ : α₁ → β₁ → Finset γ₁
g f₂ g₂ : α₂ → β₂ → Finset γ₂
a : α₁ ⊕ α₂
b : β₁ ⊕ β₂
c : γ₁ ⊕ γ₂
c₂ : γ₂
⊢ inr c₂ ∈ sumLift₂ f g a b ↔ ∃ a₂ b₂, a = inr a₂ ∧ b = inr b₂ ∧ c₂ ∈ g a₂ b₂

tactic: simp only [inr.injEq, exists_and_left, exists_eq_left']
state_before: α₁ : Type u_3
α₂ : Type u_4
β₁ : Type u_5
β₂ : Type u_6
γ₁ : Type u_2
γ₂ : Type u_1
f f₁ g₁ : α₁ → β₁ → Finset γ₁
g f₂ g₂ : α₂ → β₂ → Finset γ₂
a : α₁ ⊕ α₂
b : β₁ ⊕ β₂
c : γ₁ ⊕ γ₂
c₂ : γ₂
⊢ (∃ a₂ b₂ c₂_1, a = inr a₂ ∧ b = inr b₂ ∧ inr c₂ = inr c₂_1 ∧ c₂_1 ∈ g a₂ b₂) ↔
    ∃ a₂ b₂, a = inr a₂ ∧ b = inr b₂ ∧ c₂ ∈ g a₂ b₂

α₁ : Type u_3
α₂ : Type u_4
β₁ : Type u_5
β₂ : Type u_6
γ₁ : Type u_2
γ₂ : Type u_1
f f₁ g₁ : α₁ → β₁ → Finset γ₁
g f₂ g₂ : α₂ → β₂ → Finset γ₂
a : α₁ ⊕ α₂
b : β₁ ⊕ β₂
c : γ₁ ⊕ γ₂
c₂ : γ₂
⊢ ¬∃ a₁ b₁ c₁, a = inl a₁ ∧ b = inl b₁ ∧ inr c₂ = inl c₁ ∧ c₁ ∈ f a₁ b₁

tactic: rintro ⟨_, _, c₂, _, _, h, _⟩
state_before: α₁ : Type u_3
α₂ : Type u_4
β₁ : Type u_5
β₂ : Type u_6
γ₁ : Type u_2
γ₂ : Type u_1
f f₁ g₁ : α₁ → β₁ → Finset γ₁
g f₂ g₂ : α₂ → β₂ → Finset γ₂
a : α₁ ⊕ α₂
b : β₁ ⊕ β₂
c : γ₁ ⊕ γ₂
c₂ : γ₂
⊢ ¬∃ a₁ b₁ c₁, a = inl a₁ ∧ b = inl b₁ ∧ inr c₂ = inl c₁ ∧ c₁ ∈ f a₁ b₁

tactic: exact inr_ne_inl h
state_before: case intro.intro.intro.intro.intro.intro
α₁ : Type u_3
α₂ : Type u_4
β₁ : Type u_5
β₂ : Type u_6
γ₁ : Type u_2
γ₂ : Type u_1
f f₁ g₁ : α₁ → β₁ → Finset γ₁
g f₂ g₂ : α₂ → β₂ → Finset γ₂
a : α₁ ⊕ α₂
b : β₁ ⊕ β₂
c : γ₁ ⊕ γ₂
c₂✝ : γ₂
w✝¹ : α₁
w✝ : β₁
c₂ : γ₁
left✝¹ : a = inl w✝¹
left✝ : b = inl w✝
h : inr c₂✝ = inl c₂
right✝ : c₂ ∈ f w✝¹ w✝
⊢ False
Theorem: summable_of_nonneg_of_le
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: lift f to β → ℝ≥0 using fun b => (hg b).trans (hgf b)
state_before: α : Type ?u.339900
β : Type u_1
γ : Type ?u.339906
f g : β → ℝ
hg : ∀ (b : β), 0 ≤ g b
hgf : ∀ (b : β), g b ≤ f b
hf : Summable f
⊢ Summable g

tactic: lift g to β → ℝ≥0 using hg
state_before: case intro
α : Type ?u.339900
β : Type u_1
γ : Type ?u.339906
g : β → ℝ
hg : ∀ (b : β), 0 ≤ g b
f : β → ℝ≥0
hgf : ∀ (b : β), g b ≤ (fun i => ↑(f i)) b
hf : Summable fun i => ↑(f i)
⊢ Summable g

tactic: rw [NNReal.summable_coe] at hf⊢
state_before: case intro.intro
α : Type ?u.339900
β : Type u_1
γ : Type ?u.339906
f : β → ℝ≥0
hf : Summable fun i => ↑(f i)
g : β → ℝ≥0
hgf : ∀ (b : β), (fun i => ↑(g i)) b ≤ (fun i => ↑(f i)) b
⊢ Summable fun i => ↑(g i)

tactic: exact NNReal.summable_of_le (fun b => NNReal.coe_le_coe.1 (hgf b)) hf
state_before: case intro.intro
α : Type ?u.339900
β : Type u_1
γ : Type ?u.339906
f : β → ℝ≥0
hf : Summable fun i => f i
g : β → ℝ≥0
hgf : ∀ (b : β), (fun i => ↑(g i)) b ≤ (fun i => ↑(f i)) b
⊢ Summable fun i => g i
Theorem: Set.subset_eval_image_pi
File: Mathlib/Data/Set/Prod.lean

tactic: classical
obtain ⟨f, hf⟩ := ht
refine' fun y hy => ⟨update f i y, fun j hj => _, update_same _ _ _⟩
obtain rfl | hji := eq_or_ne j i <;> simp [*, hf _ hj]
state_before: ι : Type u_1
α : ι → Type u_2
β : ι → Type ?u.154225
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i✝ : ι
ht : Set.Nonempty (pi s t)
i : ι
⊢ t i ⊆ eval i '' pi s t

tactic: obtain ⟨f, hf⟩ := ht
state_before: ι : Type u_1
α : ι → Type u_2
β : ι → Type ?u.154225
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i✝ : ι
ht : Set.Nonempty (pi s t)
i : ι
⊢ t i ⊆ eval i '' pi s t

tactic: refine' fun y hy => ⟨update f i y, fun j hj => _, update_same _ _ _⟩
state_before: case intro
ι : Type u_1
α : ι → Type u_2
β : ι → Type ?u.154225
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i✝ i : ι
f : (i : ι) → α i
hf : f ∈ pi s t
⊢ t i ⊆ eval i '' pi s t

tactic: obtain rfl | hji := eq_or_ne j i <;> simp [*, hf _ hj]
state_before: case intro
ι : Type u_1
α : ι → Type u_2
β : ι → Type ?u.154225
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i✝ i : ι
f : (i : ι) → α i
hf : f ∈ pi s t
y : α i
hy : y ∈ t i
j : ι
hj : j ∈ s
⊢ update f i y j ∈ t j
Theorem: Polynomial.leadingCoeff_opRingEquiv
File: Mathlib/RingTheory/Polynomial/Opposites.lean

tactic: rw [leadingCoeff, coeff_opRingEquiv, natDegree_opRingEquiv, leadingCoeff]
state_before: R : Type u_1
inst✝ : Semiring R
p : R[X]ᵐᵒᵖ
⊢ leadingCoeff (↑(opRingEquiv R) p) = op (leadingCoeff (unop p))
Theorem: Polynomial.Chebyshev.U_of_two_le
File: Mathlib/RingTheory/Polynomial/Chebyshev.lean

tactic: obtain ⟨n, rfl⟩ := Nat.exists_eq_add_of_le h
state_before: R : Type u_1
S : Type ?u.11533
inst✝¹ : CommRing R
inst✝ : CommRing S
n : ℕ
h : 2 ≤ n
⊢ U R n = 2 * X * U R (n - 1) - U R (n - 2)

tactic: rw [add_comm]
state_before: case intro
R : Type u_1
S : Type ?u.11533
inst✝¹ : CommRing R
inst✝ : CommRing S
n : ℕ
h : 2 ≤ 2 + n
⊢ U R (2 + n) = 2 * X * U R (2 + n - 1) - U R (2 + n - 2)

tactic: exact U_add_two R n
state_before: case intro
R : Type u_1
S : Type ?u.11533
inst✝¹ : CommRing R
inst✝ : CommRing S
n : ℕ
h : 2 ≤ 2 + n
⊢ U R (n + 2) = 2 * X * U R (n + 2 - 1) - U R (n + 2 - 2)
Theorem: Polynomial.toFinsupp_pow
File: Mathlib/Data/Polynomial/Basic.lean

tactic: cases a
state_before: R : Type u
a✝ b : R
m n✝ : ℕ
inst✝ : Semiring R
p q a : R[X]
n : ℕ
⊢ (a ^ n).toFinsupp = a.toFinsupp ^ n

tactic: rw [← ofFinsupp_pow]
state_before: case ofFinsupp
R : Type u
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p q : R[X]
n : ℕ
toFinsupp✝ : AddMonoidAlgebra R ℕ
⊢ ({ toFinsupp := toFinsupp✝ } ^ n).toFinsupp = { toFinsupp := toFinsupp✝ }.toFinsupp ^ n