tasksource/leandojo huggingface dataset:
Theorem: NormedAddGroupHom.SurjectiveOnWith.mono
File: Mathlib/Analysis/Normed/Group/Hom.lean

tactic: intro k k_in
state_before: V : Type ?u.213712
V₁ : Type u_1
V₂ : Type u_2
V₃ : Type ?u.213721
inst✝³ : SeminormedAddCommGroup V
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f✝ g f : NormedAddGroupHom V₁ V₂
K : AddSubgroup V₂
C C' : ℝ
h : SurjectiveOnWith f K C
H : C ≤ C'
⊢ SurjectiveOnWith f K C'

tactic: rcases h k k_in with ⟨g, rfl, hg⟩
state_before: V : Type ?u.213712
V₁ : Type u_1
V₂ : Type u_2
V₃ : Type ?u.213721
inst✝³ : SeminormedAddCommGroup V
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f✝ g f : NormedAddGroupHom V₁ V₂
K : AddSubgroup V₂
C C' : ℝ
h : SurjectiveOnWith f K C
H : C ≤ C'
k : V₂
k_in : k ∈ K
⊢ ∃ g, ↑f g = k ∧ ‖g‖ ≤ C' * ‖k‖

tactic: use g, rfl
state_before: case intro.intro
V : Type ?u.213712
V₁ : Type u_1
V₂ : Type u_2
V₃ : Type ?u.213721
inst✝³ : SeminormedAddCommGroup V
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f✝ g✝ f : NormedAddGroupHom V₁ V₂
K : AddSubgroup V₂
C C' : ℝ
h : SurjectiveOnWith f K C
H : C ≤ C'
g : V₁
k_in : ↑f g ∈ K
hg : ‖g‖ ≤ C * ‖↑f g‖
⊢ ∃ g_1, ↑f g_1 = ↑f g ∧ ‖g_1‖ ≤ C' * ‖↑f g‖

tactic: by_cases Hg : ‖f g‖ = 0
state_before: case intro.intro
V : Type ?u.213712
V₁ : Type u_1
V₂ : Type u_2
V₃ : Type ?u.213721
inst✝³ : SeminormedAddCommGroup V
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f✝ g✝ f : NormedAddGroupHom V₁ V₂
K : AddSubgroup V₂
C C' : ℝ
h : SurjectiveOnWith f K C
H : C ≤ C'
g : V₁
k_in : ↑f g ∈ K
hg : ‖g‖ ≤ C * ‖↑f g‖
⊢ ‖g‖ ≤ C' * ‖↑f g‖

tactic: simpa [Hg] using hg
state_before: case pos
V : Type ?u.213712
V₁ : Type u_1
V₂ : Type u_2
V₃ : Type ?u.213721
inst✝³ : SeminormedAddCommGroup V
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f✝ g✝ f : NormedAddGroupHom V₁ V₂
K : AddSubgroup V₂
C C' : ℝ
h : SurjectiveOnWith f K C
H : C ≤ C'
g : V₁
k_in : ↑f g ∈ K
hg : ‖g‖ ≤ C * ‖↑f g‖
Hg : ‖↑f g‖ = 0
⊢ ‖g‖ ≤ C' * ‖↑f g‖

tactic: exact hg.trans (by gcongr)
state_before: case neg
V : Type ?u.213712
V₁ : Type u_1
V₂ : Type u_2
V₃ : Type ?u.213721
inst✝³ : SeminormedAddCommGroup V
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f✝ g✝ f : NormedAddGroupHom V₁ V₂
K : AddSubgroup V₂
C C' : ℝ
h : SurjectiveOnWith f K C
H : C ≤ C'
g : V₁
k_in : ↑f g ∈ K
hg : ‖g‖ ≤ C * ‖↑f g‖
Hg : ¬‖↑f g‖ = 0
⊢ ‖g‖ ≤ C' * ‖↑f g‖

tactic: gcongr
state_before: V : Type ?u.213712
V₁ : Type u_1
V₂ : Type u_2
V₃ : Type ?u.213721
inst✝³ : SeminormedAddCommGroup V
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f✝ g✝ f : NormedAddGroupHom V₁ V₂
K : AddSubgroup V₂
C C' : ℝ
h : SurjectiveOnWith f K C
H : C ≤ C'
g : V₁
k_in : ↑f g ∈ K
hg : ‖g‖ ≤ C * ‖↑f g‖
Hg : ¬‖↑f g‖ = 0
⊢ C * ‖↑f g‖ ≤ C' * ‖↑f g‖
Theorem: ENNReal.toNNReal_pos_iff
File: Mathlib/Data/Real/ENNReal.lean

