tasksource/leandojo huggingface dataset:
Theorem: MeasureTheory.restrict_dirac
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: ext1 t ht
state_before: α : Type u_1
mα : MeasurableSpace α
a : α
s : Set α
inst✝¹ : MeasurableSingletonClass α
inst✝ : Decidable (a ∈ s)
⊢ Measure.restrict (Measure.dirac a) s = if a ∈ s then Measure.dirac a else 0

tactic: simp only [Measure.restrict_apply ht, Measure.dirac_apply a, Set.indicator_apply,
  Set.mem_inter_iff, Pi.one_apply]
state_before: case h
α : Type u_1
mα : MeasurableSpace α
a : α
s : Set α
inst✝¹ : MeasurableSingletonClass α
inst✝ : Decidable (a ∈ s)
t : Set α
ht : MeasurableSet t
⊢ ↑↑(Measure.restrict (Measure.dirac a) s) t = ↑↑(if a ∈ s then Measure.dirac a else 0) t

tactic: by_cases has : a ∈ s
state_before: case h
α : Type u_1
mα : MeasurableSpace α
a : α
s : Set α
inst✝¹ : MeasurableSingletonClass α
inst✝ : Decidable (a ∈ s)
t : Set α
ht : MeasurableSet t
⊢ (if a ∈ t ∧ a ∈ s then 1 else 0) = ↑↑(if a ∈ s then Measure.dirac a else 0) t

tactic: simp only [has, and_true_iff, if_true]
state_before: case pos
α : Type u_1
mα : MeasurableSpace α
a : α
s : Set α
inst✝¹ : MeasurableSingletonClass α
inst✝ : Decidable (a ∈ s)
t : Set α
ht : MeasurableSet t
has : a ∈ s
⊢ (if a ∈ t ∧ a ∈ s then 1 else 0) = ↑↑(if a ∈ s then Measure.dirac a else 0) t

tactic: split_ifs with hat
state_before: case pos
α : Type u_1
mα : MeasurableSpace α
a : α
s : Set α
inst✝¹ : MeasurableSingletonClass α
inst✝ : Decidable (a ∈ s)
t : Set α
ht : MeasurableSet t
has : a ∈ s
⊢ (if a ∈ t then 1 else 0) = ↑↑(Measure.dirac a) t

tactic: rw [Measure.dirac_apply_of_mem hat]
state_before: case pos.inl
α : Type u_1
mα : MeasurableSpace α
a : α
s : Set α
inst✝¹ : MeasurableSingletonClass α
inst✝ : Decidable (a ∈ s)
t : Set α
ht : MeasurableSet t
has : a ∈ s
hat : a ∈ t
⊢ 1 = ↑↑(Measure.dirac a) t

