tasksource/leandojo huggingface dataset:
Theorem: MeasureTheory.ennnorm_integral_le_lintegral_ennnorm
File: Mathlib/MeasureTheory/Integral/Bochner.lean

tactic: simp_rw [← ofReal_norm_eq_coe_nnnorm]
state_before: α : Type u_2
E : Type u_1
F : Type ?u.964234
𝕜 : Type ?u.964237
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : CompleteSpace E
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : SMulCommClass ℝ 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f✝ g : α → E
m : MeasurableSpace α
μ : Measure α
f : α → E
⊢ ↑‖∫ (a : α), f a ∂μ‖₊ ≤ ∫⁻ (a : α), ↑‖f a‖₊ ∂μ

tactic: apply ENNReal.ofReal_le_of_le_toReal
state_before: α : Type u_2
E : Type u_1
F : Type ?u.964234
𝕜 : Type ?u.964237
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : CompleteSpace E
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : SMulCommClass ℝ 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f✝ g : α → E
m : MeasurableSpace α
μ : Measure α
f : α → E
⊢ ENNReal.ofReal ‖∫ (a : α), f a ∂μ‖ ≤ ∫⁻ (a : α), ENNReal.ofReal ‖f a‖ ∂μ

tactic: exact norm_integral_le_lintegral_norm f
state_before: case h
α : Type u_2
E : Type u_1
F : Type ?u.964234
𝕜 : Type ?u.964237
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : CompleteSpace E
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : SMulCommClass ℝ 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f✝ g : α → E
m : MeasurableSpace α
μ : Measure α
f : α → E
⊢ ‖∫ (a : α), f a ∂μ‖ ≤ ENNReal.toReal (∫⁻ (a : α), ENNReal.ofReal ‖f a‖ ∂μ)
Theorem: hnot_le_comm
File: Mathlib/Order/Heyting/Basic.lean

tactic: rw [hnot_le_iff_codisjoint_right, hnot_le_iff_codisjoint_left]
state_before: ι : Type ?u.173522
α : Type u_1
β : Type ?u.173528
inst✝ : CoheytingAlgebra α
a b c : α
⊢ ￢a ≤ b ↔ ￢b ≤ a
Theorem: ENNReal.le_inv_smul_iff
File: Mathlib/Data/Real/ENNReal.lean

tactic: simpa [hr₀, ENNReal.smul_def] using (mul_le_iff_le_inv (coe_ne_zero.mpr hr₀) coe_ne_top).symm
state_before: α : Type ?u.299453
β : Type ?u.299456
a✝ b✝ c d : ℝ≥0∞
r✝ p q : ℝ≥0
a b : ℝ≥0∞
r : ℝ≥0
hr₀ : r ≠ 0
⊢ a ≤ r⁻¹ • b ↔ r • a ≤ b
Theorem: symmDiff_symmDiff_inf
File: Mathlib/Order/SymmDiff.lean

tactic: rw [← symmDiff_sdiff_inf a, sdiff_symmDiff_eq_sup, symmDiff_sup_inf]
state_before: ι : Type ?u.34249
α : Type u_1
β : Type ?u.34255
π : ι → Type ?u.34260
inst✝ : GeneralizedCoheytingAlgebra α
a b c d : α
⊢ a ∆ b ∆ (a ⊓ b) = a ⊔ b
Theorem: LinearMap.rTensor_sub
File: Mathlib/LinearAlgebra/TensorProduct.lean

tactic: simp only [← coe_rTensorHom]
state_before: R : Type u_1
inst✝¹⁰ : CommSemiring R
M : Type u_4
N : Type u_2
P : Type u_3
Q : Type ?u.1455059
S : Type ?u.1455062
inst✝⁹ : AddCommGroup M
inst✝⁸ : AddCommGroup N
inst✝⁷ : AddCommGroup P
inst✝⁶ : AddCommGroup Q
inst✝⁵ : AddCommGroup S
inst✝⁴ : Module R M
inst✝³ : Module R N
inst✝² : Module R P
inst✝¹ : Module R Q
inst✝ : Module R S
f g : N →ₗ[R] P
⊢ rTensor M (f - g) = rTensor M f - rTensor M g