tactic: induction a using recTopCoe <;> simp
state_before: α : Type ?u.802891
β : Type ?u.802894
a b c d : ℝ≥0∞
r p q : ℝ≥0
⊢ 0 < ENNReal.toNNReal a ↔ 0 < a ∧ a < ⊤
Theorem: CategoryTheory.isSubterminal_of_mono_terminal_from
File: Mathlib/CategoryTheory/Subterminal.lean

tactic: rw [← cancel_mono (terminal.from A)]
state_before: C : Type u₁
inst✝² : Category C
A : C
inst✝¹ : HasTerminal C
inst✝ : Mono (terminal.from A)
Z : C
f g : Z ⟶ A
⊢ f = g

tactic: apply Subsingleton.elim
state_before: C : Type u₁
inst✝² : Category C
A : C
inst✝¹ : HasTerminal C
inst✝ : Mono (terminal.from A)
Z : C
f g : Z ⟶ A
⊢ f ≫ terminal.from A = g ≫ terminal.from A
Theorem: Nat.exists_strictMono'
File: Mathlib/Order/Monotone/Basic.lean

tactic: choose g hg using fun x : α ↦ exists_gt x
state_before: ι : Type ?u.41282
α : Type u
β : Type v
γ : Type w
δ : Type ?u.41291
π : ι → Type ?u.41296
r : α → α → Prop
inst✝¹ : Preorder α
inst✝ : NoMaxOrder α
a : α
⊢ ∃ f, StrictMono f ∧ f 0 = a

tactic: exact ⟨fun n ↦ Nat.recOn n a fun _ ↦ g, strictMono_nat_of_lt_succ fun n ↦ hg _, rfl⟩
state_before: ι : Type ?u.41282
α : Type u
β : Type v
γ : Type w
δ : Type ?u.41291
π : ι → Type ?u.41296
r : α → α → Prop
inst✝¹ : Preorder α
inst✝ : NoMaxOrder α
a : α
g : α → α
hg : ∀ (x : α), x < g x
⊢ ∃ f, StrictMono f ∧ f 0 = a
Theorem: Set.image_const_sub_Iic
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: have := image_comp (fun x => a + x) fun x => -x
state_before: α : Type u_1
inst✝ : OrderedAddCommGroup α
a b c : α
⊢ (fun x => a - x) '' Iic b = Ici (a - b)

tactic: dsimp [Function.comp] at this
state_before: α : Type u_1
inst✝ : OrderedAddCommGroup α
a b c : α
this : ∀ (a_1 : Set α), ((fun x => a + x) ∘ fun x => -x) '' a_1 = (fun x => a + x) '' ((fun x => -x) '' a_1)
⊢ (fun x => a - x) '' Iic b = Ici (a - b)

tactic: simp [sub_eq_add_neg, this, add_comm]
state_before: α : Type u_1
inst✝ : OrderedAddCommGroup α
a b c : α
this : ∀ (a_1 : Set α), (fun x => a + -x) '' a_1 = (fun x => a + x) '' ((fun x => -x) '' a_1)
⊢ (fun x => a - x) '' Iic b = Ici (a - b)
Theorem: indicator_eventuallyEq
File: Mathlib/Order/Filter/IndicatorFunction.lean

tactic: simp only [*, hst.1 hxs, indicator_of_mem]
state_before: α : Type u_1
β : Type ?u.51
M : Type u_2
E : Type ?u.57
inst✝ : Zero M
s t : Set α
f g : α → M
a : α
l : Filter α
hf : f =ᶠ[l ⊓ 𝓟 s] g
hs : s =ᶠ[l] t
x : α
hst : x ∈ s ↔ x ∈ t
hfg : x ∈ s → f x = g x
hxs : x ∈ s
⊢ indicator s f x = indicator t g x

