tasksource/leandojo huggingface dataset:
Theorem: dist_self_div_left
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: rw [dist_comm, dist_self_div_right]
state_before: 𝓕 : Type ?u.640919
𝕜 : Type ?u.640922
α : Type ?u.640925
ι : Type ?u.640928
κ : Type ?u.640931
E : Type u_1
F : Type ?u.640937
G : Type ?u.640940
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a✝ a₁ a₂ b✝ b₁ b₂ : E
r r₁ r₂ : ℝ
a b : E
⊢ dist (a / b) a = ‖b‖
Theorem: Composition.eq_ones_iff_le_length
File: Mathlib/Combinatorics/Composition.lean

tactic: simp [eq_ones_iff_length, le_antisymm_iff, c.length_le]
state_before: n : ℕ
c✝ c : Composition n
⊢ c = ones n ↔ n ≤ length c
Theorem: Module.Baer.ExtensionOfMaxAdjoin.extendIdealTo_wd
File: Mathlib/Algebra/Module/Injective.lean

tactic: rw [← sub_eq_zero, ← map_sub]
state_before: R : Type u
inst✝⁷ : Ring R
Q : TypeMax
inst✝⁶ : AddCommGroup Q
inst✝⁵ : Module R Q
M N : Type (max u v)
inst✝⁴ : AddCommGroup M
inst✝³ : AddCommGroup N
inst✝² : Module R M
inst✝¹ : Module R N
i : M →ₗ[R] N
f : M →ₗ[R] Q
inst✝ : Fact (Function.Injective ↑i)
h : Baer R Q
y : N
r r' : R
eq1 : r • y = r' • y
⊢ ↑(extendIdealTo i f h y) r = ↑(extendIdealTo i f h y) r'

