tasksource/leandojo huggingface dataset:
Theorem: NhdsContainBoxes.symm
File: Mathlib/Topology/SubsetProperties.lean

tactic: rwa [← image_subset_iff, image_swap_prod]
state_before: α : Type u
β : Type v
ι : Type ?u.55710
π : ι → Type ?u.55715
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ s : Set α
t : Set β
H : NhdsContainBoxes s t
n : Set (β × α)
hn : IsOpen n
hp : t ×ˢ s ⊆ n
⊢ s ×ˢ t ⊆ Prod.swap ⁻¹' n

tactic: rwa [← image_subset_iff, image_swap_prod] at p
state_before: α : Type u
β : Type v
ι : Type ?u.55710
π : ι → Type ?u.55715
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s✝ t✝ s : Set α
t : Set β
H : NhdsContainBoxes s t
n : Set (β × α)
hn : IsOpen n
hp : t ×ˢ s ⊆ n
u : Set α
v : Set β
uo : IsOpen u
vo : IsOpen v
su : s ⊆ u
tv : t ⊆ v
p : u ×ˢ v ⊆ Prod.swap ⁻¹' n
⊢ v ×ˢ u ⊆ n
Theorem: Linarith.le_of_eq_of_le
File: Mathlib/Tactic/Linarith/Lemmas.lean

tactic: simp [*]
state_before: α : Type u_1
inst✝ : OrderedSemiring α
a b : α
ha : a = 0
hb : b ≤ 0
⊢ a + b ≤ 0
Theorem: Bool.dichotomy
File: Mathlib/Data/Bool/Basic.lean

tactic: cases b <;> simp
state_before: b : Bool
⊢ b = false ∨ b = true
Theorem: Ordinal.lt_pred
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: let ⟨c, e⟩ := h
state_before: α : Type ?u.85911
β : Type ?u.85914
γ : Type ?u.85917
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal
h : ∃ a, b = succ a
⊢ a < pred b ↔ succ a < b

tactic: rw [e, pred_succ, succ_lt_succ_iff]
state_before: α : Type ?u.85911
β : Type ?u.85914
γ : Type ?u.85917
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal
h : ∃ a, b = succ a
c : Ordinal
e : b = succ c
⊢ a < pred b ↔ succ a < b

tactic: simp only [pred, dif_neg h, succ_lt_of_not_succ h]
state_before: α : Type ?u.85911
β : Type ?u.85914
γ : Type ?u.85917
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal
h : ¬∃ a, b = succ a
⊢ a < pred b ↔ succ a < b
Theorem: Int.preimage_Icc
File: Mathlib/Algebra/Order/Floor.lean

tactic: ext
state_before: F : Type ?u.243033
α : Type u_1
β : Type ?u.243039
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a✝ a b : α
⊢ Int.cast ⁻¹' Icc a b = Icc ⌈a⌉ ⌊b⌋

tactic: simp [ceil_le, le_floor]
state_before: case h
F : Type ?u.243033
α : Type u_1
β : Type ?u.243039
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a✝ a b : α
x✝ : ℤ
⊢ x✝ ∈ Int.cast ⁻¹' Icc a b ↔ x✝ ∈ Icc ⌈a⌉ ⌊b⌋
Theorem: Bool.cond_self
File: Mathlib/Init/Data/Bool/Lemmas.lean

tactic: cases b <;> rfl
state_before: α : Type u
b : Bool
a : α
⊢ (bif b then a else a) = a
Theorem: Bool.injective_iff
File: Mathlib/Data/Bool/Basic.lean

tactic: cases x <;> cases y
state_before: α : Sort u_1
f : Bool → α
H : f false ≠ f true
x y : Bool
hxy : f x = f y
⊢ x = y

tactic: exacts [rfl, (H hxy).elim, (H hxy.symm).elim, rfl]
state_before: case false.false
α : Sort u_1
f : Bool → α
H : f false ≠ f true
hxy : f false = f false
⊢ false = false

case false.true
α : Sort u_1
f : Bool → α
H : f false ≠ f true
hxy : f false = f true
⊢ false = true

case true.false
α : Sort u_1
f : Bool → α
H : f false ≠ f true
hxy : f true = f false
⊢ true = false

case true.true
α : Sort u_1
f : Bool → α
H : f false ≠ f true
hxy : f true = f true
⊢ true = true
Theorem: WithBot.some_lt_some
File: Mathlib/Order/WithBot.lean

tactic: simp [LT.lt]
state_before: α : Type u_1
β : Type ?u.15780
γ : Type ?u.15783
δ : Type ?u.15786
a b : α
inst✝ : LT α
⊢ Option.some a < Option.some b ↔ a < b
Theorem: symmDiff_sdiff
File: Mathlib/Order/SymmDiff.lean