tactic: simp only [Measure.dirac_apply' _ ht, Set.indicator_apply, hat, if_false]
state_before: case pos.inr
α : Type u_1
mα : MeasurableSpace α
a : α
s : Set α
inst✝¹ : MeasurableSingletonClass α
inst✝ : Decidable (a ∈ s)
t : Set α
ht : MeasurableSet t
has : a ∈ s
hat : ¬a ∈ t
⊢ 0 = ↑↑(Measure.dirac a) t

tactic: simp only [has, and_false_iff, if_false, Measure.coe_zero, Pi.zero_apply]
state_before: case neg
α : Type u_1
mα : MeasurableSpace α
a : α
s : Set α
inst✝¹ : MeasurableSingletonClass α
inst✝ : Decidable (a ∈ s)
t : Set α
ht : MeasurableSet t
has : ¬a ∈ s
⊢ (if a ∈ t ∧ a ∈ s then 1 else 0) = ↑↑(if a ∈ s then Measure.dirac a else 0) t
Theorem: Cycle.reverse_reverse
File: Mathlib/Data/List/Cycle.lean

tactic: simp
state_before: α : Type u_1
s : Cycle α
x✝ : List α
⊢ reverse (reverse (Quot.mk Setoid.r x✝)) = Quot.mk Setoid.r x✝
Theorem: Stream'.Seq.le_stable
File: Mathlib/Data/Seq/Seq.lean

tactic: cases' s with f al
state_before: α : Type u
β : Type v
γ : Type w
s : Seq α
m n : ℕ
h : m ≤ n
⊢ get? s m = none → get? s n = none

tactic: induction' h with n _ IH
state_before: case mk
α : Type u
β : Type v
γ : Type w
m n : ℕ
h : m ≤ n
f : Stream' (Option α)
al : IsSeq f
⊢ get? { val := f, property := al } m = none → get? { val := f, property := al } n = none

tactic: exacts [id, fun h2 => al (IH h2)]
state_before: case mk.refl
α : Type u
β : Type v
γ : Type w
m n : ℕ
f : Stream' (Option α)
al : IsSeq f
⊢ get? { val := f, property := al } m = none → get? { val := f, property := al } m = none

case mk.step
α : Type u
β : Type v
γ : Type w
m n✝ : ℕ
f : Stream' (Option α)
al : IsSeq f
n : ℕ
a✝ : Nat.le m n
IH : get? { val := f, property := al } m = none → get? { val := f, property := al } n = none
⊢ get? { val := f, property := al } m = none → get? { val := f, property := al } (Nat.succ n) = none
Theorem: CategoryTheory.Limits.epi_of_epi_image
File: Mathlib/CategoryTheory/Limits/Shapes/Images.lean

tactic: rw [← image.fac f]
state_before: C : Type u
inst✝³ : Category C
X✝ Y✝ : C
f✝ : X✝ ⟶ Y✝
X Y : C
f : X ⟶ Y
inst✝² : HasImage f
inst✝¹ : Epi (image.ι f)
inst✝ : Epi (factorThruImage f)
⊢ Epi f

tactic: apply epi_comp
state_before: C : Type u
inst✝³ : Category C
X✝ Y✝ : C
f✝ : X✝ ⟶ Y✝
X Y : C
f : X ⟶ Y
inst✝² : HasImage f
inst✝¹ : Epi (image.ι f)
inst✝ : Epi (factorThruImage f)
⊢ Epi (factorThruImage f ≫ image.ι f)
Theorem: BilinForm.compLeft_id
File: Mathlib/LinearAlgebra/BilinearForm.lean

tactic: ext
state_before: R : Type u_1
M : Type u_2
inst✝¹⁶ : Semiring R
inst✝¹⁵ : AddCommMonoid M
inst✝¹⁴ : Module R M
R₁ : Type ?u.513776
M₁ : Type ?u.513779
inst✝¹³ : Ring R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
R₂ : Type ?u.514388
M₂ : Type ?u.514391
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type ?u.514578
M₃ : Type ?u.514581
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type ?u.515169
K : Type ?u.515172
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
M' : Type w
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
B : BilinForm R M
⊢ compLeft B LinearMap.id = B

tactic: rfl
state_before: case H
R : Type u_1
M : Type u_2
inst✝¹⁶ : Semiring R
inst✝¹⁵ : AddCommMonoid M
inst✝¹⁴ : Module R M
R₁ : Type ?u.513776
M₁ : Type ?u.513779
inst✝¹³ : Ring R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
R₂ : Type ?u.514388
M₂ : Type ?u.514391
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type ?u.514578
M₃ : Type ?u.514581
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type ?u.515169
K : Type ?u.515172
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
M' : Type w
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
B : BilinForm R M
x✝ y✝ : M
⊢ bilin (compLeft B LinearMap.id) x✝ y✝ = bilin B x✝ y✝
Theorem: Real.tendsto_tan_neg_pi_div_two
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: convert tendsto_cos_neg_pi_div_two.inv_tendsto_zero.atTop_mul_neg (by norm_num)
    tendsto_sin_neg_pi_div_two using 1
state_before: ⊢ Tendsto tan (𝓝[Ioi (-(π / 2))] (-(π / 2))) atBot

tactic: simp only [Pi.inv_apply, ← div_eq_inv_mul, ← tan_eq_sin_div_cos]
state_before: case h.e'_3

⊢ tan = fun x => cos⁻¹ x * sin x

tactic: norm_num
state_before: ⊢ -1 < 0
Theorem: padicNorm.int_lt_one_iff
File: Mathlib/NumberTheory/Padics/PadicNorm.lean

tactic: rw [← not_iff_not, ← int_eq_one_iff, eq_iff_le_not_lt]
state_before: p : ℕ
hp : Fact (Nat.Prime p)
m : ℤ
⊢ padicNorm p ↑m < 1 ↔ ↑p ∣ m

tactic: simp only [padicNorm.of_int, true_and_iff]
state_before: p : ℕ
hp : Fact (Nat.Prime p)
m : ℤ
⊢ ¬padicNorm p ↑m < 1 ↔ padicNorm p ↑m ≤ 1 ∧ ¬padicNorm p ↑m < 1
Theorem: Polynomial.derivative_eval₂_C
File: Mathlib/Data/Polynomial/Derivative.lean

tactic: rw [eval₂_C, derivative_C, eval₂_zero, zero_mul]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n : ℕ
inst✝ : CommSemiring R
p q : R[X]
r : R
⊢ ↑derivative (eval₂ C q (↑C r)) = eval₂ C q (↑derivative (↑C r)) * ↑derivative q

tactic: rw [eval₂_add, derivative_add, ih₁, ih₂, derivative_add, eval₂_add, add_mul]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n : ℕ
inst✝ : CommSemiring R
p q p₁ p₂ : R[X]
ih₁ : ↑derivative (eval₂ C q p₁) = eval₂ C q (↑derivative p₁) * ↑derivative q
ih₂ : ↑derivative (eval₂ C q p₂) = eval₂ C q (↑derivative p₂) * ↑derivative q
⊢ ↑derivative (eval₂ C q (p₁ + p₂)) = eval₂ C q (↑derivative (p₁ + p₂)) * ↑derivative q

tactic: rw [pow_succ', ← mul_assoc, eval₂_mul, eval₂_X, derivative_mul, ih, @derivative_mul _ _ _ X,
  derivative_X, mul_one, eval₂_add, @eval₂_mul _ _ _ _ X, eval₂_X, add_mul, mul_right_comm]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n✝ : ℕ
inst✝ : CommSemiring R
p q : R[X]
n : ℕ
r : R
ih : ↑derivative (eval₂ C q (↑C r * X ^ n)) = eval₂ C q (↑derivative (↑C r * X ^ n)) * ↑derivative q
⊢ ↑derivative (eval₂ C q (↑C r * X ^ (n + 1))) = eval₂ C q (↑derivative (↑C r * X ^ (n + 1))) * ↑derivative q
Theorem: Rel.interedges_biUnion_right
File: Mathlib/Combinatorics/SimpleGraph/Density.lean

tactic: ext a
state_before: 𝕜 : Type ?u.10244
ι : Type u_2
κ : Type ?u.10250
α : Type u_1
β : Type u_3
inst✝³ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝² : (a : α) → DecidablePred (r a)
s✝ s₁ s₂ : Finset α
t✝ t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
s : Finset α
t : Finset ι
f : ι → Finset β
⊢ interedges r s (Finset.biUnion t f) = Finset.biUnion t fun b => interedges r s (f b)

tactic: simp only [mem_interedges_iff, mem_biUnion]
state_before: case a
𝕜 : Type ?u.10244
ι : Type u_2
κ : Type ?u.10250
α : Type u_1
β : Type u_3
inst✝³ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝² : (a : α) → DecidablePred (r a)
s✝ s₁ s₂ : Finset α
t✝ t₁ t₂ : Finset β
a✝ : α
b : β
δ : 𝕜
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
s : Finset α
t : Finset ι
f : ι → Finset β
a : α × β
⊢ a ∈ interedges r s (Finset.biUnion t f) ↔ a ∈ Finset.biUnion t fun b => interedges r s (f b)

tactic: exact ⟨fun ⟨x₁, ⟨x₂, x₃, x₄⟩, x₅⟩ ↦ ⟨x₂, x₃, x₁, x₄, x₅⟩,
  fun ⟨x₂, x₃, x₁, x₄, x₅⟩ ↦ ⟨x₁, ⟨x₂, x₃, x₄⟩, x₅⟩⟩
state_before: case a
𝕜 : Type ?u.10244
ι : Type u_2
κ : Type ?u.10250
α : Type u_1
β : Type u_3
inst✝³ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝² : (a : α) → DecidablePred (r a)
s✝ s₁ s₂ : Finset α
t✝ t₁ t₂ : Finset β
a✝ : α
b : β
δ : 𝕜
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
s : Finset α
t : Finset ι
f : ι → Finset β
a : α × β
⊢ a.fst ∈ s ∧ (∃ a_1, a_1 ∈ t ∧ a.snd ∈ f a_1) ∧ r a.fst a.snd ↔
    ∃ a_1, a_1 ∈ t ∧ a.fst ∈ s ∧ a.snd ∈ f a_1 ∧ r a.fst a.snd
Theorem: dvd_sub_right
File: Mathlib/Algebra/Ring/Divisibility.lean

tactic: rw [sub_eq_add_neg, dvd_add_right h, dvd_neg (α := α)]
state_before: α : Type u_1
β : Type ?u.10914
inst✝ : NonUnitalRing α
a b c : α
h : a ∣ b
⊢ a ∣ b - c ↔ a ∣ c
Theorem: ENNReal.tsum_add_one_eq_top
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: rw [tsum_eq_zero_add' ENNReal.summable, add_eq_top] at hf
state_before: α : Type ?u.300385
β : Type ?u.300388
γ : Type ?u.300391
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f✝ g : α → ℝ≥0∞
f : ℕ → ℝ≥0∞
hf : (∑' (n : ℕ), f n) = ⊤
hf0 : f 0 ≠ ⊤
⊢ (∑' (n : ℕ), f (n + 1)) = ⊤

tactic: exact hf.resolve_left hf0
state_before: α : Type ?u.300385
β : Type ?u.300388
γ : Type ?u.300391
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f✝ g : α → ℝ≥0∞
f : ℕ → ℝ≥0∞
hf : f 0 = ⊤ ∨ (∑' (b : ℕ), f (b + 1)) = ⊤
hf0 : f 0 ≠ ⊤
⊢ (∑' (n : ℕ), f (n + 1)) = ⊤
Theorem: Real.bounded_iff_bddBelow_bddAbove
File: Mathlib/Topology/Instances/Real.lean

tactic: intro bdd
state_before: α : Type u
β : Type v
γ : Type w
s : Set ℝ
⊢ Metric.Bounded s → BddBelow s ∧ BddAbove s

tactic: rcases (bounded_iff_subset_ball 0).1 bdd with ⟨r, hr⟩
state_before: α : Type u
β : Type v
γ : Type w
s : Set ℝ
bdd : Metric.Bounded s
⊢ BddBelow s ∧ BddAbove s

tactic: rw [Real.closedBall_eq_Icc] at hr
state_before: case intro
α : Type u
β : Type v
γ : Type w
s : Set ℝ
bdd : Metric.Bounded s
r : ℝ
hr : s ⊆ closedBall 0 r
⊢ BddBelow s ∧ BddAbove s

tactic: exact ⟨bddBelow_Icc.mono hr, bddAbove_Icc.mono hr⟩
state_before: case intro
α : Type u
β : Type v
γ : Type w
s : Set ℝ
bdd : Metric.Bounded s
r : ℝ
hr : s ⊆ Icc (0 - r) (0 + r)
⊢ BddBelow s ∧ BddAbove s

α : Type u
β : Type v
γ : Type w
s : Set ℝ
bdd : Metric.Bounded s
⊢ OfNat ℝ 0
Theorem: Cardinal.cantor'
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: rw [← succ_le_iff, (by norm_cast : succ (1 : Cardinal) = 2)] at hb
state_before: α β : Type u
a b : Cardinal
hb : 1 < b
⊢ a < b ^ a

tactic: exact (cantor a).trans_le (power_le_power_right hb)
state_before: α β : Type u
a b : Cardinal
hb✝ : 1 < b
hb : 2 ≤ b
⊢ a < b ^ a

tactic: norm_cast
state_before: α β : Type u
a b : Cardinal
hb✝ : 1 < b
hb : succ 1 ≤ b
⊢ succ 1 = 2
Theorem: Real.IsConjugateExponent.symm
File: Mathlib/Data/Real/ConjugateExponents.lean

tactic: rw [h.conj_eq]
state_before: p q : ℝ
h : IsConjugateExponent p q
⊢ 1 < q

tactic: exact (one_lt_div h.sub_one_pos).mpr (sub_one_lt p)
state_before: p q : ℝ
h : IsConjugateExponent p q
⊢ 1 < p / (p - 1)

tactic: simpa [add_comm] using h.inv_add_inv_conj
state_before: p q : ℝ
h : IsConjugateExponent p q
⊢ 1 / q + 1 / p = 1
Theorem: Nat.pred_sub
File: Mathlib/Data/Nat/Basic.lean

tactic: rw [← Nat.sub_one, Nat.sub_sub, one_add, sub_succ]
state_before: m✝ n✝ k n m : ℕ
⊢ pred n - m = pred (n - m)
Theorem: AbstractCompletion.map_unique
File: Mathlib/Topology/UniformSpace/AbstractCompletion.lean

tactic: intro a
state_before: α : Type u_1
inst✝¹ : UniformSpace α
pkg : AbstractCompletion α
β : Type u_2
inst✝ : UniformSpace β
pkg' : AbstractCompletion β
f✝ f : α → β
g : pkg.space → pkg'.space
hg : UniformContinuous g
h : ∀ (a : α), coe pkg' (f a) = g (coe pkg a)
⊢ ∀ (a : α), AbstractCompletion.map pkg pkg' f (coe pkg a) = g (coe pkg a)

tactic: change pkg.extend (ι' ∘ f) _ = _
state_before: α : Type u_1
inst✝¹ : UniformSpace α
pkg : AbstractCompletion α
β : Type u_2
inst✝ : UniformSpace β
pkg' : AbstractCompletion β
f✝ f : α → β
g : pkg.space → pkg'.space
hg : UniformContinuous g
h : ∀ (a : α), coe pkg' (f a) = g (coe pkg a)
a : α
⊢ AbstractCompletion.map pkg pkg' f (coe pkg a) = g (coe pkg a)

tactic: rw [pkg.extend_coe (hg.comp pkg.uniformContinuous_coe)]
state_before: α : Type u_1
inst✝¹ : UniformSpace α
pkg : AbstractCompletion α
β : Type u_2
inst✝ : UniformSpace β
pkg' : AbstractCompletion β
f✝ f : α → β
g : pkg.space → pkg'.space
hg : UniformContinuous g
h : ∀ (a : α), coe pkg' (f a) = g (coe pkg a)
a : α
⊢ AbstractCompletion.extend pkg (fun x => (g ∘ pkg.coe) x) (coe pkg a) = (g ∘ pkg.coe) a
Theorem: not_inseparable_iff_exists_open
File: Mathlib/Topology/Inseparable.lean

tactic: simp [inseparable_iff_forall_open, ← xor_iff_not_iff]
state_before: X : Type u_1
Y : Type ?u.28647
Z : Type ?u.28650
α : Type ?u.28653
ι : Type ?u.28656
π : ι → Type ?u.28661
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : (i : ι) → TopologicalSpace (π i)
x y z : X
s : Set X
f : X → Y
⊢ ¬(x ~ᵢ y) ↔ ∃ s, IsOpen s ∧ Xor' (x ∈ s) (y ∈ s)
Theorem: MeasureTheory.snorm'_congr_nnnorm_ae
File: Mathlib/MeasureTheory/Function/LpSeminorm.lean

tactic: have : (fun x => (‖f x‖₊ : ℝ≥0∞) ^ q) =ᵐ[μ] fun x => (‖g x‖₊ : ℝ≥0∞) ^ q :=
  hfg.mono fun x hx => by simp_rw [hx]
state_before: α : Type u_1
E : Type ?u.1276212
F : Type u_2
G : Type ?u.1276218
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f g : α → F
hfg : ∀ᵐ (x : α) ∂μ, ‖f x‖₊ = ‖g x‖₊
⊢ snorm' f q μ = snorm' g q μ

tactic: simp only [snorm', lintegral_congr_ae this]
state_before: α : Type u_1
E : Type ?u.1276212
F : Type u_2
G : Type ?u.1276218
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f g : α → F
hfg : ∀ᵐ (x : α) ∂μ, ‖f x‖₊ = ‖g x‖₊
this : (fun x => ↑‖f x‖₊ ^ q) =ᵐ[μ] fun x => ↑‖g x‖₊ ^ q
⊢ snorm' f q μ = snorm' g q μ

tactic: simp_rw [hx]
state_before: α : Type u_1
E : Type ?u.1276212
F : Type u_2
G : Type ?u.1276218
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f g : α → F
hfg : ∀ᵐ (x : α) ∂μ, ‖f x‖₊ = ‖g x‖₊
x : α
hx : ‖f x‖₊ = ‖g x‖₊
⊢ (fun x => ↑‖f x‖₊ ^ q) x = (fun x => ↑‖g x‖₊ ^ q) x
Theorem: unitInterval.mul_pos_mem_iff
File: Mathlib/Topology/UnitInterval.lean

tactic: constructor <;> rintro ⟨h₁, h₂⟩ <;> constructor
state_before: a t : ℝ
ha : 0 < a
⊢ a * t ∈ I ↔ t ∈ Icc 0 (1 / a)

tactic: exact nonneg_of_mul_nonneg_right h₁ ha
state_before: case mp.intro.left
a t : ℝ
ha : 0 < a
h₁ : 0 ≤ a * t
h₂ : a * t ≤ 1
⊢ 0 ≤ t

tactic: rwa [le_div_iff ha, mul_comm]
state_before: case mp.intro.right
a t : ℝ
ha : 0 < a
h₁ : 0 ≤ a * t
h₂ : a * t ≤ 1
⊢ t ≤ 1 / a

tactic: exact mul_nonneg ha.le h₁
state_before: case mpr.intro.left
a t : ℝ
ha : 0 < a
h₁ : 0 ≤ t
h₂ : t ≤ 1 / a
⊢ 0 ≤ a * t

tactic: rwa [le_div_iff ha, mul_comm] at h₂
state_before: case mpr.intro.right
a t : ℝ
ha : 0 < a
h₁ : 0 ≤ t
h₂ : t ≤ 1 / a
⊢ a * t ≤ 1
Theorem: Finset.biUnion_image_right
File: Mathlib/Data/Finset/NAry.lean

tactic: push_cast
state_before: α : Type u_3
α' : Type ?u.57542
β : Type u_2
β' : Type ?u.57548
γ : Type u_1
γ' : Type ?u.57554
δ : Type ?u.57557
δ' : Type ?u.57560
ε : Type ?u.57563
ε' : Type ?u.57566
ζ : Type ?u.57569
ζ' : Type ?u.57572
ν : Type ?u.57575
inst✝⁷ : DecidableEq α'
inst✝⁶ : DecidableEq β'
inst✝⁵ : DecidableEq γ
inst✝⁴ : DecidableEq γ'
inst✝³ : DecidableEq δ
inst✝² : DecidableEq δ'
inst✝¹ : DecidableEq ε
inst✝ : DecidableEq ε'
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Finset α
t t' : Finset β
u u' : Finset γ
a a' : α
b b' : β
c : γ
⊢ ↑(Finset.biUnion t fun b => image (fun a => f a b) s) = ↑(image₂ f s t)

tactic: exact Set.iUnion_image_right _
state_before: α : Type u_3
α' : Type ?u.57542
β : Type u_2
β' : Type ?u.57548
γ : Type u_1
γ' : Type ?u.57554
δ : Type ?u.57557
δ' : Type ?u.57560
ε : Type ?u.57563
ε' : Type ?u.57566
ζ : Type ?u.57569
ζ' : Type ?u.57572
ν : Type ?u.57575
inst✝⁷ : DecidableEq α'
inst✝⁶ : DecidableEq β'
inst✝⁵ : DecidableEq γ
inst✝⁴ : DecidableEq γ'
inst✝³ : DecidableEq δ
inst✝² : DecidableEq δ'
inst✝¹ : DecidableEq ε
inst✝ : DecidableEq ε'
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Finset α
t t' : Finset β
u u' : Finset γ
a a' : α
b b' : β
c : γ
⊢ (⋃ (x : β) (_ : x ∈ ↑t), (fun a => f a x) '' ↑s) = image2 f ↑s ↑t
Theorem: ContDiffAt.smul
File: Mathlib/Analysis/Calculus/ContDiff.lean

tactic: rw [← contDiffWithinAt_univ] at *
state_before: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
D : Type uD
inst✝⁹ : NormedAddCommGroup D
inst✝⁸ : NormedSpace 𝕜 D
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type ?u.2023394
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f✝ f₁ : E → F
g✝ : F → G
x x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
f : E → 𝕜
g : E → F
hf : ContDiffAt 𝕜 n f x
hg : ContDiffAt 𝕜 n g x
⊢ ContDiffAt 𝕜 n (fun x => f x • g x) x

tactic: exact hf.smul hg
state_before: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
D : Type uD
inst✝⁹ : NormedAddCommGroup D
inst✝⁸ : NormedSpace 𝕜 D
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type ?u.2023394
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f✝ f₁ : E → F
g✝ : F → G
x x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
f : E → 𝕜
g : E → F
hf : ContDiffWithinAt 𝕜 n f univ x
hg : ContDiffWithinAt 𝕜 n g univ x
⊢ ContDiffWithinAt 𝕜 n (fun x => f x • g x) univ x
Theorem: Finsupp.support_subtypeDomain
File: Mathlib/Data/Finsupp/Basic.lean

tactic: rw [Subsingleton.elim D] <;> rfl
state_before: α : Type u_1
β : Type ?u.485392
γ : Type ?u.485395
ι : Type ?u.485398
M : Type u_2
M' : Type ?u.485404
N : Type ?u.485407
P : Type ?u.485410
G : Type ?u.485413
H : Type ?u.485416
R : Type ?u.485419
S : Type ?u.485422
inst✝ : Zero M
p : α → Prop
D : DecidablePred p
f : α →₀ M
⊢ (subtypeDomain p f).support = Finset.subtype p f.support
Theorem: interior_prod_eq
File: Mathlib/Topology/Constructions.lean

tactic: simp only [mem_interior_iff_mem_nhds, mem_prod, prod_mem_nhds_iff]
state_before: α : Type u
β : Type v
γ : Type ?u.60232
δ : Type ?u.60235
ε : Type ?u.60238
ζ : Type ?u.60241
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
inst✝² : TopologicalSpace δ
inst✝¹ : TopologicalSpace ε
inst✝ : TopologicalSpace ζ
s : Set α
t : Set β
x✝ : α × β
a : α
b : β
⊢ (a, b) ∈ interior (s ×ˢ t) ↔ (a, b) ∈ interior s ×ˢ interior t
Theorem: List.Chain'.length_div_two_le_count_bool
File: Mathlib/Data/Bool/Count.lean

tactic: rw [Nat.div_le_iff_le_mul_add_pred two_pos, ← tsub_le_iff_right]
state_before: l : List Bool
hl : Chain' (fun x x_1 => x ≠ x_1) l
b : Bool
⊢ length l / 2 ≤ count b l

tactic: exact length_sub_one_le_two_mul_count_bool hl b
state_before: l : List Bool
hl : Chain' (fun x x_1 => x ≠ x_1) l
b : Bool
⊢ length l - (2 - 1) ≤ 2 * count b l
Theorem: norm_add_sq_eq_norm_sq_add_norm_sq_of_inner_eq_zero
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: rw [@norm_add_mul_self 𝕜, add_right_cancel_iff, add_right_eq_self, mul_eq_zero]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.3108160
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
dec_E : DecidableEq E
x y : E
h : inner x y = 0
⊢ ‖x + y‖ * ‖x + y‖ = ‖x‖ * ‖x‖ + ‖y‖ * ‖y‖

tactic: apply Or.inr
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.3108160
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
dec_E : DecidableEq E
x y : E
h : inner x y = 0
⊢ 2 = 0 ∨ ↑re (inner x y) = 0

tactic: simp only [h, zero_re']
state_before: case h
𝕜 : Type u_1
E : Type u_2
F : Type ?u.3108160
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
dec_E : DecidableEq E
x y : E
h : inner x y = 0
⊢ ↑re (inner x y) = 0
Theorem: Set.mulIndicator_diff
File: Mathlib/Algebra/IndicatorFunction.lean

tactic: rw [Pi.mul_def, ← mulIndicator_union_of_disjoint, diff_union_self,
  union_eq_self_of_subset_right h]
state_before: α : Type u_1
β : Type ?u.96997
ι : Type ?u.97000
M : Type ?u.97003
N : Type ?u.97006
G : Type u_2
inst✝ : Group G
s t : Set α
f✝ g : α → G
a : α
h : s ⊆ t
f : α → G
⊢ mulIndicator (t \ s) f * mulIndicator s f = mulIndicator t f

tactic: exact disjoint_sdiff_self_left
state_before: case h
α : Type u_1
β : Type ?u.96997
ι : Type ?u.97000
M : Type ?u.97003
N : Type ?u.97006
G : Type u_2
inst✝ : Group G
s t : Set α
f✝ g : α → G
a : α
h : s ⊆ t
f : α → G
⊢ Disjoint (t \ s) s
Theorem: Finset.fiber_nonempty_iff_mem_image
File: Mathlib/Data/Finset/Image.lean

tactic: simp [Finset.Nonempty]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.71261
inst✝ : DecidableEq β
f✝ g : α → β
s✝ : Finset α
t : Finset β
a : α
b c : β
f : α → β
s : Finset α
y : β
⊢ Finset.Nonempty (filter (fun x => f x = y) s) ↔ y ∈ image f s
Theorem: Cycle.Nodup.nontrivial_iff
File: Mathlib/Data/List/Cycle.lean

tactic: rw [length_subsingleton_iff]
state_before: α : Type u_1
s : Cycle α
h : Nodup s
⊢ Nontrivial s ↔ ¬Subsingleton s

tactic: induction s using Quotient.inductionOn'
state_before: α : Type u_1
s : Cycle α
h : Nodup s
⊢ Nontrivial s ↔ ¬length s ≤ 1

tactic: simp only [mk''_eq_coe, nodup_coe_iff] at h
state_before: case h
α : Type u_1
a✝ : List α
h : Nodup (Quotient.mk'' a✝)
⊢ Nontrivial (Quotient.mk'' a✝) ↔ ¬length (Quotient.mk'' a✝) ≤ 1

tactic: simp [h, Nat.succ_le_iff]
state_before: case h
α : Type u_1
a✝ : List α
h : List.Nodup a✝
⊢ Nontrivial (Quotient.mk'' a✝) ↔ ¬length (Quotient.mk'' a✝) ≤ 1
Theorem: LinearMap.IsAdjointPair.comp
File: Mathlib/LinearAlgebra/SesquilinearForm.lean

tactic: rw [LinearMap.comp_apply, LinearMap.comp_apply, h', h]
state_before: R : Type u_1
R₁ : Type ?u.317511
R₂ : Type ?u.317514
R₃ : Type ?u.317517
M : Type u_4
M₁ : Type u_2
M₂ : Type u_3
Mₗ₁ : Type ?u.317529
Mₗ₁' : Type ?u.317532
Mₗ₂ : Type ?u.317535
Mₗ₂' : Type ?u.317538
K : Type ?u.317541
K₁ : Type ?u.317544
K₂ : Type ?u.317547
V : Type ?u.317550
V₁ : Type ?u.317553
V₂ : Type ?u.317556
n : Type ?u.317559
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid M₁
inst✝² : Module R M₁
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
I : R →+* R
B F : M →ₗ[R] M →ₛₗ[I] R
B' : M₁ →ₗ[R] M₁ →ₛₗ[I] R
B'' : M₂ →ₗ[R] M₂ →ₛₗ[I] R
f f'✝ : M →ₗ[R] M₁
g g'✝ : M₁ →ₗ[R] M
f' : M₁ →ₗ[R] M₂
g' : M₂ →ₗ[R] M₁
h : IsAdjointPair B B' f g
h' : IsAdjointPair B' B'' f' g'
x✝¹ : M
x✝ : M₂
⊢ ↑(↑B'' (↑(LinearMap.comp f' f) x✝¹)) x✝ = ↑(↑B x✝¹) (↑(LinearMap.comp g g') x✝)