tasksource/leandojo huggingface dataset:
Theorem: Finset.prod_comp
File: Mathlib/Algebra/BigOperators/Basic.lean

tactic: simp
state_before: ι : Type ?u.722181
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a : α
f✝ g✝ : α → β
inst✝¹ : CommMonoid β
inst✝ : DecidableEq γ
f : γ → β
g : α → γ
⊢ ∀ (a : α) (ha : a ∈ s),
    (fun a _ha => { fst := g a, snd := a }) a ha ∈ Finset.sigma (image g s) fun b => filter (fun a => g a = b) s

tactic: tauto
state_before: ι : Type ?u.722181
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a : α
f✝ g✝ : α → β
inst✝¹ : CommMonoid β
inst✝ : DecidableEq γ
f : γ → β
g : α → γ
⊢ ∀ (a : α), a ∈ s → (∃ a_1, a_1 ∈ s ∧ g a_1 = g a) ∧ a ∈ s

tactic: simp
state_before: ι : Type ?u.722181
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a : α
f✝ g✝ : α → β
inst✝¹ : CommMonoid β
inst✝ : DecidableEq γ
f : γ → β
g : α → γ
⊢ ∀ (a₁ a₂ : α) (ha₁ : a₁ ∈ s) (ha₂ : a₂ ∈ s),
    (fun a _ha => { fst := g a, snd := a }) a₁ ha₁ = (fun a _ha => { fst := g a, snd := a }) a₂ ha₂ → a₁ = a₂

tactic: rintro ⟨b_fst, b_snd⟩ H
state_before: ι : Type ?u.722181
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a : α
f✝ g✝ : α → β
inst✝¹ : CommMonoid β
inst✝ : DecidableEq γ
f : γ → β
g : α → γ
⊢ ∀ (b : (_ : γ) × α),
    (b ∈ Finset.sigma (image g s) fun b => filter (fun a => g a = b) s) →
      ∃ a ha, b = (fun a _ha => { fst := g a, snd := a }) a ha

tactic: simp only [mem_image, exists_prop, mem_filter, mem_sigma, decide_eq_true_eq] at H
state_before: case mk
ι : Type ?u.722181
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a : α
f✝ g✝ : α → β
inst✝¹ : CommMonoid β
inst✝ : DecidableEq γ
f : γ → β
g : α → γ
b_fst : γ
b_snd : α
H : { fst := b_fst, snd := b_snd } ∈ Finset.sigma (image g s) fun b => filter (fun a => g a = b) s
⊢ ∃ a ha, { fst := b_fst, snd := b_snd } = (fun a _ha => { fst := g a, snd := a }) a ha

tactic: tauto
state_before: case mk
ι : Type ?u.722181
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a : α
f✝ g✝ : α → β
inst✝¹ : CommMonoid β
inst✝ : DecidableEq γ
f : γ → β
g : α → γ
b_fst : γ
b_snd : α
H : (∃ a, a ∈ s ∧ g a = b_fst) ∧ b_snd ∈ s ∧ g b_snd = b_fst
⊢ ∃ a ha, { fst := b_fst, snd := b_snd } = (fun a _ha => { fst := g a, snd := a }) a ha

tactic: simp (config := { contextual := true })
state_before: ι : Type ?u.722181
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a : α
f✝ g✝ : α → β
inst✝¹ : CommMonoid β
inst✝ : DecidableEq γ
f : γ → β
g : α → γ
b : γ
_hb : b ∈ image g s
⊢ ∀ (x : α), x ∈ filter (fun a => g a = b) s → f (g x) = f b
Theorem: LieAlgebra.Orthogonal.pd_inv
File: Mathlib/Algebra/Lie/Classical.lean

tactic: rw [PD, Matrix.fromBlocks_transpose, Matrix.fromBlocks_smul, Matrix.mul_eq_mul,
  Matrix.fromBlocks_multiply]