tactic: simp only [indicator_of_not_mem hxs, indicator_of_not_mem (mt hst.2 hxs)]
state_before: α : Type u_1
β : Type ?u.51
M : Type u_2
E : Type ?u.57
inst✝ : Zero M
s t : Set α
f g : α → M
a : α
l : Filter α
hf : f =ᶠ[l ⊓ 𝓟 s] g
hs : s =ᶠ[l] t
x : α
hst : x ∈ s ↔ x ∈ t
hfg : x ∈ s → f x = g x
hxs : ¬x ∈ s
⊢ indicator s f x = indicator t g x
Theorem: Subspace.dualAnnihilator_inj
File: Mathlib/LinearAlgebra/Dual.lean

tactic: constructor
state_before: K : Type u
V : Type v
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
W W' : Subspace K V
⊢ dualAnnihilator W = dualAnnihilator W' ↔ W = W'

tactic: apply (dualAnnihilatorGci K V).l_injective
state_before: case mp
K : Type u
V : Type v
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
W W' : Subspace K V
⊢ dualAnnihilator W = dualAnnihilator W' → W = W'

tactic: rintro rfl
state_before: case mpr
K : Type u
V : Type v
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
W W' : Subspace K V
⊢ W = W' → dualAnnihilator W = dualAnnihilator W'

tactic: rfl
state_before: case mpr
K : Type u
V : Type v
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
W : Subspace K V
⊢ dualAnnihilator W = dualAnnihilator W
Theorem: SimplicialObject.Split.congr_F
File: Mathlib/AlgebraicTopology/SplitSimplicialObject.lean

tactic: rw [h]
state_before: C : Type u_1
inst✝¹ : Category C
inst✝ : HasFiniteCoproducts C
S₁ S₂ : Split C
Φ₁ Φ₂ : S₁ ⟶ S₂
h : Φ₁ = Φ₂
⊢ Φ₁.f = Φ₂.f
Theorem: Submodule.map_unop_pow
File: Mathlib/Algebra/Algebra/Operations.lean

tactic: rw [← comap_equiv_eq_map_symm, ← comap_equiv_eq_map_symm, comap_op_pow]
state_before: ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M✝ N P Q : Submodule R A
m n✝ : A
n : ℕ
M : Submodule R Aᵐᵒᵖ
⊢ map (↑(LinearEquiv.symm (opLinearEquiv R))) (M ^ n) = map (↑(LinearEquiv.symm (opLinearEquiv R))) M ^ n
Theorem: Right.mul_nonneg
File: Mathlib/Algebra/Order/Ring/Lemmas.lean

tactic: simpa only [zero_mul] using mul_le_mul_of_nonneg_right ha hb
state_before: α : Type u_1
a b c d : α
inst✝² : MulZeroClass α
inst✝¹ : Preorder α
inst✝ : MulPosMono α
ha : 0 ≤ a
hb : 0 ≤ b
⊢ 0 ≤ a * b
Theorem: DirectSum.coe_decompose_mul_add_of_right_mem
File: Mathlib/RingTheory/GradedAlgebra/Basic.lean

tactic: lift b to 𝒜 j using b_mem
state_before: ι : Type u_1
R : Type ?u.161779
A : Type u_2
σ : Type u_3
inst✝⁵ : DecidableEq ι
inst✝⁴ : Semiring A
inst✝³ : SetLike σ A
inst✝² : AddSubmonoidClass σ A
𝒜 : ι → σ
i j : ι
inst✝¹ : AddRightCancelMonoid ι
inst✝ : GradedRing 𝒜
a b : A
b_mem : b ∈ 𝒜 j
⊢ ↑(↑(↑(decompose 𝒜) (a * b)) (i + j)) = ↑(↑(↑(decompose 𝒜) a) i) * b