tactic: convert ExtensionOfMaxAdjoin.extendIdealTo_wd' i f h (r - r') _
state_before: R : Type u
inst✝⁷ : Ring R
Q : TypeMax
inst✝⁶ : AddCommGroup Q
inst✝⁵ : Module R Q
M N : Type (max u v)
inst✝⁴ : AddCommGroup M
inst✝³ : AddCommGroup N
inst✝² : Module R M
inst✝¹ : Module R N
i : M →ₗ[R] N
f : M →ₗ[R] Q
inst✝ : Fact (Function.Injective ↑i)
h : Baer R Q
y : N
r r' : R
eq1 : r • y = r' • y
⊢ ↑(extendIdealTo i f h y) (r - r') = 0

tactic: rw [sub_smul, sub_eq_zero, eq1]
state_before: case convert_2
R : Type u
inst✝⁷ : Ring R
Q : TypeMax
inst✝⁶ : AddCommGroup Q
inst✝⁵ : Module R Q
M N : Type (max u v)
inst✝⁴ : AddCommGroup M
inst✝³ : AddCommGroup N
inst✝² : Module R M
inst✝¹ : Module R N
i : M →ₗ[R] N
f : M →ₗ[R] Q
inst✝ : Fact (Function.Injective ↑i)
h : Baer R Q
y : N
r r' : R
eq1 : r • y = r' • y
⊢ (r - r') • y = 0
Theorem: MvPowerSeries.zero_inv
File: Mathlib/RingTheory/PowerSeries/Basic.lean

tactic: rw [inv_eq_zero, constantCoeff_zero]
state_before: σ : Type u_1
R : Type ?u.1763981
k : Type u_2
inst✝ : Field k
⊢ 0⁻¹ = 0
Theorem: LeftOrdContinuous.map_ciSup
File: Mathlib/Order/OrdContinuous.lean

tactic: simp only [iSup, hf.map_csSup (range_nonempty _) hg, ← range_comp]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : ConditionallyCompleteLattice α
inst✝¹ : ConditionallyCompleteLattice β
inst✝ : Nonempty ι
f : α → β
hf : LeftOrdContinuous f
g : ι → α
hg : BddAbove (range g)
⊢ f (⨆ (i : ι), g i) = ⨆ (i : ι), f (g i)

tactic: rfl
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : ConditionallyCompleteLattice α
inst✝¹ : ConditionallyCompleteLattice β
inst✝ : Nonempty ι
f : α → β
hf : LeftOrdContinuous f
g : ι → α
hg : BddAbove (range g)
⊢ sSup (range (f ∘ g)) = sSup (range fun i => f (g i))
Theorem: SimpleGraph.mem_incidence_iff_neighbor
File: Mathlib/Combinatorics/SimpleGraph/Basic.lean

tactic: simp only [mem_incidenceSet, mem_neighborSet]
state_before: ι : Sort ?u.138365
𝕜 : Type ?u.138368
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
v w : V
⊢ Quotient.mk (Sym2.Rel.setoid V) (v, w) ∈ incidenceSet G v ↔ w ∈ neighborSet G v
Theorem: Equiv.Perm.card_cycleType_eq_one
File: Mathlib/GroupTheory/Perm/Cycle/Type.lean

tactic: rw [card_eq_one]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ : Perm α
⊢ ↑card (cycleType σ) = 1 ↔ IsCycle σ

tactic: simp_rw [cycleType_def, Multiset.map_eq_singleton, ← Finset.singleton_val, Finset.val_inj,
  cycleFactorsFinset_eq_singleton_iff]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ : Perm α
⊢ (∃ a, cycleType σ = {a}) ↔ IsCycle σ

tactic: constructor
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ : Perm α
⊢ (∃ a a_1, (IsCycle σ ∧ σ = a_1) ∧ (Finset.card ∘ support) a_1 = a) ↔ IsCycle σ

tactic: rintro ⟨_, _, ⟨h, -⟩, -⟩
state_before: case mp
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ : Perm α
⊢ (∃ a a_1, (IsCycle σ ∧ σ = a_1) ∧ (Finset.card ∘ support) a_1 = a) → IsCycle σ

tactic: exact h
state_before: case mp.intro.intro.intro.intro
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ : Perm α
w✝¹ : ℕ
w✝ : Perm α
h : IsCycle σ
⊢ IsCycle σ

tactic: intro h
state_before: case mpr
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ : Perm α
⊢ IsCycle σ → ∃ a a_1, (IsCycle σ ∧ σ = a_1) ∧ (Finset.card ∘ support) a_1 = a

tactic: use σ.support.card, σ
state_before: case mpr
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ : Perm α
h : IsCycle σ
⊢ ∃ a a_1, (IsCycle σ ∧ σ = a_1) ∧ (Finset.card ∘ support) a_1 = a

tactic: simp [h]
state_before: case mpr
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ : Perm α
h : IsCycle σ
⊢ (IsCycle σ ∧ σ = σ) ∧ (Finset.card ∘ support) σ = Finset.card (support σ)
Theorem: Asymptotics.isBigOWith_norm_left
File: Mathlib/Analysis/Asymptotics/Asymptotics.lean

tactic: simp only [IsBigOWith_def, norm_norm]
state_before: α : Type u_1
β : Type ?u.122412
E : Type ?u.122415
F : Type u_2
G : Type ?u.122421
E' : Type u_3
F' : Type ?u.122427
G' : Type ?u.122430
E'' : Type ?u.122433
F'' : Type ?u.122436
G'' : Type ?u.122439
R : Type ?u.122442
R' : Type ?u.122445
𝕜 : Type ?u.122448
𝕜' : Type ?u.122451
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 α
u v : α → ℝ
⊢ IsBigOWith c l (fun x => ‖f' x‖) g ↔ IsBigOWith c l f' g
Theorem: Prod.lex_def
File: Mathlib/Data/Prod/Basic.lean

tactic: cases h <;> simp [*]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.5817
δ : Type ?u.5820
r✝ : α → α → Prop
s✝ : β → β → Prop
x y : α × β
r : α → α → Prop
s : β → β → Prop
p q : α × β
h : Prod.Lex r s p q
⊢ r p.fst q.fst ∨ p.fst = q.fst ∧ s p.snd q.snd

tactic: subst e
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.5817
δ : Type ?u.5820
r✝ : α → α → Prop
s✝ : β → β → Prop
x y : α × β
r : α → α → Prop
s : β → β → Prop
p q : α × β
h✝ : r p.fst q.fst ∨ p.fst = q.fst ∧ s p.snd q.snd
a : α
b : β
c : α
d : β
e : (a, b).fst = (c, d).fst
h : s (a, b).snd (c, d).snd
⊢ Prod.Lex r s (a, b) (c, d)

tactic: exact Lex.right _ h
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.5817
δ : Type ?u.5820
r✝ : α → α → Prop
s✝ : β → β → Prop
x y : α × β
r : α → α → Prop
s : β → β → Prop
p q : α × β
h✝ : r p.fst q.fst ∨ p.fst = q.fst ∧ s p.snd q.snd
a : α
b d : β
h : s (a, b).snd ((a, b).fst, d).snd
⊢ Prod.Lex r s (a, b) ((a, b).fst, d)
Theorem: Mathlib.Tactic.Group.zpow_trick_one
File: Mathlib/Tactic/Group.lean

tactic: rw [mul_assoc, mul_self_zpow]
state_before: G : Type u_1
inst✝ : Group G
a b : G
m : ℤ
⊢ a * b * b ^ m = a * b ^ (m + 1)
Theorem: IsOpen.div_closure
File: Mathlib/Topology/Algebra/Group/Basic.lean

tactic: simp_rw [div_eq_mul_inv, inv_closure, hs.mul_closure]
state_before: α : Type u
β : Type v
G : Type w
H : Type x
inst✝² : TopologicalSpace α
inst✝¹ : Group α
inst✝ : TopologicalGroup α
s t✝ : Set α
hs : IsOpen s
t : Set α
⊢ s / closure t = s / t
Theorem: MeasureTheory.measure_biUnion_toMeasurable
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: haveI := hc.toEncodable
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.37295
δ : Type ?u.37298
ι : Type ?u.37301
R : Type ?u.37304
R' : Type ?u.37307
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
I : Set β
hc : Set.Countable I
s : β → Set α
⊢ ↑↑μ (⋃ (b : β) (_ : b ∈ I), toMeasurable μ (s b)) = ↑↑μ (⋃ (b : β) (_ : b ∈ I), s b)

tactic: simp only [biUnion_eq_iUnion, measure_iUnion_toMeasurable]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.37295
δ : Type ?u.37298
ι : Type ?u.37301
R : Type ?u.37304
R' : Type ?u.37307
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
I : Set β
hc : Set.Countable I
s : β → Set α
this : Encodable ↑I
⊢ ↑↑μ (⋃ (b : β) (_ : b ∈ I), toMeasurable μ (s b)) = ↑↑μ (⋃ (b : β) (_ : b ∈ I), s b)
Theorem: EuclideanGeometry.angle_lt_pi_div_two_of_angle_eq_pi_div_two
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/RightAngle.lean

tactic: rw [angle, ← inner_eq_zero_iff_angle_eq_pi_div_two, real_inner_comm, ← neg_eq_zero, ←
  inner_neg_left, neg_vsub_eq_vsub_rev] at h
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p₁ p₂ p₃ : P
h : ∠ p₁ p₂ p₃ = π / 2
h0 : p₃ ≠ p₂
⊢ ∠ p₂ p₃ p₁ < π / 2

tactic: rw [ne_comm, ← @vsub_ne_zero V] at h0
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p₁ p₂ p₃ : P
h : inner (p₂ -ᵥ p₃) (p₁ -ᵥ p₂) = 0
h0 : p₃ ≠ p₂
⊢ ∠ p₂ p₃ p₁ < π / 2

tactic: rw [angle, ← vsub_add_vsub_cancel p₁ p₂ p₃, add_comm]
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p₁ p₂ p₃ : P
h : inner (p₂ -ᵥ p₃) (p₁ -ᵥ p₂) = 0
h0 : p₂ -ᵥ p₃ ≠ 0
⊢ ∠ p₂ p₃ p₁ < π / 2

tactic: exact angle_add_lt_pi_div_two_of_inner_eq_zero h h0
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p₁ p₂ p₃ : P
h : inner (p₂ -ᵥ p₃) (p₁ -ᵥ p₂) = 0
h0 : p₂ -ᵥ p₃ ≠ 0
⊢ InnerProductGeometry.angle (p₂ -ᵥ p₃) (p₂ -ᵥ p₃ + (p₁ -ᵥ p₂)) < π / 2
Theorem: tendsto_comp_of_locally_uniform_limit
File: Mathlib/Topology/UniformSpace/UniformConvergence.lean

tactic: rw [← continuousWithinAt_univ] at h
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝¹ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
inst✝ : TopologicalSpace α
h : ContinuousAt f x
hg : Tendsto g p (𝓝 x)
hunif : ∀ (u : Set (β × β)), u ∈ 𝓤 β → ∃ t, t ∈ 𝓝 x ∧ ∀ᶠ (n : ι) in p, ∀ (y : α), y ∈ t → (f y, F n y) ∈ u
⊢ Tendsto (fun n => F n (g n)) p (𝓝 (f x))

tactic: rw [← nhdsWithin_univ] at hunif hg
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝¹ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
inst✝ : TopologicalSpace α
h : ContinuousWithinAt f univ x
hg : Tendsto g p (𝓝 x)
hunif : ∀ (u : Set (β × β)), u ∈ 𝓤 β → ∃ t, t ∈ 𝓝 x ∧ ∀ᶠ (n : ι) in p, ∀ (y : α), y ∈ t → (f y, F n y) ∈ u
⊢ Tendsto (fun n => F n (g n)) p (𝓝 (f x))

tactic: exact tendsto_comp_of_locally_uniform_limit_within h hg hunif
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝¹ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
inst✝ : TopologicalSpace α
h : ContinuousWithinAt f univ x
hg : Tendsto g p (𝓝[univ] x)
hunif : ∀ (u : Set (β × β)), u ∈ 𝓤 β → ∃ t, t ∈ 𝓝[univ] x ∧ ∀ᶠ (n : ι) in p, ∀ (y : α), y ∈ t → (f y, F n y) ∈ u
⊢ Tendsto (fun n => F n (g n)) p (𝓝 (f x))
Theorem: CompleteLattice.Independent.dfinsupp_sumAddHom_injective
File: Mathlib/LinearAlgebra/Dfinsupp.lean

tactic: rw [← independent_map_orderIso_iff (AddSubgroup.toIntSubmodule : AddSubgroup N ≃o _)] at h
state_before: ι : Type u_2
R : Type ?u.683548
S : Type ?u.683551
M : ι → Type ?u.683556
N : Type u_1
dec_ι : DecidableEq ι
inst✝² : Ring R
inst✝¹ : AddCommGroup N
inst✝ : Module R N
p : ι → AddSubgroup N
h : Independent p
⊢ Function.Injective ↑(sumAddHom fun i => AddSubgroup.subtype (p i))

tactic: exact h.dfinsupp_lsum_injective
state_before: ι : Type u_2
R : Type ?u.683548
S : Type ?u.683551
M : ι → Type ?u.683556
N : Type u_1
dec_ι : DecidableEq ι
inst✝² : Ring R
inst✝¹ : AddCommGroup N
inst✝ : Module R N
p : ι → AddSubgroup N
h : Independent (↑AddSubgroup.toIntSubmodule ∘ p)
⊢ Function.Injective ↑(sumAddHom fun i => AddSubgroup.subtype (p i))
Theorem: FiniteField.exists_nonsquare
File: Mathlib/FieldTheory/Finite/Basic.lean

tactic: let sq : F → F := fun x => x ^ 2
state_before: K : Type ?u.1094008
R : Type ?u.1094011
F : Type u_1
inst✝¹ : Field F
inst✝ : Finite F
hF : ringChar F ≠ 2
⊢ ∃ a, ¬IsSquare a

tactic: have h : ¬Function.Injective sq := by
  simp only [Function.Injective, not_forall, exists_prop]
  refine' ⟨-1, 1, _, Ring.neg_one_ne_one_of_char_ne_two hF⟩
  simp only [one_pow, neg_one_sq]
state_before: K : Type ?u.1094008
R : Type ?u.1094011
F : Type u_1
inst✝¹ : Field F
inst✝ : Finite F
hF : ringChar F ≠ 2
sq : F → F := fun x => x ^ 2
⊢ ∃ a, ¬IsSquare a

tactic: rw [Finite.injective_iff_surjective] at h
state_before: K : Type ?u.1094008
R : Type ?u.1094011
F : Type u_1
inst✝¹ : Field F
inst✝ : Finite F
hF : ringChar F ≠ 2
sq : F → F := fun x => x ^ 2
h : ¬Function.Injective sq
⊢ ∃ a, ¬IsSquare a

tactic: simp_rw [IsSquare, ← pow_two, @eq_comm _ _ (_ ^ 2)]
state_before: K : Type ?u.1094008
R : Type ?u.1094011
F : Type u_1
inst✝¹ : Field F
inst✝ : Finite F
hF : ringChar F ≠ 2
sq : F → F := fun x => x ^ 2
h : ¬Function.Surjective sq
⊢ ∃ a, ¬IsSquare a

tactic: unfold Function.Surjective at h
state_before: K : Type ?u.1094008
R : Type ?u.1094011
F : Type u_1
inst✝¹ : Field F
inst✝ : Finite F
hF : ringChar F ≠ 2
sq : F → F := fun x => x ^ 2
h : ¬Function.Surjective sq
⊢ ∃ a, ¬∃ r, r ^ 2 = a

tactic: push_neg  at h⊢
state_before: K : Type ?u.1094008
R : Type ?u.1094011
F : Type u_1
inst✝¹ : Field F
inst✝ : Finite F
hF : ringChar F ≠ 2
sq : F → F := fun x => x ^ 2
h : ¬∀ (b : F), ∃ a, sq a = b
⊢ ∃ a, ¬∃ r, r ^ 2 = a

tactic: exact h
state_before: K : Type ?u.1094008
R : Type ?u.1094011
F : Type u_1
inst✝¹ : Field F
inst✝ : Finite F
hF : ringChar F ≠ 2
sq : F → F := fun x => x ^ 2
h : ∃ b, ∀ (a : F), (fun x => x ^ 2) a ≠ b
⊢ ∃ a, ∀ (r : F), r ^ 2 ≠ a

tactic: simp only [Function.Injective, not_forall, exists_prop]
state_before: K : Type ?u.1094008
R : Type ?u.1094011
F : Type u_1
inst✝¹ : Field F
inst✝ : Finite F
hF : ringChar F ≠ 2
sq : F → F := fun x => x ^ 2
⊢ ¬Function.Injective sq

tactic: refine' ⟨-1, 1, _, Ring.neg_one_ne_one_of_char_ne_two hF⟩
state_before: K : Type ?u.1094008
R : Type ?u.1094011
F : Type u_1
inst✝¹ : Field F
inst✝ : Finite F
hF : ringChar F ≠ 2
sq : F → F := fun x => x ^ 2
⊢ ∃ x x_1, x ^ 2 = x_1 ^ 2 ∧ ¬x = x_1

tactic: simp only [one_pow, neg_one_sq]
state_before: K : Type ?u.1094008
R : Type ?u.1094011
F : Type u_1
inst✝¹ : Field F
inst✝ : Finite F
hF : ringChar F ≠ 2
sq : F → F := fun x => x ^ 2
⊢ (-1) ^ 2 = 1 ^ 2
Theorem: continuousMul_of_comm_of_nhds_one
File: Mathlib/Topology/Algebra/Monoid.lean

tactic: apply ContinuousMul.of_nhds_one hmul hleft
state_before: ι : Type ?u.60957
α : Type ?u.60960
X : Type ?u.60963
M✝ : Type ?u.60966
N : Type ?u.60969
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace M✝
inst✝³ : Mul M✝
inst✝² : ContinuousMul M✝
M : Type u
inst✝¹ : CommMonoid M
inst✝ : TopologicalSpace M
hmul : Tendsto (uncurry fun x x_1 => x * x_1) (𝓝 1 ×ˢ 𝓝 1) (𝓝 1)
hleft : ∀ (x₀ : M), 𝓝 x₀ = map (fun x => x₀ * x) (𝓝 1)
⊢ ContinuousMul M

tactic: intro x₀
state_before: ι : Type ?u.60957
α : Type ?u.60960
X : Type ?u.60963
M✝ : Type ?u.60966
N : Type ?u.60969
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace M✝
inst✝³ : Mul M✝
inst✝² : ContinuousMul M✝
M : Type u
inst✝¹ : CommMonoid M
inst✝ : TopologicalSpace M
hmul : Tendsto (uncurry fun x x_1 => x * x_1) (𝓝 1 ×ˢ 𝓝 1) (𝓝 1)
hleft : ∀ (x₀ : M), 𝓝 x₀ = map (fun x => x₀ * x) (𝓝 1)
⊢ ∀ (x₀ : M), 𝓝 x₀ = map (fun x => x * x₀) (𝓝 1)

tactic: simp_rw [mul_comm, hleft x₀]
state_before: ι : Type ?u.60957
α : Type ?u.60960
X : Type ?u.60963
M✝ : Type ?u.60966
N : Type ?u.60969
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace M✝
inst✝³ : Mul M✝
inst✝² : ContinuousMul M✝
M : Type u
inst✝¹ : CommMonoid M
inst✝ : TopologicalSpace M
hmul : Tendsto (uncurry fun x x_1 => x * x_1) (𝓝 1 ×ˢ 𝓝 1) (𝓝 1)
hleft : ∀ (x₀ : M), 𝓝 x₀ = map (fun x => x₀ * x) (𝓝 1)
x₀ : M
⊢ 𝓝 x₀ = map (fun x => x * x₀) (𝓝 1)
Theorem: Polynomial.divX_add
File: Mathlib/Data/Polynomial/Inductions.lean

tactic: simp
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Semiring R
p q : R[X]
⊢ ∀ (n : ℕ), coeff (divX (p + q)) n = coeff (divX p + divX q) n
Theorem: AlgebraicTopology.DoldKan.map_Q
File: Mathlib/AlgebraicTopology/DoldKan/Projections.lean

tactic: rw [← add_right_inj (G.map ((P q : K[X] ⟶ _).f n)), ← G.map_add, map_P G X q n, P_add_Q_f,
  P_add_Q_f]
state_before: C : Type u_4
inst✝⁴ : Category C
inst✝³ : Preadditive C
X✝ : SimplicialObject C
D : Type u_1
inst✝² : Category D
inst✝¹ : Preadditive D
G : C ⥤ D
inst✝ : Functor.Additive G
X : SimplicialObject C
q n : ℕ
⊢ G.map (HomologicalComplex.Hom.f (Q q) n) = HomologicalComplex.Hom.f (Q q) n

tactic: apply G.map_id
state_before: C : Type u_4
inst✝⁴ : Category C
inst✝³ : Preadditive C
X✝ : SimplicialObject C
D : Type u_1
inst✝² : Category D
inst✝¹ : Preadditive D
G : C ⥤ D
inst✝ : Functor.Additive G
X : SimplicialObject C
q n : ℕ
⊢ G.map (𝟙 (X.obj [n].op)) = 𝟙 ((((whiskering C D).obj G).obj X).obj [n].op)
Theorem: MeasureTheory.snorm_le_snorm_of_exponent_le
File: Mathlib/MeasureTheory/Function/LpSeminorm.lean

tactic: simp [measure_univ]
state_before: α : Type u_1
E : Type u_2
F : Type ?u.4186528
G : Type ?u.4186531
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q✝ : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
p q : ℝ≥0∞
hpq : p ≤ q
inst✝ : IsProbabilityMeasure μ
f : α → E
hf : AEStronglyMeasurable f μ
⊢ snorm f q μ * ↑↑μ Set.univ ^ (1 / ENNReal.toReal p - 1 / ENNReal.toReal q) = snorm f q μ
Theorem: CategoryTheory.AbelianOfAdjunction.hasCokernels
File: Mathlib/CategoryTheory/Abelian/Transfer.lean

tactic: have : PreservesColimits G := adj.leftAdjointPreservesColimits
state_before: C : Type u₁
inst✝⁴ : Category C
inst✝³ : Preadditive C
D : Type u₂
inst✝² : Category D
inst✝¹ : Abelian D
F : C ⥤ D
G : D ⥤ C
inst✝ : Functor.PreservesZeroMorphisms G
i : F ⋙ G ≅ 𝟭 C
adj : G ⊣ F
X✝ Y✝ : C
f : X✝ ⟶ Y✝
⊢ HasCokernel f

tactic: have := NatIso.naturality_1 i f
state_before: C : Type u₁
inst✝⁴ : Category C
inst✝³ : Preadditive C
D : Type u₂
inst✝² : Category D
inst✝¹ : Abelian D
F : C ⥤ D
G : D ⥤ C
inst✝ : Functor.PreservesZeroMorphisms G
i : F ⋙ G ≅ 𝟭 C
adj : G ⊣ F
X✝ Y✝ : C
f : X✝ ⟶ Y✝
this : PreservesColimits G
⊢ HasCokernel f

tactic: simp at this
state_before: C : Type u₁
inst✝⁴ : Category C
inst✝³ : Preadditive C
D : Type u₂
inst✝² : Category D
inst✝¹ : Abelian D
F : C ⥤ D
G : D ⥤ C
inst✝ : Functor.PreservesZeroMorphisms G
i : F ⋙ G ≅ 𝟭 C
adj : G ⊣ F
X✝ Y✝ : C
f : X✝ ⟶ Y✝
this✝ : PreservesColimits G
this : i.inv.app X✝ ≫ (F ⋙ G).map f ≫ i.hom.app Y✝ = (𝟭 C).map f
⊢ HasCokernel f

tactic: rw [← this]
state_before: C : Type u₁
inst✝⁴ : Category C
inst✝³ : Preadditive C
D : Type u₂
inst✝² : Category D
inst✝¹ : Abelian D
F : C ⥤ D
G : D ⥤ C
inst✝ : Functor.PreservesZeroMorphisms G
i : F ⋙ G ≅ 𝟭 C
adj : G ⊣ F
X✝ Y✝ : C
f : X✝ ⟶ Y✝
this✝ : PreservesColimits G
this : i.inv.app X✝ ≫ G.map (F.map f) ≫ i.hom.app Y✝ = f
⊢ HasCokernel f

tactic: haveI : HasCokernel (G.map (F.map f) ≫ i.hom.app _) := Limits.hasCokernel_comp_iso _ _
state_before: C : Type u₁
inst✝⁴ : Category C
inst✝³ : Preadditive C
D : Type u₂
inst✝² : Category D
inst✝¹ : Abelian D
F : C ⥤ D
G : D ⥤ C
inst✝ : Functor.PreservesZeroMorphisms G
i : F ⋙ G ≅ 𝟭 C
adj : G ⊣ F
X✝ Y✝ : C
f : X✝ ⟶ Y✝
this✝ : PreservesColimits G
this : i.inv.app X✝ ≫ G.map (F.map f) ≫ i.hom.app Y✝ = f
⊢ HasCokernel (i.inv.app X✝ ≫ G.map (F.map f) ≫ i.hom.app Y✝)

tactic: apply Limits.hasCokernel_epi_comp
state_before: C : Type u₁
inst✝⁴ : Category C
inst✝³ : Preadditive C
D : Type u₂
inst✝² : Category D
inst✝¹ : Abelian D
F : C ⥤ D
G : D ⥤ C
inst✝ : Functor.PreservesZeroMorphisms G
i : F ⋙ G ≅ 𝟭 C
adj : G ⊣ F
X✝ Y✝ : C
f : X✝ ⟶ Y✝
this✝¹ : PreservesColimits G
this✝ : i.inv.app X✝ ≫ G.map (F.map f) ≫ i.hom.app Y✝ = f
this : HasCokernel (G.map (F.map f) ≫ i.hom.app Y✝)
⊢ HasCokernel (i.inv.app X✝ ≫ G.map (F.map f) ≫ i.hom.app Y✝)
Theorem: nhdsAdjoint_nhds
File: Mathlib/Topology/Order.lean

tactic: letI := nhdsAdjoint a f
state_before: α✝ : Type u
β : Type v
α : Type u_1
a : α
f : Filter α
⊢ 𝓝 a = pure a ⊔ f

tactic: ext U
state_before: α✝ : Type u
β : Type v
α : Type u_1
a : α
f : Filter α
this : TopologicalSpace α := nhdsAdjoint a f
⊢ 𝓝 a = pure a ⊔ f

tactic: rw [mem_nhds_iff]
state_before: case a
α✝ : Type u
β : Type v
α : Type u_1
a : α
f : Filter α
this : TopologicalSpace α := nhdsAdjoint a f
U : Set α
⊢ U ∈ 𝓝 a ↔ U ∈ pure a ⊔ f

tactic: constructor
state_before: case a
α✝ : Type u
β : Type v
α : Type u_1
a : α
f : Filter α
this : TopologicalSpace α := nhdsAdjoint a f
U : Set α
⊢ (∃ t, t ⊆ U ∧ IsOpen t ∧ a ∈ t) ↔ U ∈ pure a ⊔ f

tactic: rintro ⟨t, htU, ht, hat⟩
state_before: case a.mp
α✝ : Type u
β : Type v
α : Type u_1
a : α
f : Filter α
this : TopologicalSpace α := nhdsAdjoint a f
U : Set α
⊢ (∃ t, t ⊆ U ∧ IsOpen t ∧ a ∈ t) → U ∈ pure a ⊔ f

tactic: exact ⟨htU hat, mem_of_superset (ht hat) htU⟩
state_before: case a.mp.intro.intro.intro
α✝ : Type u
β : Type v
α : Type u_1
a : α
f : Filter α
this : TopologicalSpace α := nhdsAdjoint a f
U t : Set α
htU : t ⊆ U
ht : IsOpen t
hat : a ∈ t
⊢ U ∈ pure a ⊔ f

tactic: rintro ⟨haU, hU⟩
state_before: case a.mpr
α✝ : Type u
β : Type v
α : Type u_1
a : α
f : Filter α
this : TopologicalSpace α := nhdsAdjoint a f
U : Set α
⊢ U ∈ pure a ⊔ f → ∃ t, t ⊆ U ∧ IsOpen t ∧ a ∈ t

tactic: exact ⟨U, Subset.rfl, fun _ => hU, haU⟩
state_before: case a.mpr.intro
α✝ : Type u
β : Type v
α : Type u_1
a : α
f : Filter α
this : TopologicalSpace α := nhdsAdjoint a f
U : Set α
haU : U ∈ (pure a).sets
hU : U ∈ f.sets
⊢ ∃ t, t ⊆ U ∧ IsOpen t ∧ a ∈ t
Theorem: List.mem_takeWhile_imp
File: Mathlib/Data/List/Basic.lean

tactic: cases hp : p hd
state_before: case cons
ι : Type ?u.414998
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Bool
l : List α
x hd : α
tl : List α
IH : x ∈ takeWhile p tl → p x = true
hx :
  x ∈
    match p hd with
    | true => hd :: takeWhile p tl
    | false => []
⊢ p x = true

tactic: simp [hp] at hx
state_before: case cons.false
ι : Type ?u.414998
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Bool
l : List α
x hd : α
tl : List α
IH : x ∈ takeWhile p tl → p x = true
hx :
  x ∈
    match p hd with
    | true => hd :: takeWhile p tl
    | false => []
hp : p hd = false
⊢ p x = true

tactic: rw [hp, mem_cons] at hx
state_before: case cons.true
ι : Type ?u.414998
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Bool
l : List α
x hd : α
tl : List α
IH : x ∈ takeWhile p tl → p x = true
hx :
  x ∈
    match p hd with
    | true => hd :: takeWhile p tl
    | false => []
hp : p hd = true
⊢ p x = true

tactic: rcases hx with (rfl | hx)
state_before: case cons.true
ι : Type ?u.414998
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Bool
l : List α
x hd : α
tl : List α
IH : x ∈ takeWhile p tl → p x = true
hx : x = hd ∨ x ∈ takeWhile p tl
hp : p hd = true
⊢ p x = true

tactic: exact hp
state_before: case cons.true.inl
ι : Type ?u.414998
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Bool
l : List α
x : α
tl : List α
IH : x ∈ takeWhile p tl → p x = true
hp : p x = true
⊢ p x = true

tactic: exact IH hx
state_before: case cons.true.inr
ι : Type ?u.414998
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Bool
l : List α
x hd : α
tl : List α
IH : x ∈ takeWhile p tl → p x = true
hp : p hd = true
hx : x ∈ takeWhile p tl
⊢ p x = true
Theorem: PGame.neg_fuzzy_zero_iff
File: Mathlib/SetTheory/Game/PGame.lean

tactic: rw [neg_fuzzy_iff, neg_zero]
state_before: x : PGame
⊢ -x ‖ 0 ↔ x ‖ 0