state_before: n : Type ?u.121810
p : Type ?u.121813
q : Type ?u.121816
l : Type u_1
R : Type u₂
inst✝⁸ : DecidableEq n
inst✝⁷ : DecidableEq p
inst✝⁶ : DecidableEq q
inst✝⁵ : DecidableEq l
inst✝⁴ : CommRing R
inst✝³ : Fintype p
inst✝² : Fintype q
inst✝¹ : Fintype l
inst✝ : Invertible 2
⊢ PD l R * ⅟2 • (PD l R)ᵀ = 1

tactic: simp
state_before: n : Type ?u.121810
p : Type ?u.121813
q : Type ?u.121816
l : Type u_1
R : Type u₂
inst✝⁸ : DecidableEq n
inst✝⁷ : DecidableEq p
inst✝⁶ : DecidableEq q
inst✝⁵ : DecidableEq l
inst✝⁴ : CommRing R
inst✝³ : Fintype p
inst✝² : Fintype q
inst✝¹ : Fintype l
inst✝ : Invertible 2
⊢ fromBlocks (1 ⬝ (⅟2 • 1ᵀ) + (-1) ⬝ (⅟2 • (-1)ᵀ)) (1 ⬝ (⅟2 • 1ᵀ) + (-1) ⬝ (⅟2 • 1ᵀ)) (1 ⬝ (⅟2 • 1ᵀ) + 1 ⬝ (⅟2 • (-1)ᵀ))
      (1 ⬝ (⅟2 • 1ᵀ) + 1 ⬝ (⅟2 • 1ᵀ)) =
    1
Theorem: Finsupp.card_support_eq_one'
File: Mathlib/Data/Finsupp/Defs.lean