tactic: rw [symmDiff, sup_sdiff_distrib, sdiff_sdiff_left, sdiff_sdiff_left]
state_before: ι : Type ?u.26724
α : Type u_1
β : Type ?u.26730
π : ι → Type ?u.26735
inst✝ : GeneralizedCoheytingAlgebra α
a b c d : α
⊢ a ∆ b \ c = a \ (b ⊔ c) ⊔ b \ (a ⊔ c)
Theorem: List.rtakeWhile_eq_nil_iff
File: Mathlib/Data/List/Rdrop.lean

tactic: induction' l using List.reverseRecOn with l a
state_before: α : Type u_1
p : α → Bool
l : List α
n : ℕ
⊢ rtakeWhile p l = [] ↔ ∀ (hl : l ≠ []), ¬p (getLast l hl) = true

tactic: simp only [rtakeWhile, takeWhile, reverse_nil, true_iff]
state_before: case H0
α : Type u_1
p : α → Bool
l : List α
n : ℕ
⊢ rtakeWhile p [] = [] ↔ ∀ (hl : [] ≠ []), ¬p (getLast [] hl) = true

tactic: intro f
state_before: case H0
α : Type u_1
p : α → Bool
l : List α
n : ℕ
⊢ ∀ (hl : [] ≠ []), ¬p (getLast [] hl) = true

tactic: contradiction
state_before: case H0
α : Type u_1
p : α → Bool
l : List α
n : ℕ
f : [] ≠ []
⊢ ¬p (getLast [] f) = true

tactic: simp only [rtakeWhile, reverse_append, takeWhile, reverse_eq_nil, getLast_append, ne_eq,
append_eq_nil, and_false, forall_true_left]
state_before: case H1
α : Type u_1
p : α → Bool
l✝ : List α
n : ℕ
l : List α
a : α
a✝ : rtakeWhile p l = [] ↔ ∀ (hl : l ≠ []), ¬p (getLast l hl) = true
⊢ rtakeWhile p (l ++ [a]) = [] ↔ ∀ (hl : l ++ [a] ≠ []), ¬p (getLast (l ++ [a]) hl) = true

tactic: refine' ⟨fun h => _ , fun h => _⟩
state_before: case H1
α : Type u_1
p : α → Bool
l✝ : List α
n : ℕ
l : List α
a : α
a✝ : rtakeWhile p l = [] ↔ ∀ (hl : l ≠ []), ¬p (getLast l hl) = true
⊢ (match p a with
      | true => a :: takeWhile p (List.append [] (reverse l))
      | false => []) =
      [] ↔
    ¬p a = true

tactic: intro pa
state_before: case H1.refine'_1
α : Type u_1
p : α → Bool
l✝ : List α
n : ℕ
l : List α
a : α
a✝ : rtakeWhile p l = [] ↔ ∀ (hl : l ≠ []), ¬p (getLast l hl) = true
h :
  (match p a with
    | true => a :: takeWhile p (List.append [] (reverse l))
    | false => []) =
    []
⊢ ¬p a = true

tactic: simp only [pa] at h
state_before: case H1.refine'_1
α : Type u_1
p : α → Bool
l✝ : List α
n : ℕ
l : List α
a : α
a✝ : rtakeWhile p l = [] ↔ ∀ (hl : l ≠ []), ¬p (getLast l hl) = true
h :
  (match p a with
    | true => a :: takeWhile p (List.append [] (reverse l))
    | false => []) =
    []
pa : p a = true
⊢ False

tactic: simp only [h]
state_before: case H1.refine'_2
α : Type u_1
p : α → Bool
l✝ : List α
n : ℕ
l : List α
a : α
a✝ : rtakeWhile p l = [] ↔ ∀ (hl : l ≠ []), ¬p (getLast l hl) = true
h : ¬p a = true
⊢ (match p a with
    | true => a :: takeWhile p (List.append [] (reverse l))
    | false => []) =
    []
Theorem: PNat.factorMultiset_one
File: Mathlib/Data/PNat/Factors.lean

tactic: simp [factorMultiset, PrimeMultiset.ofNatList, PrimeMultiset.ofNatMultiset]
state_before: ⊢ factorMultiset 1 = 0
Theorem: Subgroup.closure_mul_image_eq_top
File: Mathlib/GroupTheory/Schreier.lean