tactic: exact (rTensorHom (R:=R) (N:=N) (P:=P) M).map_sub f g
state_before: R : Type u_1
inst✝¹⁰ : CommSemiring R
M : Type u_4
N : Type u_2
P : Type u_3
Q : Type ?u.1455059
S : Type ?u.1455062
inst✝⁹ : AddCommGroup M
inst✝⁸ : AddCommGroup N
inst✝⁷ : AddCommGroup P
inst✝⁶ : AddCommGroup Q
inst✝⁵ : AddCommGroup S
inst✝⁴ : Module R M
inst✝³ : Module R N
inst✝² : Module R P
inst✝¹ : Module R Q
inst✝ : Module R S
f g : N →ₗ[R] P
⊢ ↑(rTensorHom M) (f - g) = ↑(rTensorHom M) f - ↑(rTensorHom M) g
Theorem: BoundedContinuousFunction.norm_le_of_nonempty
File: Mathlib/Topology/ContinuousFunction/Bounded.lean

tactic: simp_rw [norm_def, ← dist_zero_right]
state_before: F : Type ?u.1006929
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : SeminormedAddCommGroup β
f✝ g : α →ᵇ β
x : α
C : ℝ
inst✝ : Nonempty α
f : α →ᵇ β
M : ℝ
⊢ ‖f‖ ≤ M ↔ ∀ (x : α), ‖↑f x‖ ≤ M

tactic: exact dist_le_iff_of_nonempty
state_before: F : Type ?u.1006929
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : SeminormedAddCommGroup β
f✝ g : α →ᵇ β
x : α
C : ℝ
inst✝ : Nonempty α
f : α →ᵇ β
M : ℝ
⊢ dist f 0 ≤ M ↔ ∀ (x : α), dist (↑f x) 0 ≤ M
Theorem: Localization.mk_eq_mk'_apply
File: Mathlib/RingTheory/Localization/Basic.lean