tactic: simp only [card_eq_one, support_eq_singleton']
state_before: α : Type u_1
β : Type ?u.135476
γ : Type ?u.135479
ι : Type ?u.135482
M : Type u_2
M' : Type ?u.135488
N : Type ?u.135491
P : Type ?u.135494
G : Type ?u.135497
H : Type ?u.135500
R : Type ?u.135503
S : Type ?u.135506
inst✝ : Zero M
a a' : α
b : M
f : α →₀ M
⊢ card f.support = 1 ↔ ∃ a b x, f = single a b
Theorem: Finset.prod_map
File: Mathlib/Algebra/BigOperators/Basic.lean

tactic: rw [Finset.prod, Finset.map_val, Multiset.map_map]
state_before: ι : Type ?u.273965
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
e : α ↪ γ
f : γ → β
⊢ ∏ x in map e s, f x = ∏ x in s, f (↑e x)

tactic: rfl
state_before: ι : Type ?u.273965
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
e : α ↪ γ
f : γ → β
⊢ Multiset.prod (Multiset.map ((fun x => f x) ∘ ↑e) s.val) = ∏ x in s, f (↑e x)
Theorem: HahnSeries.support_add_subset
File: Mathlib/RingTheory/HahnSeries.lean

tactic: rw [mem_support, add_coeff] at ha
state_before: Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddMonoid R
x y : HahnSeries Γ R
a : Γ
ha : a ∈ support (x + y)
⊢ a ∈ support x ∪ support y

tactic: rw [Set.mem_union, mem_support, mem_support]
state_before: Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddMonoid R
x y : HahnSeries Γ R
a : Γ
ha : coeff x a + coeff y a ≠ 0
⊢ a ∈ support x ∪ support y

tactic: contrapose! ha
state_before: Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddMonoid R
x y : HahnSeries Γ R
a : Γ
ha : coeff x a + coeff y a ≠ 0
⊢ coeff x a ≠ 0 ∨ coeff y a ≠ 0

tactic: rw [ha.1, ha.2, add_zero]
state_before: Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddMonoid R
x y : HahnSeries Γ R
a : Γ
ha : coeff x a = 0 ∧ coeff y a = 0
⊢ coeff x a + coeff y a = 0
Theorem: LieIdeal.map_comap_le
File: Mathlib/Algebra/Lie/Submodule.lean

tactic: rw [map_le_iff_le_comap]
state_before: R : Type u
L : Type v
L' : Type w₂
M : Type w
M' : Type w₁
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : LieRing L'
inst✝⁸ : LieAlgebra R L'
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
f : L →ₗ⁅R⁆ L'
I I₂ : LieIdeal R L
J : LieIdeal R L'
⊢ map f (comap f J) ≤ J
Theorem: SemidirectProduct.lift_comp_inr
File: Mathlib/GroupTheory/SemidirectProduct.lean

tactic: ext
state_before: N : Type u_3
G : Type u_1
H : Type u_2
inst✝² : Group N
inst✝¹ : Group G
inst✝ : Group H
φ : G →* MulAut N
f₁ : N →* H
f₂ : G →* H
h :
  ∀ (g : G),
    MonoidHom.comp f₁ (MulEquiv.toMonoidHom (↑φ g)) = MonoidHom.comp (MulEquiv.toMonoidHom (↑MulAut.conj (↑f₂ g))) f₁
⊢ MonoidHom.comp (lift f₁ f₂ h) inr = f₂

tactic: simp
state_before: case h
N : Type u_3
G : Type u_1
H : Type u_2
inst✝² : Group N
inst✝¹ : Group G
inst✝ : Group H
φ : G →* MulAut N
f₁ : N →* H
f₂ : G →* H
h :
  ∀ (g : G),
    MonoidHom.comp f₁ (MulEquiv.toMonoidHom (↑φ g)) = MonoidHom.comp (MulEquiv.toMonoidHom (↑MulAut.conj (↑f₂ g))) f₁
x✝ : G
⊢ ↑(MonoidHom.comp (lift f₁ f₂ h) inr) x✝ = ↑f₂ x✝
Theorem: HasFPowerSeriesAt.add
File: Mathlib/Analysis/Analytic/Basic.lean

tactic: rcases (hf.eventually.and hg.eventually).exists with ⟨r, hr⟩
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type ?u.522525
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesAt f pf x
hg : HasFPowerSeriesAt g pg x
⊢ HasFPowerSeriesAt (f + g) (pf + pg) x

tactic: exact ⟨r, hr.1.add hr.2⟩
state_before: case intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type ?u.522525
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r✝ r' : ℝ≥0∞
hf : HasFPowerSeriesAt f pf x
hg : HasFPowerSeriesAt g pg x
r : ℝ≥0∞
hr : HasFPowerSeriesOnBall f pf x r ∧ HasFPowerSeriesOnBall g pg x r
⊢ HasFPowerSeriesAt (f + g) (pf + pg) x
Theorem: frontier_prod_univ_eq
File: Mathlib/Topology/Constructions.lean

tactic: simp [frontier_prod_eq]
state_before: α : Type u
β : Type v
γ : Type ?u.61421
δ : Type ?u.61424
ε : Type ?u.61427
ζ : Type ?u.61430
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
inst✝² : TopologicalSpace δ
inst✝¹ : TopologicalSpace ε
inst✝ : TopologicalSpace ζ
s : Set α
⊢ frontier (s ×ˢ univ) = frontier s ×ˢ univ
Theorem: MeasureTheory.isFiniteMeasure_withDensity_ofReal
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: refine' isFiniteMeasure_withDensity ((lintegral_mono fun x => _).trans_lt hfi).ne
state_before: α : Type u_1
β : Type ?u.734418
γ : Type ?u.734421
δ : Type ?u.734424
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → ℝ
hfi : HasFiniteIntegral f
⊢ IsFiniteMeasure (Measure.withDensity μ fun x => ENNReal.ofReal (f x))

tactic: exact Real.ofReal_le_ennnorm (f x)
state_before: α : Type u_1
β : Type ?u.734418
γ : Type ?u.734421
δ : Type ?u.734424
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → ℝ
hfi : HasFiniteIntegral f
x : α
⊢ ENNReal.ofReal (f x) ≤ ↑‖f x‖₊
Theorem: Matrix.mul_mul_apply
File: Mathlib/Data/Matrix/Basic.lean

tactic: rw [Matrix.mul_assoc]
state_before: l : Type ?u.894994
m : Type ?u.894997
n : Type u_1
o : Type ?u.895003
m' : o → Type ?u.895008
n' : o → Type ?u.895013
R : Type ?u.895016
S : Type ?u.895019
α : Type v
β : Type w
γ : Type ?u.895026
inst✝¹ : NonUnitalSemiring α
inst✝ : Fintype n
A B C : Matrix n n α
i j : n
⊢ (A ⬝ B ⬝ C) i j = A i ⬝ᵥ mulVec B (Cᵀ j)

tactic: simp only [mul_apply, dotProduct, mulVec]
state_before: l : Type ?u.894994
m : Type ?u.894997
n : Type u_1
o : Type ?u.895003
m' : o → Type ?u.895008
n' : o → Type ?u.895013
R : Type ?u.895016
S : Type ?u.895019
α : Type v
β : Type w
γ : Type ?u.895026
inst✝¹ : NonUnitalSemiring α
inst✝ : Fintype n
A B C : Matrix n n α
i j : n
⊢ (A ⬝ (B ⬝ C)) i j = A i ⬝ᵥ mulVec B (Cᵀ j)

tactic: rfl
state_before: l : Type ?u.894994
m : Type ?u.894997
n : Type u_1
o : Type ?u.895003
m' : o → Type ?u.895008
n' : o → Type ?u.895013
R : Type ?u.895016
S : Type ?u.895019
α : Type v
β : Type w
γ : Type ?u.895026
inst✝¹ : NonUnitalSemiring α
inst✝ : Fintype n
A B C : Matrix n n α
i j : n
⊢ ∑ x : n, A i x * ∑ j_1 : n, B x j_1 * C j_1 j = ∑ x : n, A i x * ∑ x_1 : n, B x x_1 * Cᵀ j x_1
Theorem: Polynomial.eraseLead_support_card_lt
File: Mathlib/Data/Polynomial/EraseLead.lean

tactic: rw [eraseLead_support]
state_before: R : Type u_1
inst✝ : Semiring R
f : R[X]
h : f ≠ 0
⊢ card (support (eraseLead f)) < card (support f)

tactic: exact card_lt_card (erase_ssubset <| natDegree_mem_support_of_nonzero h)
state_before: R : Type u_1
inst✝ : Semiring R
f : R[X]
h : f ≠ 0
⊢ card (Finset.erase (support f) (natDegree f)) < card (support f)
Theorem: Submodule.prodEquivOfIsCompl_symm_apply_left
File: Mathlib/LinearAlgebra/Projection.lean

tactic: simp
state_before: R : Type u_2
inst✝⁹ : Ring R
E : Type u_1
inst✝⁸ : AddCommGroup E
inst✝⁷ : Module R E
F : Type ?u.80375
inst✝⁶ : AddCommGroup F
inst✝⁵ : Module R F
G : Type ?u.80891
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
p q : Submodule R E
S : Type ?u.81854
inst✝² : Semiring S
M : Type ?u.81860
inst✝¹ : AddCommMonoid M
inst✝ : Module S M
m : Submodule S M
h : IsCompl p q
x : { x // x ∈ p }
⊢ ↑x = ↑(prodEquivOfIsCompl p q h) (x, 0)
Theorem: Finset.sum_boole_mul
File: Mathlib/Algebra/BigOperators/Ring.lean

tactic: simp
state_before: α : Type u
β : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a✝ : α
b : β
f✝ g : α → β
inst✝¹ : NonAssocSemiring β
inst✝ : DecidableEq α
s : Finset α
f : α → β
a : α
⊢ ∑ x in s, (if a = x then 1 else 0) * f x = if a ∈ s then f a else 0
Theorem: Asymptotics.IsLittleO.symm
File: Mathlib/Analysis/Asymptotics/Asymptotics.lean

tactic: simpa only [neg_sub] using h.neg_left
state_before: α : Type u_1
β : Type ?u.233556
E : Type ?u.233559
F : Type u_3
G : Type ?u.233565
E' : Type u_2
F' : Type ?u.233571
G' : Type ?u.233574
E'' : Type ?u.233577
F'' : Type ?u.233580
G'' : Type ?u.233583
R : Type ?u.233586
R' : Type ?u.233589
𝕜 : Type ?u.233592
𝕜' : Type ?u.233595
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₁ f₂ f₃ : α → E'
h : (fun x => f₁ x - f₂ x) =o[l] g
⊢ (fun x => f₂ x - f₁ x) =o[l] g
Theorem: CategoryTheory.Limits.imageSubobject_arrow_comp
File: Mathlib/CategoryTheory/Subobject/Limits.lean

tactic: simp [factorThruImageSubobject, imageSubobject_arrow]
state_before: C : Type u
inst✝¹ : Category C
X Y Z : C
f : X ⟶ Y
inst✝ : HasImage f
⊢ factorThruImageSubobject f ≫ arrow (imageSubobject f) = f
Theorem: LinearIndependent.ne_zero
File: Mathlib/LinearAlgebra/LinearIndependent.lean

tactic: suffices (Finsupp.single i 1 : ι →₀ R) i = 0 by simpa
state_before: ι : Type u'
ι' : Type ?u.83214
R : Type u_1
K : Type ?u.83220
M : Type u_2
M' : Type ?u.83226
M'' : Type ?u.83229
V : Type u
V' : Type ?u.83234
v : ι → M
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : AddCommMonoid M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Nontrivial R
i : ι
hv : LinearIndependent R v
h : v i = 0
⊢ 1 = 0

tactic: rw [linearIndependent_iff.1 hv (Finsupp.single i 1)]
state_before: ι : Type u'
ι' : Type ?u.83214
R : Type u_1
K : Type ?u.83220
M : Type u_2
M' : Type ?u.83226
M'' : Type ?u.83229
V : Type u
V' : Type ?u.83234
v : ι → M
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : AddCommMonoid M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Nontrivial R
i : ι
hv : LinearIndependent R v
h : v i = 0
⊢ ↑(Finsupp.single i 1) i = 0

tactic: simpa
state_before: ι : Type u'
ι' : Type ?u.83214
R : Type u_1
K : Type ?u.83220
M : Type u_2
M' : Type ?u.83226
M'' : Type ?u.83229
V : Type u
V' : Type ?u.83234
v : ι → M
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : AddCommMonoid M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Nontrivial R
i : ι
hv : LinearIndependent R v
h : v i = 0
this : ↑(Finsupp.single i 1) i = 0
⊢ 1 = 0

tactic: simp
state_before: ι : Type u'
ι' : Type ?u.83214
R : Type u_1
K : Type ?u.83220
M : Type u_2
M' : Type ?u.83226
M'' : Type ?u.83229
V : Type u
V' : Type ?u.83234
v : ι → M
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : AddCommMonoid M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Nontrivial R
i : ι
hv : LinearIndependent R v
h : v i = 0
⊢ ↑0 i = 0

tactic: simp [h]
state_before: ι : Type u'
ι' : Type ?u.83214
R : Type u_1
K : Type ?u.83220
M : Type u_2
M' : Type ?u.83226
M'' : Type ?u.83229
V : Type u
V' : Type ?u.83234
v : ι → M
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : AddCommMonoid M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Nontrivial R
i : ι
hv : LinearIndependent R v
h : v i = 0
⊢ ↑(Finsupp.total ι M R v) (Finsupp.single i 1) = 0
Theorem: Metric.thickening_subset_cthickening
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: intro x hx
state_before: ι : Sort ?u.109089
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ✝ ε : ℝ
s t : Set α
x : α
δ : ℝ
E : Set α
⊢ thickening δ E ⊆ cthickening δ E

tactic: rw [thickening, mem_setOf_eq] at hx
state_before: ι : Sort ?u.109089
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ✝ ε : ℝ
s t : Set α
x✝ : α
δ : ℝ
E : Set α
x : α
hx : x ∈ thickening δ E
⊢ x ∈ cthickening δ E

tactic: exact hx.le
state_before: ι : Sort ?u.109089
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ✝ ε : ℝ
s t : Set α
x✝ : α
δ : ℝ
E : Set α
x : α
hx : infEdist x E < ENNReal.ofReal δ
⊢ x ∈ cthickening δ E
Theorem: nhdsSet_le_iff
File: Mathlib/Topology/Separation.lean

tactic: refine' ⟨_, fun h => monotone_nhdsSet h⟩
state_before: α : Type u
β : Type v
inst✝¹ : TopologicalSpace α
inst✝ : T1Space α
s t : Set α
⊢ 𝓝ˢ s ≤ 𝓝ˢ t ↔ s ⊆ t

tactic: simp_rw [Filter.le_def]
state_before: α : Type u
β : Type v
inst✝¹ : TopologicalSpace α
inst✝ : T1Space α
s t : Set α
⊢ 𝓝ˢ s ≤ 𝓝ˢ t → s ⊆ t

tactic: intro h x hx
state_before: α : Type u
β : Type v
inst✝¹ : TopologicalSpace α
inst✝ : T1Space α
s t : Set α
⊢ (∀ (x : Set α), x ∈ 𝓝ˢ t → x ∈ 𝓝ˢ s) → s ⊆ t

tactic: specialize h ({x}ᶜ)
state_before: α : Type u
β : Type v
inst✝¹ : TopologicalSpace α
inst✝ : T1Space α
s t : Set α
h : ∀ (x : Set α), x ∈ 𝓝ˢ t → x ∈ 𝓝ˢ s
x : α
hx : x ∈ s
⊢ x ∈ t

tactic: simp_rw [compl_singleton_mem_nhdsSet_iff] at h
state_before: α : Type u
β : Type v
inst✝¹ : TopologicalSpace α
inst✝ : T1Space α
s t : Set α
x : α
hx : x ∈ s
h : {x}ᶜ ∈ 𝓝ˢ t → {x}ᶜ ∈ 𝓝ˢ s
⊢ x ∈ t

tactic: by_contra hxt
state_before: α : Type u
β : Type v
inst✝¹ : TopologicalSpace α
inst✝ : T1Space α
s t : Set α
x : α
hx : x ∈ s
h : ¬x ∈ t → ¬x ∈ s
⊢ x ∈ t

tactic: exact h hxt hx
state_before: α : Type u
β : Type v
inst✝¹ : TopologicalSpace α
inst✝ : T1Space α
s t : Set α
x : α
hx : x ∈ s
h : ¬x ∈ t → ¬x ∈ s
hxt : ¬x ∈ t
⊢ False
Theorem: Ordinal.typein_top
File: Mathlib/SetTheory/Ordinal/Basic.lean

tactic: rcases f.down.1 h with ⟨b, rfl⟩
state_before: α✝ : Type ?u.72894
β✝ : Type ?u.72897
γ : Type ?u.72900
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t : γ → γ → Prop
α β : Type u_1
r : α → α → Prop
s : β → β → Prop
inst✝¹ : IsWellOrder α r
inst✝ : IsWellOrder β s
f : r ≺i s
x✝ : ↑{b | s b f.top}
a : β
h : a ∈ {b | s b f.top}
⊢ ∃ a_1,
    ↑(RelEmbedding.codRestrict {b | s b f.top}
            { toRelEmbedding := f.toRelEmbedding,
                init' :=
                  (_ :
                    ∀ (x : α) (x_1 : β),
                      s x_1 (↑f.toRelEmbedding x) → ∃ a', ↑f.toRelEmbedding a' = x_1) }.toRelEmbedding
            (_ : ∀ (a : α), s (↑f.toRelEmbedding a) f.top))
        a_1 =
      { val := a, property := h }

tactic: exact ⟨b, rfl⟩
state_before: case intro
α✝ : Type ?u.72894
β✝ : Type ?u.72897
γ : Type ?u.72900
r✝ : α✝ → α✝ → Prop
s✝ : β✝ → β✝ → Prop
t : γ → γ → Prop
α β : Type u_1
r : α → α → Prop
s : β → β → Prop
inst✝¹ : IsWellOrder α r
inst✝ : IsWellOrder β s
f : r ≺i s
x✝ : ↑{b | s b f.top}
b : α
h : ↑f.toRelEmbedding b ∈ {b | s b f.top}
⊢ ∃ a,
    ↑(RelEmbedding.codRestrict {b | s b f.top}
            { toRelEmbedding := f.toRelEmbedding,
                init' :=
                  (_ :
                    ∀ (x : α) (x_1 : β),
                      s x_1 (↑f.toRelEmbedding x) → ∃ a', ↑f.toRelEmbedding a' = x_1) }.toRelEmbedding
            (_ : ∀ (a : α), s (↑f.toRelEmbedding a) f.top))
        a =
      { val := ↑f.toRelEmbedding b, property := h }
Theorem: ite_mul_zero_left
File: Mathlib/Algebra/Ring/Defs.lean

tactic: by_cases h : P <;> simp [h]
state_before: α✝ : Type u
β : Type v
γ : Type w
R : Type x
α : Type u_1
inst✝¹ : MulZeroClass α
P : Prop
inst✝ : Decidable P
a b : α
⊢ (if P then a * b else 0) = (if P then a else 0) * b
Theorem: LocalHomeomorph.trans_of_set'
File: Mathlib/Topology/LocalHomeomorph.lean

tactic: rw [trans_ofSet, restr_source_inter]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.71931
δ : Type ?u.71934
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
e : LocalHomeomorph α β
e' : LocalHomeomorph β γ
s : Set β
hs : IsOpen s
⊢ LocalHomeomorph.trans e (ofSet s hs) = LocalHomeomorph.restr e (e.source ∩ ↑e ⁻¹' s)
Theorem: gauge_zero
File: Mathlib/Analysis/Convex/Gauge.lean

tactic: rw [gauge_def']
state_before: 𝕜 : Type ?u.20500
E : Type u_1
F : Type ?u.20506
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
a : ℝ
⊢ gauge s 0 = 0

tactic: by_cases h : (0 : E) ∈ s
state_before: 𝕜 : Type ?u.20500
E : Type u_1
F : Type ?u.20506
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
a : ℝ
⊢ sInf {r | r ∈ Ioi 0 ∧ r⁻¹ • 0 ∈ s} = 0

tactic: simp only [smul_zero, sep_true, h, csInf_Ioi]
state_before: case pos
𝕜 : Type ?u.20500
E : Type u_1
F : Type ?u.20506
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
a : ℝ
h : 0 ∈ s
⊢ sInf {r | r ∈ Ioi 0 ∧ r⁻¹ • 0 ∈ s} = 0

tactic: simp only [smul_zero, sep_false, h, Real.sInf_empty]
state_before: case neg
𝕜 : Type ?u.20500
E : Type u_1
F : Type ?u.20506
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
a : ℝ
h : ¬0 ∈ s
⊢ sInf {r | r ∈ Ioi 0 ∧ r⁻¹ • 0 ∈ s} = 0
Theorem: set_pi_mem_nhds
File: Mathlib/Topology/Constructions.lean

tactic: rw [pi_def, biInter_mem hi]
state_before: α : Type u
β : Type v
γ : Type ?u.284993
δ : Type ?u.284996
ε : Type ?u.284999
ζ : Type ?u.285002
ι : Type u_1
π : ι → Type u_2
κ : Type ?u.285013
inst✝¹ : TopologicalSpace α
inst✝ : (i : ι) → TopologicalSpace (π i)
f : α → (i : ι) → π i
i : Set ι
s : (a : ι) → Set (π a)
x : (a : ι) → π a
hi : Set.Finite i
hs : ∀ (a : ι), a ∈ i → s a ∈ 𝓝 (x a)
⊢ Set.pi i s ∈ 𝓝 x

tactic: exact fun a ha => (continuous_apply a).continuousAt (hs a ha)
state_before: α : Type u
β : Type v
γ : Type ?u.284993
δ : Type ?u.284996
ε : Type ?u.284999
ζ : Type ?u.285002
ι : Type u_1
π : ι → Type u_2
κ : Type ?u.285013
inst✝¹ : TopologicalSpace α
inst✝ : (i : ι) → TopologicalSpace (π i)
f : α → (i : ι) → π i
i : Set ι
s : (a : ι) → Set (π a)
x : (a : ι) → π a
hi : Set.Finite i
hs : ∀ (a : ι), a ∈ i → s a ∈ 𝓝 (x a)
⊢ ∀ (i_1 : ι), i_1 ∈ i → eval i_1 ⁻¹' s i_1 ∈ 𝓝 x
Theorem: List.dropLast_prefix
File: Mathlib/Data/List/Infix.lean

tactic: rw [dropLast, List.append_nil]
state_before: α : Type u_1
β : Type ?u.1312
l l₁ l₂ l₃ : List α
a b : α
m n : ℕ
⊢ dropLast [] ++ [] = []
Theorem: Ideal.to_quotient_square_range
File: Mathlib/RingTheory/Ideal/Cotangent.lean

tactic: trans LinearMap.range (I.cotangentToQuotientSquare.comp I.toCotangent)
state_before: R : Type u
S : Type v
S' : Type w
inst✝⁶ : CommRing R
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra S R
inst✝³ : CommSemiring S'
inst✝² : Algebra S' R
inst✝¹ : Algebra S S'
inst✝ : IsScalarTower S S' R
I : Ideal R
⊢ LinearMap.range (cotangentToQuotientSquare I) = Submodule.restrictScalars R (cotangentIdeal I)

tactic: rw [LinearMap.range_comp, I.toCotangent_range, Submodule.map_top]
state_before: R : Type u
S : Type v
S' : Type w
inst✝⁶ : CommRing R
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra S R
inst✝³ : CommSemiring S'
inst✝² : Algebra S' R
inst✝¹ : Algebra S S'
inst✝ : IsScalarTower S S' R
I : Ideal R
⊢ LinearMap.range (cotangentToQuotientSquare I) =
    LinearMap.range (LinearMap.comp (cotangentToQuotientSquare I) (toCotangent I))

tactic: rw [to_quotient_square_comp_toCotangent, LinearMap.range_comp, I.range_subtype]
state_before: R : Type u
S : Type v
S' : Type w
inst✝⁶ : CommRing R
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra S R
inst✝³ : CommSemiring S'
inst✝² : Algebra S' R
inst✝¹ : Algebra S S'
inst✝ : IsScalarTower S S' R
I : Ideal R
⊢ LinearMap.range (LinearMap.comp (cotangentToQuotientSquare I) (toCotangent I)) =
    Submodule.restrictScalars R (cotangentIdeal I)

tactic: ext
state_before: R : Type u
S : Type v
S' : Type w
inst✝⁶ : CommRing R
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra S R
inst✝³ : CommSemiring S'
inst✝² : Algebra S' R
inst✝¹ : Algebra S S'
inst✝ : IsScalarTower S S' R
I : Ideal R
⊢ Submodule.map (Submodule.mkQ (I ^ 2)) I = Submodule.restrictScalars R (cotangentIdeal I)

tactic: rfl
state_before: case h
R : Type u
S : Type v
S' : Type w
inst✝⁶ : CommRing R
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra S R
inst✝³ : CommSemiring S'
inst✝² : Algebra S' R
inst✝¹ : Algebra S S'
inst✝ : IsScalarTower S S' R
I : Ideal R
x✝ : R ⧸ I ^ 2
⊢ x✝ ∈ Submodule.map (Submodule.mkQ (I ^ 2)) I ↔ x✝ ∈ Submodule.restrictScalars R (cotangentIdeal I)
Theorem: Primrec.nat_iterate
File: Mathlib/Computability/Primrec.lean

tactic: induction f a <;> simp [*, -Function.iterate_succ, Function.iterate_succ']
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.109928
δ : Type ?u.109931
σ : Type ?u.109934
inst✝⁴ : Primcodable α
inst✝³ : Primcodable β
inst✝² : Primcodable γ
inst✝¹ : Primcodable δ
inst✝ : Primcodable σ
f : α → ℕ
g : α → β
h : α → β → β
hf : Primrec f
hg : Primrec g
hh : Primrec₂ h
a : α
⊢ Nat.rec (g a) (fun n IH => h a (n, IH).snd) (f a) = (h a^[f a]) (g a)