tactic: rw [eq_top_iff, ← map_subtype_le_map_subtype, MonoidHom.map_closure, Set.image_image]
state_before: G : Type u_1
inst✝ : Group G
H : Subgroup G
R S : Set G
hR : R ∈ rightTransversals ↑H
hR1 : 1 ∈ R
hS : closure S = ⊤
⊢ closure ((fun g => { val := g * (↑(toFun hR g))⁻¹, property := (_ : g * (↑(toFun hR g))⁻¹ ∈ H) }) '' (R * S)) = ⊤

tactic: exact (map_subtype_le ⊤).trans (ge_of_eq (closure_mul_image_eq hR hR1 hS))
state_before: G : Type u_1
inst✝ : Group G
H : Subgroup G
R S : Set G
hR : R ∈ rightTransversals ↑H
hR1 : 1 ∈ R
hS : closure S = ⊤
⊢ map (Subgroup.subtype H) ⊤ ≤
    closure
      ((fun x => ↑(Subgroup.subtype H) { val := x * (↑(toFun hR x))⁻¹, property := (_ : x * (↑(toFun hR x))⁻¹ ∈ H) }) ''
        (R * S))
Theorem: Set.ordConnectedComponent_mem_nhds
File: Mathlib/Topology/Algebra/Order/T5.lean

tactic: refine' ⟨fun h => mem_of_superset h ordConnectedComponent_subset, fun h => _⟩
state_before: X : Type u_1
inst✝² : LinearOrder X
inst✝¹ : TopologicalSpace X
inst✝ : OrderTopology X
a b c : X
s t : Set X
⊢ ordConnectedComponent s a ∈ 𝓝 a ↔ s ∈ 𝓝 a

tactic: rcases exists_Icc_mem_subset_of_mem_nhds h with ⟨b, c, ha, ha', hs⟩
state_before: X : Type u_1
inst✝² : LinearOrder X
inst✝¹ : TopologicalSpace X
inst✝ : OrderTopology X
a b c : X
s t : Set X
h : s ∈ 𝓝 a
⊢ ordConnectedComponent s a ∈ 𝓝 a

tactic: exact mem_of_superset ha' (subset_ordConnectedComponent ha hs)
state_before: case intro.intro.intro.intro
X : Type u_1
inst✝² : LinearOrder X
inst✝¹ : TopologicalSpace X
inst✝ : OrderTopology X
a b✝ c✝ : X
s t : Set X
h : s ∈ 𝓝 a
b c : X
ha : a ∈ Icc b c
ha' : Icc b c ∈ 𝓝 a
hs : Icc b c ⊆ s
⊢ ordConnectedComponent s a ∈ 𝓝 a
Theorem: Set.image_surjective
File: Mathlib/Data/Set/Image.lean

tactic: refine' ⟨fun h y => _, Surjective.image_surjective⟩
state_before: α : Type u
β : Type v
f : α → β
⊢ Surjective (image f) ↔ Surjective f

tactic: cases' h {y} with s hs
state_before: α : Type u
β : Type v
f : α → β
h : Surjective (image f)
y : β
⊢ ∃ a, f a = y

tactic: have := mem_singleton y
state_before: case intro
α : Type u
β : Type v
f : α → β
h : Surjective (image f)
y : β
s : Set α
hs : f '' s = {y}
⊢ ∃ a, f a = y

tactic: rw [← hs] at this
state_before: case intro
α : Type u
β : Type v
f : α → β
h : Surjective (image f)
y : β
s : Set α
hs : f '' s = {y}
this : y ∈ {y}
⊢ ∃ a, f a = y

tactic: rcases this with ⟨x, _, hx⟩
state_before: case intro
α : Type u
β : Type v
f : α → β
h : Surjective (image f)
y : β
s : Set α
hs : f '' s = {y}
this : y ∈ f '' s
⊢ ∃ a, f a = y

tactic: exact ⟨x, hx⟩
state_before: case intro.intro.intro
α : Type u
β : Type v
f : α → β
h : Surjective (image f)
y : β
s : Set α
hs : f '' s = {y}
x : α
left✝ : x ∈ s
hx : f x = y
⊢ ∃ a, f a = y
Theorem: Set.comp_rangeSplitting
File: Mathlib/Data/Set/Image.lean

tactic: ext
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.98077
ι : Sort ?u.98080
ι' : Sort ?u.98083
f✝ : ι → α
s t : Set α
f : α → β
⊢ f ∘ rangeSplitting f = Subtype.val

tactic: simp only [Function.comp_apply]
state_before: case h
α : Type u_2
β : Type u_1
γ : Type ?u.98077
ι : Sort ?u.98080
ι' : Sort ?u.98083
f✝ : ι → α
s t : Set α
f : α → β
x✝ : ↑(range f)
⊢ (f ∘ rangeSplitting f) x✝ = ↑x✝