tactic: rw [mk_eq_monoidOf_mk'_apply, mk', toLocalizationMap_eq_monoidOf]
state_before: R : Type u_1
inst✝³ : CommSemiring R
M : Submonoid R
S : Type ?u.2872168
inst✝² : CommSemiring S
inst✝¹ : Algebra R S
P : Type ?u.2872335
inst✝ : CommSemiring P
x : R
y : { x // x ∈ M }
⊢ mk x y = mk' (Localization M) x y
Theorem: List.reduceOption_singleton
File: Mathlib/Data/List/Basic.lean

tactic: cases x <;> rfl
state_before: ι : Type ?u.368383
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
x : Option α
⊢ reduceOption [x] = Option.toList x
Theorem: Ideal.Filtration.pow_smul_le_pow_smul
File: Mathlib/RingTheory/Filtration.lean

tactic: rw [add_comm, pow_add, mul_smul]
state_before: R M : Type u
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
F F' : Filtration I M
i j k : ℕ
⊢ I ^ (i + k) • N F j ≤ I ^ k • N F (i + j)

tactic: exact Submodule.smul_mono_right (F.pow_smul_le i j)
state_before: R M : Type u
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
F F' : Filtration I M
i j k : ℕ
⊢ I ^ k • I ^ i • N F j ≤ I ^ k • N F (i + j)
Theorem: Algebra.TensorProduct.mul_one
File: Mathlib/RingTheory/TensorProduct.lean

tactic: refine TensorProduct.induction_on x ?_ ?_ ?_ <;> simp (config := { contextual := true })
state_before: R : Type u
inst✝⁴ : CommSemiring R
A : Type v₁
inst✝³ : Semiring A
inst✝² : Algebra R A
B : Type v₂
inst✝¹ : Semiring B
inst✝ : Algebra R B
x : A ⊗[R] B
⊢ ↑(↑mul x) (1 ⊗ₜ[R] 1) = x
Theorem: Computation.LiftRel.equiv
File: Mathlib/Data/Seq/Computation.lean

tactic: apply LiftRel.symm
state_before: α : Type u
β : Type v
γ : Type w
R : α → α → Prop
refl : ∀ (x : α), R x x
symm : ∀ {x y : α}, R x y → R y x
trans : ∀ {x y z : α}, R x y → R y z → R x z
⊢ ∀ {x y : Computation α}, LiftRel R x y → LiftRel R y x

tactic: apply symm
state_before: case H
α : Type u
β : Type v
γ : Type w
R : α → α → Prop
refl : ∀ (x : α), R x x
symm : ∀ {x y : α}, R x y → R y x
trans : ∀ {x y z : α}, R x y → R y z → R x z
⊢ Symmetric R

tactic: apply LiftRel.trans
state_before: α : Type u
β : Type v
γ : Type w
R : α → α → Prop
refl : ∀ (x : α), R x x
symm : ∀ {x y : α}, R x y → R y x
trans : ∀ {x y z : α}, R x y → R y z → R x z
⊢ ∀ {x y z : Computation α}, LiftRel R x y → LiftRel R y z → LiftRel R x z

tactic: apply trans
state_before: case H
α : Type u
β : Type v
γ : Type w
R : α → α → Prop
refl : ∀ (x : α), R x x
symm : ∀ {x y : α}, R x y → R y x
trans : ∀ {x y z : α}, R x y → R y z → R x z
⊢ Transitive R
Theorem: Cardinal.bddAbove_iff_small
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: rintro ⟨ι, ⟨e⟩⟩
state_before: α β : Type u
s : Set Cardinal
⊢ Small ↑s → BddAbove s

tactic: suffices (range fun x : ι => (e.symm x).1) = s by
  rw [← this]
  apply bddAbove_range.{u, u}
state_before: case mk.intro.intro
α β : Type u
s : Set Cardinal
ι : Type u
e : ↑s ≃ ι
⊢ BddAbove s

tactic: ext x
state_before: case mk.intro.intro
α β : Type u
s : Set Cardinal
ι : Type u
e : ↑s ≃ ι
⊢ (range fun x => ↑(↑e.symm x)) = s

tactic: refine' ⟨_, fun hx => ⟨e ⟨x, hx⟩, _⟩⟩
state_before: case mk.intro.intro.h
α β : Type u
s : Set Cardinal
ι : Type u
e : ↑s ≃ ι
x : Cardinal
⊢ (x ∈ range fun x => ↑(↑e.symm x)) ↔ x ∈ s

tactic: rw [← this]
state_before: α β : Type u
s : Set Cardinal
ι : Type u
e : ↑s ≃ ι
this : (range fun x => ↑(↑e.symm x)) = s
⊢ BddAbove s

tactic: apply bddAbove_range.{u, u}
state_before: α β : Type u
s : Set Cardinal
ι : Type u
e : ↑s ≃ ι
this : (range fun x => ↑(↑e.symm x)) = s
⊢ BddAbove (range fun x => ↑(↑e.symm x))

tactic: rintro ⟨a, rfl⟩
state_before: case mk.intro.intro.h.refine'_1
α β : Type u
s : Set Cardinal
ι : Type u
e : ↑s ≃ ι
x : Cardinal
⊢ (x ∈ range fun x => ↑(↑e.symm x)) → x ∈ s

tactic: exact (e.symm a).2
state_before: case mk.intro.intro.h.refine'_1.intro
α β : Type u
s : Set Cardinal
ι : Type u
e : ↑s ≃ ι
a : ι
⊢ (fun x => ↑(↑e.symm x)) a ∈ s

tactic: simp_rw [Equiv.symm_apply_apply]
state_before: case mk.intro.intro.h.refine'_2
α β : Type u
s : Set Cardinal
ι : Type u
e : ↑s ≃ ι
x : Cardinal
hx : x ∈ s
⊢ (fun x => ↑(↑e.symm x)) (↑e { val := x, property := hx }) = x
Theorem: Convex.norm_image_sub_le_of_norm_hasDerivWithin_le
File: Mathlib/Analysis/Calculus/MeanValue.lean

tactic: simp
state_before: E : Type ?u.267480
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
F : Type ?u.267576
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
𝕜 : Type u_1
G : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f f' : 𝕜 → G
s : Set 𝕜
x✝ y : 𝕜
C : ℝ
hf : ∀ (x : 𝕜), x ∈ s → HasDerivWithinAt f (f' x) s x
bound : ∀ (x : 𝕜), x ∈ s → ‖f' x‖ ≤ C
hs : Convex ℝ s
xs : x✝ ∈ s
ys : y ∈ s
x : 𝕜
hx : x ∈ s
⊢ ‖smulRight 1 (f' x)‖ ≤ ‖f' x‖
Theorem: coe_notMemRangeEquiv_symm
File: Mathlib/Data/Finset/Basic.lean

tactic: simp
state_before: α : Type ?u.442805
β : Type ?u.442808
γ : Type ?u.442811
k j : ℕ
⊢ ¬j + k ∈ range k
Theorem: Multiset.prod_le_pow_card
File: Mathlib/Algebra/BigOperators/Multiset/Basic.lean

tactic: induction s using Quotient.inductionOn
state_before: ι : Type ?u.120163
α : Type u_1
β : Type ?u.120169
γ : Type ?u.120172
inst✝ : OrderedCommMonoid α
s✝ t : Multiset α
a : α
s : Multiset α
n : α
h : ∀ (x : α), x ∈ s → x ≤ n
⊢ prod s ≤ n ^ ↑card s

tactic: simpa using List.prod_le_pow_card _ _ h
state_before: case h
ι : Type ?u.120163
α : Type u_1
β : Type ?u.120169
γ : Type ?u.120172
inst✝ : OrderedCommMonoid α
s t : Multiset α
a n : α
a✝ : List α
h : ∀ (x : α), x ∈ Quotient.mk (List.isSetoid α) a✝ → x ≤ n
⊢ prod (Quotient.mk (List.isSetoid α) a✝) ≤ n ^ ↑card (Quotient.mk (List.isSetoid α) a✝)
Theorem: CategoryTheory.Limits.prod.lift_fst_comp_snd_comp
File: Mathlib/CategoryTheory/Limits/Shapes/BinaryProducts.lean

tactic: rw [← prod.lift_map]
state_before: C : Type u
inst✝² : Category C
X✝ Y✝ W X Y Z : C
inst✝¹ : HasBinaryProduct W Y
inst✝ : HasBinaryProduct X Z
g : W ⟶ X
g' : Y ⟶ Z
⊢ lift (fst ≫ g) (snd ≫ g') = map g g'

tactic: simp
state_before: C : Type u
inst✝² : Category C
X✝ Y✝ W X Y Z : C
inst✝¹ : HasBinaryProduct W Y
inst✝ : HasBinaryProduct X Z
g : W ⟶ X
g' : Y ⟶ Z
⊢ lift fst snd ≫ map g g' = map g g'
Theorem: PartENat.toWithTop_ofENat
File: Mathlib/Data/Nat/PartENat.lean

tactic: induction n with
| none => simp
| some n =>
  simp only [toWithTop_natCast', ofENat_some]
  rfl
state_before: n : ℕ∞
x✝ : Decidable (↑n).Dom
⊢ toWithTop ↑n = n

tactic: simp
state_before: case none
x✝ : Decidable (↑Option.none).Dom
⊢ toWithTop ↑Option.none = Option.none

tactic: simp only [toWithTop_natCast', ofENat_some]
state_before: case some
n : ℕ
x✝ : Decidable (↑(Option.some n)).Dom
⊢ toWithTop ↑(Option.some n) = Option.some n

tactic: rfl
state_before: case some
n : ℕ
x✝ : Decidable (↑(Option.some n)).Dom
⊢ ↑n = Option.some n
Theorem: Fintype.coe_piFinset
File: Mathlib/Data/Fintype/Pi.lean

tactic: rw [Set.mem_univ_pi]
state_before: α : Type u_2
inst✝¹ : DecidableEq α
inst✝ : Fintype α
δ : α → Type u_1
t : (a : α) → Finset (δ a)
x : (a : α) → δ a
⊢ x ∈ ↑(piFinset t) ↔ x ∈ Set.pi Set.univ fun a => ↑(t a)

tactic: exact Fintype.mem_piFinset
state_before: α : Type u_2
inst✝¹ : DecidableEq α
inst✝ : Fintype α
δ : α → Type u_1
t : (a : α) → Finset (δ a)
x : (a : α) → δ a
⊢ x ∈ ↑(piFinset t) ↔ ∀ (i : α), x i ∈ ↑(t i)
Theorem: SimpleGraph.nonempty_of_pos_dist
File: Mathlib/Combinatorics/SimpleGraph/Metric.lean

tactic: simpa [Set.range_nonempty_iff_nonempty, Set.nonempty_iff_univ_nonempty] using
  Nat.nonempty_of_pos_sInf h
state_before: V : Type u_1
G : SimpleGraph V
u v : V
h : 0 < dist G u v
⊢ Set.Nonempty Set.univ
Theorem: Filter.frequently_cofinite_iff_infinite
File: Mathlib/Order/Filter/Cofinite.lean

tactic: simp only [Filter.Frequently, Filter.Eventually, mem_cofinite, compl_setOf, not_not,
  Set.Infinite]
state_before: ι : Type ?u.1622
α : Type u_1
β : Type ?u.1628
l : Filter α
p : α → Prop
⊢ (∃ᶠ (x : α) in cofinite, p x) ↔ Set.Infinite {x | p x}
Theorem: AffineMap.hasStrictDerivAt
File: Mathlib/Analysis/Calculus/Deriv/AffineMap.lean

tactic: rw [f.decomp]
state_before: 𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 →ᵃ[𝕜] E
a b : E
L : Filter 𝕜
s : Set 𝕜
x : 𝕜
⊢ HasStrictDerivAt (↑f) (↑f.linear 1) x

tactic: exact f.linear.hasStrictDerivAt.add_const (f 0)
state_before: 𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 →ᵃ[𝕜] E
a b : E
L : Filter 𝕜
s : Set 𝕜
x : 𝕜
⊢ HasStrictDerivAt (↑f.linear + fun x => ↑f 0) (↑f.linear 1) x
Theorem: Nat.ArithmeticFunction.cardFactors_apply_prime_pow
File: Mathlib/NumberTheory/ArithmeticFunction.lean

tactic: rw [cardFactors_apply, hp.factors_pow, List.length_replicate]
state_before: R : Type ?u.561753
p k : ℕ
hp : Prime p
⊢ ↑Ω (p ^ k) = k
Theorem: Polynomial.roots_pow
File: Mathlib/Data/Polynomial/RingDivision.lean

tactic: induction' n with n ihn
state_before: R : Type u
S : Type v
T : Type w
a b : R
n✝ : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p✝ q p : R[X]
n : ℕ
⊢ roots (p ^ n) = n • roots p

tactic: rw [pow_zero, roots_one, Nat.zero_eq, zero_smul, empty_eq_zero]
state_before: case zero
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p✝ q p : R[X]
⊢ roots (p ^ Nat.zero) = Nat.zero • roots p

tactic: rcases eq_or_ne p 0 with (rfl | hp)
state_before: case succ
R : Type u
S : Type v
T : Type w
a b : R
n✝ : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p✝ q p : R[X]
n : ℕ
ihn : roots (p ^ n) = n • roots p
⊢ roots (p ^ Nat.succ n) = Nat.succ n • roots p

tactic: rw [zero_pow n.succ_pos, roots_zero, smul_zero]
state_before: case succ.inl
R : Type u
S : Type v
T : Type w
a b : R
n✝ : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
n : ℕ
ihn : roots (0 ^ n) = n • roots 0
⊢ roots (0 ^ Nat.succ n) = Nat.succ n • roots 0

tactic: rw [pow_succ', roots_mul (mul_ne_zero (pow_ne_zero _ hp) hp), ihn, Nat.succ_eq_add_one,
  add_smul, one_smul]
state_before: case succ.inr
R : Type u
S : Type v
T : Type w
a b : R
n✝ : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p✝ q p : R[X]
n : ℕ
ihn : roots (p ^ n) = n • roots p
hp : p ≠ 0
⊢ roots (p ^ Nat.succ n) = Nat.succ n • roots p
Theorem: Int.cast_lt_zero
File: Mathlib/Data/Int/Cast/Lemmas.lean

tactic: rw [← cast_zero, cast_lt]
state_before: F : Type ?u.19414
ι : Type ?u.19417
α : Type u_1
β : Type ?u.19423
inst✝¹ : OrderedRing α
inst✝ : Nontrivial α
n : ℤ
⊢ ↑n < 0 ↔ n < 0
Theorem: Int.le_neg_add_of_add_le
File: Std/Data/Int/Lemmas.lean

tactic: have h := Int.add_le_add_left h (-a)
state_before: a b c : Int
h : a + b ≤ c
⊢ b ≤ -a + c

tactic: rwa [Int.neg_add_cancel_left] at h
state_before: a b c : Int
h✝ : a + b ≤ c
h : -a + (a + b) ≤ -a + c
⊢ b ≤ -a + c
Theorem: EuclideanGeometry.Sphere.secondInter_smul
File: Mathlib/Geometry/Euclidean/Sphere/SecondInter.lean

tactic: simp_rw [Sphere.secondInter, real_inner_smul_left, inner_smul_right, smul_smul,
  div_mul_eq_div_div]
state_before: V : Type u_2
P : Type u_1
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Sphere P
p : P
v : V
r : ℝ
hr : r ≠ 0
⊢ secondInter s p (r • v) = secondInter s p v

tactic: rw [mul_comm, ← mul_div_assoc, ← mul_div_assoc, mul_div_cancel_left _ hr, mul_comm, mul_assoc,
  mul_div_cancel_left _ hr, mul_comm]
state_before: V : Type u_2
P : Type u_1
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
s : Sphere P
p : P
v : V
r : ℝ
hr : r ≠ 0
⊢ (-2 * (r * inner v (p -ᵥ s.center)) / r / r / inner v v * r) • v +ᵥ p =
    (-2 * inner v (p -ᵥ s.center) / inner v v) • v +ᵥ p
Theorem: smul_sphere
File: Mathlib/Analysis/NormedSpace/Pointwise.lean

tactic: rcases eq_or_ne c 0 with (rfl | hc)
state_before: 𝕜 : Type u_2
E : Type u_1
inst✝⁴ : NormedField 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedSpace ℝ E
inst✝ : Nontrivial E
c : 𝕜
x : E
r : ℝ
hr : 0 ≤ r
⊢ c • sphere x r = sphere (c • x) (‖c‖ * r)

tactic: simp [zero_smul_set, Set.singleton_zero, hr]
state_before: case inl
𝕜 : Type u_2
E : Type u_1
inst✝⁴ : NormedField 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedSpace ℝ E
inst✝ : Nontrivial E
x : E
r : ℝ
hr : 0 ≤ r
⊢ 0 • sphere x r = sphere (0 • x) (‖0‖ * r)

tactic: exact smul_sphere' hc x r
state_before: case inr
𝕜 : Type u_2
E : Type u_1
inst✝⁴ : NormedField 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedSpace ℝ E
inst✝ : Nontrivial E
c : 𝕜
x : E
r : ℝ
hr : 0 ≤ r
hc : c ≠ 0
⊢ c • sphere x r = sphere (c • x) (‖c‖ * r)
Theorem: SSet.Augmented.StandardSimplex.shiftFun_succ
File: Mathlib/AlgebraicTopology/ExtraDegeneracy.lean

tactic: dsimp [shiftFun]
state_before: n : ℕ
X : Type u_1
inst✝ : Zero X
f : Fin n → X
i : Fin n
⊢ shiftFun f (Fin.succ i) = f i

tactic: split_ifs with h
state_before: n : ℕ
X : Type u_1
inst✝ : Zero X
f : Fin n → X
i : Fin n
⊢ (if x : Fin.succ i = 0 then 0 else f (Fin.pred (Fin.succ i) x)) = f i

tactic: exfalso
state_before: case inl
n : ℕ
X : Type u_1
inst✝ : Zero X
f : Fin n → X
i : Fin n
h : Fin.succ i = 0
⊢ 0 = f i

tactic: simp only [Fin.ext_iff, Fin.val_succ, Fin.val_zero, add_eq_zero, and_false] at h
state_before: case inl.h
n : ℕ
X : Type u_1
inst✝ : Zero X
f : Fin n → X
i : Fin n
h : Fin.succ i = 0
⊢ False

tactic: simp only [Fin.pred_succ]
state_before: case inr
n : ℕ
X : Type u_1
inst✝ : Zero X
f : Fin n → X
i : Fin n
h : ¬Fin.succ i = 0
⊢ f (Fin.pred (Fin.succ i) h) = f i
Theorem: TypeVec.eq_of_drop_last_eq
File: Mathlib/Data/TypeVec.lean

tactic: refine funext (fun x => ?_)
state_before: n : ℕ
α : TypeVec (n + 1)
β : TypeVec (n + 1)
f g : α ⟹ β
h₀ : dropFun f = dropFun g
h₁ : lastFun f = lastFun g
⊢ f = g

tactic: cases x
state_before: n : ℕ
α : TypeVec (n + 1)
β : TypeVec (n + 1)
f g : α ⟹ β
h₀ : dropFun f = dropFun g
h₁ : lastFun f = lastFun g
x : Fin2 (n + 1)
⊢ f x = g x

tactic: . apply h₁
state_before: case fz
n : ℕ
α : TypeVec (n + 1)
β : TypeVec (n + 1)
f g : α ⟹ β
h₀ : dropFun f = dropFun g
h₁ : lastFun f = lastFun g
⊢ f Fin2.fz = g Fin2.fz

case fs
n : ℕ
α : TypeVec (n + 1)
β : TypeVec (n + 1)
f g : α ⟹ β
h₀ : dropFun f = dropFun g
h₁ : lastFun f = lastFun g
a✝ : Fin2 (Nat.add n 0)
⊢ f (Fin2.fs a✝) = g (Fin2.fs a✝)

tactic: . apply congr_fun h₀
state_before: case fs
n : ℕ
α : TypeVec (n + 1)
β : TypeVec (n + 1)
f g : α ⟹ β
h₀ : dropFun f = dropFun g
h₁ : lastFun f = lastFun g
a✝ : Fin2 (Nat.add n 0)
⊢ f (Fin2.fs a✝) = g (Fin2.fs a✝)

tactic: apply h₁
state_before: case fz
n : ℕ
α : TypeVec (n + 1)
β : TypeVec (n + 1)
f g : α ⟹ β
h₀ : dropFun f = dropFun g
h₁ : lastFun f = lastFun g
⊢ f Fin2.fz = g Fin2.fz

tactic: apply congr_fun h₀
state_before: case fs
n : ℕ
α : TypeVec (n + 1)
β : TypeVec (n + 1)
f g : α ⟹ β
h₀ : dropFun f = dropFun g
h₁ : lastFun f = lastFun g
a✝ : Fin2 (Nat.add n 0)
⊢ f (Fin2.fs a✝) = g (Fin2.fs a✝)
Theorem: Ordinal.opow_mul_add_lt_opow_mul_succ
File: Mathlib/SetTheory/Ordinal/Exponential.lean

tactic: rwa [mul_succ, add_lt_add_iff_left]
state_before: b u w v : Ordinal
hw : w < b ^ u
⊢ b ^ u * v + w < b ^ u * succ v
Theorem: Set.le_chainHeight_add_nat_iff
File: Mathlib/Order/Height.lean

tactic: simp_rw [← tsub_le_iff_right, ← ENat.coe_sub, (le_chainHeight_TFAE s (n - m)).out 0 2]
state_before: α : Type u_1
β : Type ?u.9871
inst✝¹ : LT α
inst✝ : LT β
s t : Set α
l : List α
a : α
n m : ℕ
⊢ ↑n ≤ chainHeight s + ↑m ↔ ∃ l, l ∈ subchain s ∧ n ≤ length l + m
Theorem: IsUnit.dvd_mul_left
File: Mathlib/Algebra/Divisibility/Units.lean

tactic: rcases hu with ⟨u, rfl⟩
state_before: α : Type u_1
inst✝ : CommMonoid α
a b u : α
hu : IsUnit u
⊢ a ∣ u * b ↔ a ∣ b

tactic: apply Units.dvd_mul_left
state_before: case intro
α : Type u_1
inst✝ : CommMonoid α
a b : α
u : αˣ
⊢ a ∣ ↑u * b ↔ a ∣ b
Theorem: Set.smul_zero_subset
File: Mathlib/Data/Set/Pointwise/SMul.lean

tactic: simp [subset_def, mem_smul]
state_before: F : Type ?u.67549
α : Type u_1
β : Type u_2
γ : Type ?u.67558
inst✝² : Zero α
inst✝¹ : Zero β
inst✝ : SMulWithZero α β
s✝ : Set α
t : Set β
s : Set α
⊢ s • 0 ⊆ 0
Theorem: PartENat.casesOn
File: Mathlib/Data/Nat/PartENat.lean

tactic: exact PartENat.casesOn'
state_before: P : PartENat → Prop
⊢ ∀ (a : PartENat), P ⊤ → (∀ (n : ℕ), P ↑n) → P a
Theorem: Sum.update_inl_apply_inl
File: Mathlib/Data/Sum/Basic.lean

tactic: rw [← update_inl_comp_inl, Function.comp_apply]
state_before: α : Type u
α' : Type w
β : Type v
β' : Type x
γ : Type u_1
δ : Type ?u.19213
inst✝¹ : DecidableEq α
inst✝ : DecidableEq (α ⊕ β)
f : α ⊕ β → γ
i j : α
x : γ
⊢ update f (inl i) x (inl j) = update (f ∘ inl) i x j
Theorem: MeasureTheory.Lp.coeFn_nonneg
File: Mathlib/MeasureTheory/Function/LpOrder.lean

tactic: rw [← coeFn_le]
state_before: α : Type u_1
E : Type u_2
m : MeasurableSpace α
μ : Measure α
p : ℝ≥0∞
inst✝ : NormedLatticeAddCommGroup E
f : { x // x ∈ Lp E p }
⊢ 0 ≤ᵐ[μ] ↑↑f ↔ 0 ≤ f

tactic: have h0 := Lp.coeFn_zero E p μ
state_before: α : Type u_1
E : Type u_2
m : MeasurableSpace α
μ : Measure α
p : ℝ≥0∞
inst✝ : NormedLatticeAddCommGroup E
f : { x // x ∈ Lp E p }
⊢ 0 ≤ᵐ[μ] ↑↑f ↔ ↑↑0 ≤ᵐ[μ] ↑↑f

tactic: constructor <;> intro h <;> filter_upwards [h, h0] with _ _ h2
state_before: α : Type u_1
E : Type u_2
m : MeasurableSpace α
μ : Measure α
p : ℝ≥0∞
inst✝ : NormedLatticeAddCommGroup E
f : { x // x ∈ Lp E p }
h0 : ↑↑0 =ᵐ[μ] 0
⊢ 0 ≤ᵐ[μ] ↑↑f ↔ ↑↑0 ≤ᵐ[μ] ↑↑f

tactic: rwa [h2]
state_before: case h
α : Type u_1
E : Type u_2
m : MeasurableSpace α
μ : Measure α
p : ℝ≥0∞
inst✝ : NormedLatticeAddCommGroup E
f : { x // x ∈ Lp E p }
h0 : ↑↑0 =ᵐ[μ] 0
h : 0 ≤ᵐ[μ] ↑↑f
a✝¹ : α
a✝ : OfNat.ofNat 0 a✝¹ ≤ ↑↑f a✝¹
h2 : ↑↑0 a✝¹ = OfNat.ofNat 0 a✝¹
⊢ ↑↑0 a✝¹ ≤ ↑↑f a✝¹

tactic: rwa [← h2]
state_before: case h
α : Type u_1
E : Type u_2
m : MeasurableSpace α
μ : Measure α
p : ℝ≥0∞
inst✝ : NormedLatticeAddCommGroup E
f : { x // x ∈ Lp E p }
h0 : ↑↑0 =ᵐ[μ] 0
h : ↑↑0 ≤ᵐ[μ] ↑↑f
a✝¹ : α
a✝ : ↑↑0 a✝¹ ≤ ↑↑f a✝¹
h2 : ↑↑0 a✝¹ = OfNat.ofNat 0 a✝¹
⊢ OfNat.ofNat 0 a✝¹ ≤ ↑↑f a✝¹
Theorem: Metric.closedEmbedding_of_pairwise_le_dist
File: Mathlib/Topology/MetricSpace/Basic.lean

tactic: simpa using hf
state_before: α✝ : Type u
β : Type v
X : Type ?u.557273
ι : Type ?u.557276
inst✝³ : PseudoMetricSpace α✝
γ : Type w
inst✝² : MetricSpace γ
x : γ
s : Set γ
α : Type u_1
inst✝¹ : TopologicalSpace α
inst✝ : DiscreteTopology α
ε : ℝ
hε : 0 < ε
f : α → γ
hf : Pairwise fun x y => ε ≤ dist (f x) (f y)
⊢ Pairwise fun x y => ¬(f x, f y) ∈ {p | dist p.fst p.snd < ε}
Theorem: MeasureTheory.ProbabilityMeasure.coeFn_univ_ne_zero
File: Mathlib/MeasureTheory/Measure/ProbabilityMeasure.lean

tactic: simp only [coeFn_univ, Ne.def, one_ne_zero, not_false_iff]
state_before: Ω : Type u_1
inst✝ : MeasurableSpace Ω
ν : ProbabilityMeasure Ω
⊢ (fun s => ENNReal.toNNReal (↑↑↑ν s)) univ ≠ 0
Theorem: Polynomial.map_toSubring
File: Mathlib/RingTheory/Polynomial/Basic.lean

tactic: ext n
state_before: R : Type u
S : Type ?u.101158
inst✝¹ : Ring R
inst✝ : Semiring S
f : R →+* S
x : S
p : R[X]
T : Subring R
hp : ↑(frange p) ⊆ ↑T
⊢ map (Subring.subtype T) (toSubring p T hp) = p

tactic: simp [coeff_map]
state_before: case a
R : Type u
S : Type ?u.101158
inst✝¹ : Ring R
inst✝ : Semiring S
f : R →+* S
x : S
p : R[X]
T : Subring R
hp : ↑(frange p) ⊆ ↑T
n : ℕ
⊢ coeff (map (Subring.subtype T) (toSubring p T hp)) n = coeff p n