tactic: rw [decompose_mul, decompose_coe, coe_mul_of_apply_add]
state_before: case intro
ι : Type u_1
R : Type ?u.161779
A : Type u_2
σ : Type u_3
inst✝⁵ : DecidableEq ι
inst✝⁴ : Semiring A
inst✝³ : SetLike σ A
inst✝² : AddSubmonoidClass σ A
𝒜 : ι → σ
i j : ι
inst✝¹ : AddRightCancelMonoid ι
inst✝ : GradedRing 𝒜
a : A
b : { x // x ∈ 𝒜 j }
⊢ ↑(↑(↑(decompose 𝒜) (a * ↑b)) (i + j)) = ↑(↑(↑(decompose 𝒜) a) i) * ↑b
Theorem: Partrec.bind_decode₂_iff
File: Mathlib/Computability/Partrec.lean

tactic: simpa [encodek₂] using (nat_iff.2 h).comp (@Computable.encode α _)
state_before: α : Type u_1
β : Type ?u.135479
γ : Type ?u.135482
σ : Type u_2
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
f : α →. σ
h : Nat.Partrec fun n => Part.bind ↑(decode₂ α n) fun a => Part.map encode (f a)
⊢ Partrec fun a => Part.map encode (f a)
Theorem: Matrix.isDiag_conjTranspose_iff
File: Mathlib/LinearAlgebra/Matrix/IsDiag.lean

tactic: convert ha.conjTranspose
state_before: α : Type u_1
β : Type ?u.16315
R : Type ?u.16318
n : Type u_2
m : Type ?u.16324
inst✝¹ : Semiring α
inst✝ : StarRing α
A : Matrix n n α
ha : IsDiag Aᴴ
⊢ IsDiag A

tactic: simp
state_before: case h.e'_4
α : Type u_1
β : Type ?u.16315
R : Type ?u.16318
n : Type u_2
m : Type ?u.16324
inst✝¹ : Semiring α
inst✝ : StarRing α
A : Matrix n n α
ha : IsDiag Aᴴ
⊢ A = Aᴴᴴ
Theorem: MeasureTheory.snorm_eq_lintegral_rpow_nnnorm
File: Mathlib/MeasureTheory/Function/LpSeminorm.lean

tactic: rw [snorm_eq_snorm' hp_ne_zero hp_ne_top, snorm']
state_before: α : Type u_1
E : Type ?u.376592
F : Type u_2
G : Type ?u.376598
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
f : α → F
⊢ snorm f p μ = (∫⁻ (x : α), ↑‖f x‖₊ ^ ENNReal.toReal p ∂μ) ^ (1 / ENNReal.toReal p)
Theorem: Std.PairingHeapImp.Heap.size_tail?
File: Std/Data/PairingHeap.lean

tactic: simp only [Heap.tail?]
state_before: α : Type u_1
le : α → α → Bool
s' s : Heap α
h : NoSibling s
⊢ tail? le s = some s' → size s = size s' + 1

tactic: intro eq
state_before: α : Type u_1
le : α → α → Bool
s' s : Heap α
h : NoSibling s
⊢ Option.map (fun x => x.snd) (deleteMin le s) = some s' → size s = size s' + 1

tactic: match eq₂ : s.deleteMin le, eq with
| some (a, tl), rfl => exact size_deleteMin h eq₂
state_before: α : Type u_1
le : α → α → Bool
s' s : Heap α
h : NoSibling s
eq : Option.map (fun x => x.snd) (deleteMin le s) = some s'
⊢ size s = size s' + 1

tactic: exact size_deleteMin h eq₂
state_before: α : Type u_1
le : α → α → Bool
s' s : Heap α
h : NoSibling s
eq : Option.map (fun x => x.snd) (deleteMin le s) = some s'
a : α
tl : Heap α
eq₂ : deleteMin le s = some (a, tl)
⊢ size s = size ((fun x => x.snd) (a, tl)) + 1
Theorem: Equiv.Perm.disjoint_mul_inv_of_mem_cycleFactorsFinset
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

tactic: rw [mem_cycleFactorsFinset_iff] at h
state_before: ι : Type ?u.2773969
α : Type u_1
β : Type ?u.2773975
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : f ∈ cycleFactorsFinset g
⊢ Disjoint (g * f⁻¹) f

tactic: intro x
state_before: ι : Type ?u.2773969
α : Type u_1
β : Type ?u.2773975
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : IsCycle f ∧ ∀ (a : α), a ∈ support f → ↑f a = ↑g a
⊢ Disjoint (g * f⁻¹) f

tactic: by_cases hx : f x = x
state_before: ι : Type ?u.2773969
α : Type u_1
β : Type ?u.2773975
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : IsCycle f ∧ ∀ (a : α), a ∈ support f → ↑f a = ↑g a
x : α
⊢ ↑(g * f⁻¹) x = x ∨ ↑f x = x

tactic: exact Or.inr hx
state_before: case pos
ι : Type ?u.2773969
α : Type u_1
β : Type ?u.2773975
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : IsCycle f ∧ ∀ (a : α), a ∈ support f → ↑f a = ↑g a
x : α
hx : ↑f x = x
⊢ ↑(g * f⁻¹) x = x ∨ ↑f x = x

tactic: refine' Or.inl _
state_before: case neg
ι : Type ?u.2773969
α : Type u_1
β : Type ?u.2773975
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : IsCycle f ∧ ∀ (a : α), a ∈ support f → ↑f a = ↑g a
x : α
hx : ¬↑f x = x
⊢ ↑(g * f⁻¹) x = x ∨ ↑f x = x

tactic: rw [mul_apply, ← h.right, apply_inv_self]
state_before: case neg
ι : Type ?u.2773969
α : Type u_1
β : Type ?u.2773975
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : IsCycle f ∧ ∀ (a : α), a ∈ support f → ↑f a = ↑g a
x : α
hx : ¬↑f x = x
⊢ ↑(g * f⁻¹) x = x

tactic: rwa [← support_inv, apply_mem_support, support_inv, mem_support]
state_before: case neg.a
ι : Type ?u.2773969
α : Type u_1
β : Type ?u.2773975
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : IsCycle f ∧ ∀ (a : α), a ∈ support f → ↑f a = ↑g a
x : α
hx : ¬↑f x = x
⊢ ↑f⁻¹ x ∈ support f
Theorem: Finset.prod_attach
File: Mathlib/Algebra/BigOperators/Basic.lean

tactic: rw [attach_image_val]
state_before: ι : Type ?u.378826
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
f : α → β
this : DecidableEq α
⊢ ∏ x in image Subtype.val (attach s), f x = ∏ x in s, f x
Theorem: Real.abs_exp_sub_one_le
File: Mathlib/Data/Complex/Exponential.lean

tactic: have : abs' x ≤ 1 := by exact_mod_cast hx
state_before: x : ℝ
hx : abs' x ≤ 1
⊢ abs' (exp x - 1) ≤ 2 * abs' x

tactic: have := Complex.abs_exp_sub_one_le (x := x) (by simpa using this)
state_before: x : ℝ
hx this : abs' x ≤ 1
⊢ abs' (exp x - 1) ≤ 2 * abs' x

tactic: rw [← ofReal_exp, ← ofReal_one, ← ofReal_sub, abs_ofReal, abs_ofReal] at this
state_before: x : ℝ
hx this✝ : abs' x ≤ 1
this : ↑Complex.abs (Complex.exp ↑x - 1) ≤ 2 * ↑Complex.abs ↑x
⊢ abs' (exp x - 1) ≤ 2 * abs' x

tactic: exact this
state_before: x : ℝ
hx this✝ : abs' x ≤ 1
this : abs' (exp x - 1) ≤ 2 * abs' x
⊢ abs' (exp x - 1) ≤ 2 * abs' x

tactic: exact_mod_cast hx
state_before: x : ℝ
hx : abs' x ≤ 1
⊢ abs' x ≤ 1

tactic: simpa using this
state_before: x : ℝ
hx this : abs' x ≤ 1
⊢ ↑Complex.abs ↑x ≤ 1
Theorem: Part.bind_toOption
File: Mathlib/Data/Part.lean

tactic: by_cases h : o.Dom
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.25409
f : α → Part β
o : Part α
inst✝² : Decidable o.Dom
inst✝¹ : (a : α) → Decidable (f a).Dom
inst✝ : Decidable (Part.bind o f).Dom
⊢ toOption (Part.bind o f) = Option.elim (toOption o) Option.none fun a => toOption (f a)

tactic: simp_rw [h.toOption, h.bind]
state_before: case pos
α : Type u_2
β : Type u_1
γ : Type ?u.25409
f : α → Part β
o : Part α
inst✝² : Decidable o.Dom
inst✝¹ : (a : α) → Decidable (f a).Dom
inst✝ : Decidable (Part.bind o f).Dom
h : o.Dom
⊢ toOption (Part.bind o f) = Option.elim (toOption o) Option.none fun a => toOption (f a)

tactic: rfl
state_before: case pos
α : Type u_2
β : Type u_1
γ : Type ?u.25409
f : α → Part β
o : Part α
inst✝² : Decidable o.Dom
inst✝¹ : (a : α) → Decidable (f a).Dom
inst✝ : Decidable (Part.bind o f).Dom
h : o.Dom
⊢ toOption (f (get o h)) = Option.elim (Option.some (get o h)) Option.none fun a => toOption (f a)

tactic: rw [Part.toOption_eq_none_iff.2 h]
state_before: case neg
α : Type u_2
β : Type u_1
γ : Type ?u.25409
f : α → Part β
o : Part α
inst✝² : Decidable o.Dom
inst✝¹ : (a : α) → Decidable (f a).Dom
inst✝ : Decidable (Part.bind o f).Dom
h : ¬o.Dom
⊢ toOption (Part.bind o f) = Option.elim (toOption o) Option.none fun a => toOption (f a)

tactic: exact Part.toOption_eq_none_iff.2 fun ho => h ho.of_bind
state_before: case neg
α : Type u_2
β : Type u_1
γ : Type ?u.25409
f : α → Part β
o : Part α
inst✝² : Decidable o.Dom
inst✝¹ : (a : α) → Decidable (f a).Dom
inst✝ : Decidable (Part.bind o f).Dom
h : ¬o.Dom
⊢ toOption (Part.bind o f) = Option.elim Option.none Option.none fun a => toOption (f a)
Theorem: Fin.card_Icc
File: Mathlib/Data/Fin/Interval.lean

tactic: rw [← Nat.card_Icc, ← map_valEmbedding_Icc, card_map]
state_before: n : ℕ
a b : Fin n
⊢ card (Icc a b) = ↑b + 1 - ↑a
Theorem: LinearMap.IsSymm.domRestrict
File: Mathlib/LinearAlgebra/SesquilinearForm.lean

tactic: simp_rw [domRestrict₁₂_apply]
state_before: R : Type u_1
R₁ : Type ?u.164233
R₂ : Type ?u.164236
R₃ : Type ?u.164239
M : Type u_2
M₁ : Type ?u.164245
M₂ : Type ?u.164248
Mₗ₁ : Type ?u.164251
Mₗ₁' : Type ?u.164254
Mₗ₂ : Type ?u.164257
Mₗ₂' : Type ?u.164260
K : Type ?u.164263
K₁ : Type ?u.164266
K₂ : Type ?u.164269
V : Type ?u.164272
V₁ : Type ?u.164275
V₂ : Type ?u.164278
n : Type ?u.164281
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
I : R →+* R
B : M →ₛₗ[I] M →ₗ[R] R
H : IsSymm B
p : Submodule R M
x✝¹ x✝ : { x // x ∈ p }
⊢ ↑I (↑(↑(domRestrict₁₂ B p p) x✝¹) x✝) = ↑(↑(domRestrict₁₂ B p p) x✝) x✝¹

tactic: exact H _ _
state_before: R : Type u_1
R₁ : Type ?u.164233
R₂ : Type ?u.164236
R₃ : Type ?u.164239
M : Type u_2
M₁ : Type ?u.164245
M₂ : Type ?u.164248
Mₗ₁ : Type ?u.164251
Mₗ₁' : Type ?u.164254
Mₗ₂ : Type ?u.164257
Mₗ₂' : Type ?u.164260
K : Type ?u.164263
K₁ : Type ?u.164266
K₂ : Type ?u.164269
V : Type ?u.164272
V₁ : Type ?u.164275
V₂ : Type ?u.164278
n : Type ?u.164281
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
I : R →+* R
B : M →ₛₗ[I] M →ₗ[R] R
H : IsSymm B
p : Submodule R M
x✝¹ x✝ : { x // x ∈ p }
⊢ ↑I (↑(↑B ↑x✝¹) ↑x✝) = ↑(↑B ↑x✝) ↑x✝¹
Theorem: IsROrC.interval_integral_ofReal
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

tactic: simp only [intervalIntegral, integral_ofReal, IsROrC.ofReal_sub]
state_before: ι : Type ?u.13951224
𝕜✝ : Type ?u.13951227
E : Type ?u.13951230
F : Type ?u.13951233
A : Type ?u.13951236
inst✝³ : NormedAddCommGroup E
inst✝² : CompleteSpace E
inst✝¹ : NormedSpace ℝ E
𝕜 : Type u_1
inst✝ : IsROrC 𝕜
a b : ℝ
μ : MeasureTheory.Measure ℝ
f : ℝ → ℝ
⊢ (∫ (x : ℝ) in a..b, ↑(f x) ∂μ) = ↑(∫ (x : ℝ) in a..b, f x ∂μ)
Theorem: ZFSet.toSet_singleton
File: Mathlib/SetTheory/ZFC/Basic.lean

tactic: ext
state_before: x : ZFSet
⊢ toSet {x} = {x}

tactic: simp
state_before: case h
x x✝ : ZFSet
⊢ x✝ ∈ toSet {x} ↔ x✝ ∈ {x}
Theorem: Filter.iInf_sets_eq_finite'
File: Mathlib/Order/Filter/Basic.lean

tactic: rw [← iInf_sets_eq_finite, ← Equiv.plift.surjective.iInf_comp]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.101802
ι : Sort x
f✝ g : Filter α
s t : Set α
f : ι → Filter α
⊢ (⨅ (i : ι), f i).sets = ⋃ (t : Finset (PLift ι)), (⨅ (i : PLift ι) (_ : i ∈ t), f i.down).sets

tactic: rfl
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.101802
ι : Sort x
f✝ g : Filter α
s t : Set α
f : ι → Filter α
⊢ (⨅ (x : PLift ι), f (↑Equiv.plift x)).sets = (⨅ (i : PLift ι), f i.down).sets
Theorem: Function.Injective.hasSum_iff
File: Mathlib/Topology/Algebra/InfiniteSum/Basic.lean

tactic: simp only [HasSum, Tendsto, comp_apply, hg.map_atTop_finset_sum_eq hf]
state_before: α : Type u_3
β : Type u_2
γ : Type u_1
δ : Type ?u.22083
inst✝¹ : AddCommMonoid α
inst✝ : TopologicalSpace α
f g✝ : β → α
a b : α
s : Finset β
g : γ → β
hg : Injective g
hf : ∀ (x : β), ¬x ∈ Set.range g → f x = 0
⊢ HasSum (f ∘ g) a ↔ HasSum f a
Theorem: SeminormFamily.basisSets_zero
File: Mathlib/Analysis/LocallyConvex/WithSeminorms.lean

tactic: rcases p.basisSets_iff.mp hU with ⟨ι', r, hr, hU⟩
state_before: 𝕜 : Type u_2
𝕜₂ : Type ?u.30056
𝕝 : Type ?u.30059
𝕝₂ : Type ?u.30062
E : Type u_1
F : Type ?u.30068
G : Type ?u.30071
ι : Type u_3
ι' : Type ?u.30077
inst✝² : NormedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
p : SeminormFamily 𝕜 E ι
U : Set E
hU : U ∈ basisSets p
⊢ 0 ∈ U

tactic: rw [hU, mem_ball_zero, map_zero]
state_before: case intro.intro.intro
𝕜 : Type u_2
𝕜₂ : Type ?u.30056
𝕝 : Type ?u.30059
𝕝₂ : Type ?u.30062
E : Type u_1
F : Type ?u.30068
G : Type ?u.30071
ι : Type u_3
ι'✝ : Type ?u.30077
inst✝² : NormedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
p : SeminormFamily 𝕜 E ι
U : Set E
hU✝ : U ∈ basisSets p
ι' : Finset ι
r : ℝ
hr : 0 < r
hU : U = ball (Finset.sup ι' p) 0 r
⊢ 0 ∈ U

tactic: exact hr
state_before: case intro.intro.intro
𝕜 : Type u_2
𝕜₂ : Type ?u.30056
𝕝 : Type ?u.30059
𝕝₂ : Type ?u.30062
E : Type u_1
F : Type ?u.30068
G : Type ?u.30071
ι : Type u_3
ι'✝ : Type ?u.30077
inst✝² : NormedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
p : SeminormFamily 𝕜 E ι
U : Set E
hU✝ : U ∈ basisSets p
ι' : Finset ι
r : ℝ
hr : 0 < r
hU : U = ball (Finset.sup ι' p) 0 r
⊢ 0 < r
Theorem: sSupHom.cancel_left
File: Mathlib/Order/Hom/CompleteLattice.lean

tactic: rw [← comp_apply, h, comp_apply]
state_before: F : Type ?u.36164
α : Type u_3
β : Type u_1
γ : Type u_2
δ : Type ?u.36176
ι : Sort ?u.36179
κ : ι → Sort ?u.36184
inst✝³ : SupSet α
inst✝² : SupSet β
inst✝¹ : SupSet γ
inst✝ : SupSet δ
g : sSupHom β γ
f₁ f₂ : sSupHom α β
hg : Injective ↑g
h : comp g f₁ = comp g f₂
a : α
⊢ ↑g (↑f₁ a) = ↑g (↑f₂ a)
Theorem: lift_rank_map_le
File: Mathlib/LinearAlgebra/Dimension.lean

tactic: have h := lift_rank_range_le (f.comp (Submodule.subtype p))
state_before: K : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type ?u.44308
R : Type u
inst✝⁶ : Ring R
M : Type v
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
M' : Type v'
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
M₁ : Type v
inst✝¹ : AddCommGroup M₁
inst✝ : Module R M₁
f : M →ₗ[R] M'
p : Submodule R M
⊢ lift (Module.rank R { x // x ∈ Submodule.map f p }) ≤ lift (Module.rank R { x // x ∈ p })

tactic: rwa [LinearMap.range_comp, range_subtype] at h
state_before: K : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type ?u.44308
R : Type u
inst✝⁶ : Ring R
M : Type v
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
M' : Type v'
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
M₁ : Type v
inst✝¹ : AddCommGroup M₁
inst✝ : Module R M₁
f : M →ₗ[R] M'
p : Submodule R M
h :
  lift (Module.rank R { x // x ∈ LinearMap.range (LinearMap.comp f (Submodule.subtype p)) }) ≤
    lift (Module.rank R { x // x ∈ p })
⊢ lift (Module.rank R { x // x ∈ Submodule.map f p }) ≤ lift (Module.rank R { x // x ∈ p })
Theorem: Set.infsep_zero_iff_subsingleton_of_finite
File: Mathlib/Topology/MetricSpace/Infsep.lean

tactic: rw [infsep_zero, einfsep_eq_top_iff, or_iff_right_iff_imp]
state_before: α : Type u_1
β : Type ?u.81138
inst✝¹ : MetricSpace α
s : Set α
inst✝ : Finite ↑s
⊢ infsep s = 0 ↔ Set.Subsingleton s

tactic: exact fun H => (einfsep_pos_of_finite.ne' H).elim
state_before: α : Type u_1
β : Type ?u.81138
inst✝¹ : MetricSpace α
s : Set α
inst✝ : Finite ↑s
⊢ einfsep s = 0 → Set.Subsingleton s
Theorem: generatePiSystem_mono
File: Mathlib/MeasureTheory/PiSystem.lean

tactic: induction' ht with s h_s s u _ _ h_nonempty h_s h_u
state_before: α : Type u_1
S T : Set (Set α)
hST : S ⊆ T
t : Set α
ht : t ∈ generatePiSystem S
⊢ t ∈ generatePiSystem T

tactic: exact generatePiSystem.base (Set.mem_of_subset_of_mem hST h_s)
state_before: case base
α : Type u_1
S T : Set (Set α)
hST : S ⊆ T
t s : Set α
h_s : s ∈ S
⊢ s ∈ generatePiSystem T

tactic: exact isPiSystem_generatePiSystem T _ h_s _ h_u h_nonempty
state_before: case inter
α : Type u_1
S T : Set (Set α)
hST : S ⊆ T
t s u : Set α
h_s✝ : generatePiSystem S s
h_t✝ : generatePiSystem S u
h_nonempty : Set.Nonempty (s ∩ u)
h_s : s ∈ generatePiSystem T
h_u : u ∈ generatePiSystem T
⊢ s ∩ u ∈ generatePiSystem T
Theorem: Set.MapsTo.closure
File: Mathlib/Topology/Basic.lean

tactic: simp only [MapsTo, mem_closure_iff_clusterPt]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.172565
δ : Type ?u.172568
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
s : Set α
t : Set β
f : α → β
h : MapsTo f s t
hc : Continuous f
⊢ MapsTo f (closure s) (closure t)

tactic: exact fun x hx => hx.map hc.continuousAt (tendsto_principal_principal.2 h)
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.172565
δ : Type ?u.172568
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
s : Set α
t : Set β
f : α → β
h : MapsTo f s t
hc : Continuous f
⊢ ∀ ⦃x : α⦄, ClusterPt x (𝓟 s) → ClusterPt (f x) (𝓟 t)
Theorem: top_symmDiff'
File: Mathlib/Order/SymmDiff.lean

tactic: simp [symmDiff]
state_before: ι : Type ?u.54496
α : Type u_1
β : Type ?u.54502
π : ι → Type ?u.54507
inst✝ : CoheytingAlgebra α
a : α
⊢ ⊤ ∆ a = ￢a