tactic: apply apply_rangeSplitting
state_before: case h
α : Type u_2
β : Type u_1
γ : Type ?u.98077
ι : Sort ?u.98080
ι' : Sort ?u.98083
f✝ : ι → α
s t : Set α
f : α → β
x✝ : ↑(range f)
⊢ f (rangeSplitting f x✝) = ↑x✝
Theorem: Nat.image_fst_divisorsAntidiagonal
File: Mathlib/NumberTheory/Divisors.lean

tactic: ext
state_before: n : ℕ
⊢ image Prod.fst (divisorsAntidiagonal n) = divisors n

tactic: simp [Dvd.dvd, @eq_comm _ n (_ * _)]
state_before: case a
n a✝ : ℕ
⊢ a✝ ∈ image Prod.fst (divisorsAntidiagonal n) ↔ a✝ ∈ divisors n
Theorem: StarConvex.affine_image
File: Mathlib/Analysis/Convex/Star.lean

tactic: rintro y ⟨y', ⟨hy', hy'f⟩⟩ a b ha hb hab
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y : E
s✝ t : Set E
f : E →ᵃ[𝕜] F
s : Set E
hs : StarConvex 𝕜 x s
⊢ StarConvex 𝕜 (↑f x) (↑f '' s)

tactic: refine' ⟨a • x + b • y', ⟨hs hy' ha hb hab, _⟩⟩
state_before: case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y✝ : E
s✝ t : Set E
f : E →ᵃ[𝕜] F
s : Set E
hs : StarConvex 𝕜 x s
y : F
y' : E
hy' : y' ∈ s
hy'f : ↑f y' = y
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ a • ↑f x + b • y ∈ ↑f '' s

tactic: rw [Convex.combo_affine_apply hab, hy'f]
state_before: case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y✝ : E
s✝ t : Set E
f : E →ᵃ[𝕜] F
s : Set E
hs : StarConvex 𝕜 x s
y : F
y' : E
hy' : y' ∈ s
hy'f : ↑f y' = y
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ ↑f (a • x + b • y') = a • ↑f x + b • y
Theorem: Set.Icc_diff_both
File: Mathlib/Data/Set/Intervals/Basic.lean

tactic: rw [insert_eq, ← diff_diff, Icc_diff_left, Ioc_diff_right]
state_before: α : Type u_1
β : Type ?u.41354
inst✝ : PartialOrder α
a b c : α
⊢ Icc a b \ {a, b} = Ioo a b
Theorem: Preperfect.perfect_closure
File: Mathlib/Topology/Perfect.lean

tactic: constructor
state_before: α : Type u_1
inst✝ : TopologicalSpace α
C : Set α
hC : Preperfect C
⊢ Perfect (closure C)

tactic: intro x hx
state_before: case acc
α : Type u_1
inst✝ : TopologicalSpace α
C : Set α
hC : Preperfect C
⊢ Preperfect (closure C)

tactic: by_cases h : x ∈ C <;> apply AccPt.mono _ (principal_mono.mpr subset_closure)
state_before: case acc
α : Type u_1
inst✝ : TopologicalSpace α
C : Set α
hC : Preperfect C
x : α
hx : x ∈ closure C
⊢ AccPt x (𝓟 (closure C))

tactic: have : {x}ᶜ ∩ C = C := by simp [h]
state_before: α : Type u_1
inst✝ : TopologicalSpace α
C : Set α
hC : Preperfect C
x : α
hx : x ∈ closure C
h : ¬x ∈ C
⊢ AccPt x (𝓟 C)

tactic: rw [AccPt, nhdsWithin, inf_assoc, inf_principal, this]
state_before: α : Type u_1
inst✝ : TopologicalSpace α
C : Set α
hC : Preperfect C
x : α
hx : x ∈ closure C
h : ¬x ∈ C
this : {x}ᶜ ∩ C = C
⊢ AccPt x (𝓟 C)

tactic: rw [closure_eq_cluster_pts] at hx
state_before: α : Type u_1
inst✝ : TopologicalSpace α
C : Set α
hC : Preperfect C
x : α
hx : x ∈ closure C
h : ¬x ∈ C
this : {x}ᶜ ∩ C = C
⊢ NeBot (𝓝 x ⊓ 𝓟 C)

tactic: exact hx
state_before: α : Type u_1
inst✝ : TopologicalSpace α
C : Set α
hC : Preperfect C
x : α
hx : x ∈ {a | ClusterPt a (𝓟 C)}
h : ¬x ∈ C
this : {x}ᶜ ∩ C = C
⊢ NeBot (𝓝 x ⊓ 𝓟 C)

tactic: exact isClosed_closure
state_before: case closed
α : Type u_1
inst✝ : TopologicalSpace α
C : Set α
hC : Preperfect C
⊢ IsClosed (closure C)

tactic: exact hC _ h
state_before: α : Type u_1
inst✝ : TopologicalSpace α
C : Set α
hC : Preperfect C
x : α
hx : x ∈ closure C
h : x ∈ C
⊢ AccPt x (𝓟 C)

tactic: simp [h]
state_before: α : Type u_1
inst✝ : TopologicalSpace α
C : Set α
hC : Preperfect C
x : α
hx : x ∈ closure C
h : ¬x ∈ C
⊢ {x}ᶜ ∩ C = C
Theorem: Matrix.conjTranspose_col
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext
state_before: l : Type ?u.1214195
m : Type u_1
n : Type ?u.1214201
o : Type ?u.1214204
m' : o → Type ?u.1214209
n' : o → Type ?u.1214214
R : Type ?u.1214217
S : Type ?u.1214220
α : Type v
β : Type w
γ : Type ?u.1214227
inst✝ : Star α
v : m → α
⊢ (col v)ᴴ = row (star v)

tactic: rfl
state_before: case a.h
l : Type ?u.1214195
m : Type u_1
n : Type ?u.1214201
o : Type ?u.1214204
m' : o → Type ?u.1214209
n' : o → Type ?u.1214214
R : Type ?u.1214217
S : Type ?u.1214220
α : Type v
β : Type w
γ : Type ?u.1214227
inst✝ : Star α
v : m → α
i✝ : Unit
x✝ : m
⊢ (col v)ᴴ i✝ x✝ = row (star v) i✝ x✝
Theorem: MeasureTheory.FiniteMeasure.mass_nonzero_iff
File: Mathlib/MeasureTheory/Measure/FiniteMeasure.lean

tactic: rw [not_iff_not]
state_before: Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ : FiniteMeasure Ω
⊢ mass μ ≠ 0 ↔ μ ≠ 0

tactic: exact FiniteMeasure.mass_zero_iff μ
state_before: Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ : FiniteMeasure Ω
⊢ mass μ = 0 ↔ μ = 0
Theorem: EqualCharZero.pnatCast_one
File: Mathlib/Algebra/CharP/MixedCharZero.lean

tactic: apply Units.ext
state_before: R : Type u_1
inst✝¹ : CommRing R
inst✝ : Fact (∀ (I : Ideal R), I ≠ ⊤ → CharZero (R ⧸ I))
⊢ ↑1 = 1

tactic: rw [Units.val_one]
state_before: case a
R : Type u_1
inst✝¹ : CommRing R
inst✝ : Fact (∀ (I : Ideal R), I ≠ ⊤ → CharZero (R ⧸ I))
⊢ ↑↑1 = ↑1

tactic: change ((PNat.isUnit_natCast (R := R) 1).unit : R) = 1
state_before: case a
R : Type u_1
inst✝¹ : CommRing R
inst✝ : Fact (∀ (I : Ideal R), I ≠ ⊤ → CharZero (R ⧸ I))
⊢ ↑↑1 = 1

tactic: rw [IsUnit.unit_spec (PNat.isUnit_natCast 1)]
state_before: case a
R : Type u_1
inst✝¹ : CommRing R
inst✝ : Fact (∀ (I : Ideal R), I ≠ ⊤ → CharZero (R ⧸ I))
⊢ ↑(IsUnit.unit (_ : IsUnit ↑↑1)) = 1

tactic: rw [PNat.one_coe, Nat.cast_one]
state_before: case a
R : Type u_1
inst✝¹ : CommRing R
inst✝ : Fact (∀ (I : Ideal R), I ≠ ⊤ → CharZero (R ⧸ I))
⊢ ↑↑1 = 1
Theorem: Cardinal.lift_le_nat_iff
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: rw [← lift_natCast.{v,u}, lift_le]
state_before: α β : Type u
a : Cardinal
n : ℕ
⊢ lift a ≤ ↑n ↔ a ≤ ↑n
Theorem: Set.Ioc_diff_right
File: Mathlib/Data/Set/Intervals/Basic.lean

tactic: simp [and_assoc, ← lt_iff_le_and_ne]
state_before: α : Type u_1
β : Type ?u.39340
inst✝ : PartialOrder α
a b c x : α
⊢ x ∈ Ioc a b \ {b} ↔ x ∈ Ioo a b
Theorem: tsum_nonneg
File: Mathlib/Topology/Algebra/InfiniteSum/Order.lean

tactic: by_cases hg : Summable g
state_before: ι : Type u_2
κ : Type ?u.31235
α : Type u_1
inst✝² : OrderedAddCommMonoid α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
f g : ι → α
a a₁ a₂ : α
h : ∀ (i : ι), 0 ≤ g i
⊢ 0 ≤ ∑' (i : ι), g i

tactic: exact hg.hasSum.nonneg h
state_before: case pos
ι : Type u_2
κ : Type ?u.31235
α : Type u_1
inst✝² : OrderedAddCommMonoid α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
f g : ι → α
a a₁ a₂ : α
h : ∀ (i : ι), 0 ≤ g i
hg : Summable g
⊢ 0 ≤ ∑' (i : ι), g i

tactic: rw [tsum_eq_zero_of_not_summable hg]
state_before: case neg
ι : Type u_2
κ : Type ?u.31235
α : Type u_1
inst✝² : OrderedAddCommMonoid α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
f g : ι → α
a a₁ a₂ : α
h : ∀ (i : ι), 0 ≤ g i
hg : ¬Summable g
⊢ 0 ≤ ∑' (i : ι), g i
Theorem: Fin.card_fintypeIio
File: Mathlib/Data/Fin/Interval.lean

tactic: rw [Fintype.card_ofFinset, card_Iio]
state_before: n : ℕ
a b : Fin n
⊢ Fintype.card ↑(Set.Iio b) = ↑b
Theorem: Polynomial.natDegree_multiset_prod
File: Mathlib/Algebra/Polynomial/BigOperators.lean

tactic: nontriviality R
state_before: R : Type u
ι : Type w
s : Finset ι
inst✝¹ : CommSemiring R
inst✝ : NoZeroDivisors R
f : ι → R[X]
t : Multiset R[X]
h : ¬0 ∈ t
⊢ natDegree (prod t) = Multiset.sum (Multiset.map natDegree t)

tactic: rw [natDegree_multiset_prod']
state_before: R : Type u
ι : Type w
s : Finset ι
inst✝¹ : CommSemiring R
inst✝ : NoZeroDivisors R
f : ι → R[X]
t : Multiset R[X]
h : ¬0 ∈ t
✝ : Nontrivial R
⊢ natDegree (prod t) = Multiset.sum (Multiset.map natDegree t)

tactic: simp_rw [Ne.def, Multiset.prod_eq_zero_iff, Multiset.mem_map, leadingCoeff_eq_zero]
state_before: case h
R : Type u
ι : Type w
s : Finset ι
inst✝¹ : CommSemiring R
inst✝ : NoZeroDivisors R
f : ι → R[X]
t : Multiset R[X]
h : ¬0 ∈ t
✝ : Nontrivial R
⊢ prod (Multiset.map (fun f => leadingCoeff f) t) ≠ 0

tactic: rintro ⟨_, h, rfl⟩
state_before: case h
R : Type u
ι : Type w
s : Finset ι
inst✝¹ : CommSemiring R
inst✝ : NoZeroDivisors R
f : ι → R[X]
t : Multiset R[X]
h : ¬0 ∈ t
✝ : Nontrivial R
⊢ ¬∃ a, a ∈ t ∧ a = 0

tactic: contradiction
state_before: case h.intro.intro
R : Type u
ι : Type w
s : Finset ι
inst✝¹ : CommSemiring R
inst✝ : NoZeroDivisors R
f : ι → R[X]
t : Multiset R[X]
h✝ : ¬0 ∈ t
✝ : Nontrivial R
h : 0 ∈ t
⊢ False
Theorem: Real.Angle.tan_eq_of_two_zsmul_eq
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: simp_rw [two_zsmul, ← two_nsmul] at h
state_before: θ ψ : Angle
h : 2 • θ = 2 • ψ
⊢ tan θ = tan ψ

tactic: exact tan_eq_of_two_nsmul_eq h
state_before: θ ψ : Angle
h : 2 • θ = 2 • ψ
⊢ tan θ = tan ψ
Theorem: Filter.eventually_swap_iff
File: Mathlib/Order/Filter/Prod.lean

tactic: rw [prod_comm]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.18541
δ : Type ?u.18544
ι : Sort ?u.18547
s : Set α
t : Set β
f : Filter α
g : Filter β
p : α × β → Prop
⊢ (∀ᶠ (x : α × β) in f ×ˢ g, p x) ↔ ∀ᶠ (y : β × α) in g ×ˢ f, p (Prod.swap y)

tactic: rfl
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.18541
δ : Type ?u.18544
ι : Sort ?u.18547
s : Set α
t : Set β
f : Filter α
g : Filter β
p : α × β → Prop
⊢ (∀ᶠ (x : α × β) in map (fun p => (p.snd, p.fst)) (g ×ˢ f), p x) ↔ ∀ᶠ (y : β × α) in g ×ˢ f, p (Prod.swap y)
Theorem: Polynomial.IsRoot.dvd
File: Mathlib/Data/Polynomial/Eval.lean

tactic: rwa [IsRoot, eval, eval₂_eq_zero_of_dvd_of_eval₂_eq_zero _ _ hpq]
state_before: R✝ : Type u
S : Type v
T : Type w
ι : Type y
a b : R✝
m n : ℕ
inst✝¹ : Semiring R✝
p✝ q✝ r : R✝[X]
x✝ : R✝
R : Type u_1
inst✝ : CommSemiring R
p q : R[X]
x : R
h : IsRoot p x
hpq : p ∣ q
⊢ IsRoot q x
Theorem: Dfinsupp.support_zipWith
File: Mathlib/Data/Dfinsupp/Basic.lean

tactic: simp [zipWith_def]
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
dec : DecidableEq ι
inst✝⁵ : (i : ι) → Zero (β i)
inst✝⁴ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
inst✝³ : (i : ι) → Zero (β₁ i)
inst✝² : (i : ι) → Zero (β₂ i)
inst✝¹ : (i : ι) → (x : β₁ i) → Decidable (x ≠ 0)
inst✝ : (i : ι) → (x : β₂ i) → Decidable (x ≠ 0)
f : (i : ι) → β₁ i → β₂ i → β i
hf : ∀ (i : ι), f i 0 0 = 0
g₁ : Π₀ (i : ι), β₁ i
g₂ : Π₀ (i : ι), β₂ i
⊢ support (zipWith f hf g₁ g₂) ⊆ support g₁ ∪ support g₂
Theorem: exp_nsmul
File: Mathlib/Analysis/NormedSpace/Exponential.lean

tactic: induction' n with n ih
state_before: 𝕂 : Type u_2
𝔸 : Type u_1
𝔹 : Type ?u.380774
inst✝⁵ : IsROrC 𝕂
inst✝⁴ : NormedRing 𝔸
inst✝³ : NormedAlgebra 𝕂 𝔸
inst✝² : NormedRing 𝔹
inst✝¹ : NormedAlgebra 𝕂 𝔹
inst✝ : CompleteSpace 𝔸
n : ℕ
x : 𝔸
⊢ exp 𝕂 (n • x) = exp 𝕂 x ^ n

tactic: rw [Nat.zero_eq, zero_smul, pow_zero, exp_zero]
state_before: case zero
𝕂 : Type u_2
𝔸 : Type u_1
𝔹 : Type ?u.380774
inst✝⁵ : IsROrC 𝕂
inst✝⁴ : NormedRing 𝔸
inst✝³ : NormedAlgebra 𝕂 𝔸
inst✝² : NormedRing 𝔹
inst✝¹ : NormedAlgebra 𝕂 𝔹
inst✝ : CompleteSpace 𝔸
x : 𝔸
⊢ exp 𝕂 (Nat.zero • x) = exp 𝕂 x ^ Nat.zero

tactic: rw [succ_nsmul, pow_succ, exp_add_of_commute ((Commute.refl x).smul_right n), ih]
state_before: case succ
𝕂 : Type u_2
𝔸 : Type u_1
𝔹 : Type ?u.380774
inst✝⁵ : IsROrC 𝕂
inst✝⁴ : NormedRing 𝔸
inst✝³ : NormedAlgebra 𝕂 𝔸
inst✝² : NormedRing 𝔹
inst✝¹ : NormedAlgebra 𝕂 𝔹
inst✝ : CompleteSpace 𝔸
x : 𝔸
n : ℕ
ih : exp 𝕂 (n • x) = exp 𝕂 x ^ n
⊢ exp 𝕂 (Nat.succ n • x) = exp 𝕂 x ^ Nat.succ n
Theorem: Multiset.gcd_ndinsert
File: Mathlib/Algebra/GCDMonoid/Multiset.lean

tactic: rw [← gcd_dedup, dedup_ext.2, gcd_dedup, gcd_cons]
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizedGCDMonoid α
inst✝ : DecidableEq α
a : α
s : Multiset α
⊢ gcd (ndinsert a s) = GCDMonoid.gcd a (gcd s)

tactic: simp
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizedGCDMonoid α
inst✝ : DecidableEq α
a : α
s : Multiset α
⊢ ∀ (a_1 : α), a_1 ∈ ndinsert a s ↔ a_1 ∈ a ::ₘ s
Theorem: CategoryTheory.Limits.imageSubobjectCompIso_hom_arrow
File: Mathlib/CategoryTheory/Subobject/Limits.lean

tactic: simp [imageSubobjectCompIso]
state_before: C : Type u
inst✝⁴ : Category C
X Y Z : C
f✝ : X ⟶ Y
inst✝³ : HasImage f✝
inst✝² : HasEqualizers C
f : X ⟶ Y
inst✝¹ : HasImage f
Y' : C
h : Y ⟶ Y'
inst✝ : IsIso h
⊢ (imageSubobjectCompIso f h).hom ≫ arrow (imageSubobject f) = arrow (imageSubobject (f ≫ h)) ≫ inv h
Theorem: Complex.exp_sub
File: Mathlib/Data/Complex/Exponential.lean

tactic: simp [sub_eq_add_neg, exp_add, exp_neg, div_eq_mul_inv]
state_before: x y : ℂ
⊢ exp (x - y) = exp x / exp y
Theorem: ENNReal.exists_frequently_lt_of_liminf_ne_top
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: by_contra h
state_before: α : Type ?u.166364
β : Type ?u.166367
γ : Type ?u.166370
a b c d : ℝ≥0∞
r p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
ι : Type u_1
l : Filter ι
x : ι → ℝ
hx : liminf (fun n => ↑(↑Real.nnabs (x n))) l ≠ ⊤
⊢ ∃ R, ∃ᶠ (n : ι) in l, x n < R

tactic: simp_rw [not_exists, not_frequently, not_lt] at h
state_before: α : Type ?u.166364
β : Type ?u.166367
γ : Type ?u.166370
a b c d : ℝ≥0∞
r p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
ι : Type u_1
l : Filter ι
x : ι → ℝ
hx : liminf (fun n => ↑(↑Real.nnabs (x n))) l ≠ ⊤
h : ¬∃ R, ∃ᶠ (n : ι) in l, x n < R
⊢ False

tactic: refine hx (ENNReal.eq_top_of_forall_nnreal_le fun r => le_limsInf_of_le (by isBoundedDefault) ?_)
state_before: α : Type ?u.166364
β : Type ?u.166367
γ : Type ?u.166370
a b c d : ℝ≥0∞
r p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
ι : Type u_1
l : Filter ι
x : ι → ℝ
hx : liminf (fun n => ↑(↑Real.nnabs (x n))) l ≠ ⊤
h : ∀ (x_1 : ℝ), ∀ᶠ (x_2 : ι) in l, x_1 ≤ x x_2
⊢ False

tactic: simp only [eventually_map, ENNReal.coe_le_coe]
state_before: α : Type ?u.166364
β : Type ?u.166367
γ : Type ?u.166370
a b c d : ℝ≥0∞
r✝ p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
ι : Type u_1
l : Filter ι
x : ι → ℝ
hx : liminf (fun n => ↑(↑Real.nnabs (x n))) l ≠ ⊤
h : ∀ (x_1 : ℝ), ∀ᶠ (x_2 : ι) in l, x_1 ≤ x x_2
r : ℝ≥0
⊢ ∀ᶠ (n : ℝ≥0∞) in map (fun n => ↑(↑Real.nnabs (x n))) l, ↑r ≤ n

tactic: filter_upwards [h r] with i hi using hi.trans (le_abs_self (x i))
state_before: α : Type ?u.166364
β : Type ?u.166367
γ : Type ?u.166370
a b c d : ℝ≥0∞
r✝ p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
ι : Type u_1
l : Filter ι
x : ι → ℝ
hx : liminf (fun n => ↑(↑Real.nnabs (x n))) l ≠ ⊤
h : ∀ (x_1 : ℝ), ∀ᶠ (x_2 : ι) in l, x_1 ≤ x x_2
r : ℝ≥0
⊢ ∀ᶠ (a : ι) in l, r ≤ ↑Real.nnabs (x a)

tactic: isBoundedDefault
state_before: α : Type ?u.166364
β : Type ?u.166367
γ : Type ?u.166370
a b c d : ℝ≥0∞
r✝ p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
ι : Type u_1
l : Filter ι
x : ι → ℝ
hx : liminf (fun n => ↑(↑Real.nnabs (x n))) l ≠ ⊤
h : ∀ (x_1 : ℝ), ∀ᶠ (x_2 : ι) in l, x_1 ≤ x x_2
r : ℝ≥0
⊢ IsCobounded (fun x x_1 => x ≥ x_1) (map (fun n => ↑(↑Real.nnabs (x n))) l)