tasksource/leandojo huggingface dataset:
Theorem: Besicovitch.ae_tendsto_measure_inter_div
File: Mathlib/MeasureTheory/Covering/Besicovitch.lean

tactic: filter_upwards [VitaliFamily.ae_tendsto_measure_inter_div (Besicovitch.vitaliFamily μ) s] with x
  hx using hx.comp (tendsto_filterAt μ x)
state_before: α : Type ?u.1407422
inst✝¹⁰ : MetricSpace α
β : Type u
inst✝⁹ : SecondCountableTopology α
inst✝⁸ : MeasurableSpace α
inst✝⁷ : OpensMeasurableSpace α
inst✝⁶ : HasBesicovitchCovering α
inst✝⁵ : MetricSpace β
inst✝⁴ : MeasurableSpace β
inst✝³ : BorelSpace β
inst✝² : SecondCountableTopology β
inst✝¹ : HasBesicovitchCovering β
μ : MeasureTheory.Measure β
inst✝ : IsLocallyFiniteMeasure μ
s : Set β
⊢ ∀ᵐ (x : β) ∂Measure.restrict μ s,
    Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 1)
Theorem: Set.image_seq
File: Mathlib/Data/Set/Lattice.lean

tactic: rw [← singleton_seq, ← singleton_seq, seq_seq, image_singleton]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort ?u.274141
ι' : Sort ?u.274144
ι₂ : Sort ?u.274147
κ : ι → Sort ?u.274152
κ₁ : ι → Sort ?u.274157
κ₂ : ι → Sort ?u.274162
κ' : ι' → Sort ?u.274167
f : β → γ
s : Set (α → β)
t : Set α
⊢ f '' seq s t = seq ((fun x x_1 => x ∘ x_1) f '' s) t
Theorem: Set.infinite_of_finite_compl
File: Mathlib/Data/Set/Finite.lean

tactic: simpa using hs.union h
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
inst✝ : Infinite α
s : Set α
hs : Set.Finite (sᶜ)
h : Set.Finite s
⊢ Set.Finite univ
Theorem: Polynomial.eval₂_at_one
File: Mathlib/Data/Polynomial/Eval.lean

tactic: convert eval₂_at_apply (p := p) f 1
state_before: R : Type u
S✝ : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝¹ : Semiring R
p q r : R[X]
x : R
S : Type u_1
inst✝ : Semiring S
f : R →+* S
⊢ eval₂ f 1 p = ↑f (eval 1 p)

tactic: simp
state_before: case h.e'_2.h.e'_6
R : Type u
S✝ : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝¹ : Semiring R
p q r : R[X]
x : R
S : Type u_1
inst✝ : Semiring S
f : R →+* S
⊢ 1 = ↑f 1
Theorem: BoxIntegral.Prepartition.iUnion_restrict
File: Mathlib/Analysis/BoxIntegral/Partition/Basic.lean

tactic: simp [restrict, ← inter_iUnion, ← iUnion_def]
state_before: ι : Type u_1
I J J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x : ι → ℝ
πi πi₁ πi₂ : (J : Box ι) → Prepartition J
⊢ Prepartition.iUnion (restrict π J) = ↑J ∩ Prepartition.iUnion π
Theorem: Submodule.finrank_add_inf_finrank_orthogonal'
File: Mathlib/Analysis/InnerProductSpace/Projection.lean

tactic: rw [← add_right_inj (finrank 𝕜 K₁)]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.998953
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K K₁ K₂ : Submodule 𝕜 E
inst✝ : FiniteDimensional 𝕜 { x // x ∈ K₂ }
h : K₁ ≤ K₂
n : ℕ
h_dim : finrank 𝕜 { x // x ∈ K₁ } + n = finrank 𝕜 { x // x ∈ K₂ }
⊢ finrank 𝕜 { x // x ∈ K₁ᗮ ⊓ K₂ } = n

tactic: simp [Submodule.finrank_add_inf_finrank_orthogonal h, h_dim]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.998953
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K K₁ K₂ : Submodule 𝕜 E
inst✝ : FiniteDimensional 𝕜 { x // x ∈ K₂ }
h : K₁ ≤ K₂
n : ℕ
h_dim : finrank 𝕜 { x // x ∈ K₁ } + n = finrank 𝕜 { x // x ∈ K₂ }
⊢ finrank 𝕜 { x // x ∈ K₁ } + finrank 𝕜 { x // x ∈ K₁ᗮ ⊓ K₂ } = finrank 𝕜 { x // x ∈ K₁ } + n
Theorem: ENorm.coeFn_injective
File: Mathlib/Analysis/NormedSpace/ENorm.lean

tactic: cases e₁
state_before: 𝕜 : Type u_2
V : Type u_1
inst✝² : NormedField 𝕜
inst✝¹ : AddCommGroup V
inst✝ : Module 𝕜 V
e e₁ e₂ : ENorm 𝕜 V
h : ↑e₁ = ↑e₂
⊢ e₁ = e₂

tactic: cases e₂
state_before: case mk
𝕜 : Type u_2
V : Type u_1
inst✝² : NormedField 𝕜
inst✝¹ : AddCommGroup V
inst✝ : Module 𝕜 V
e e₂ : ENorm 𝕜 V
toFun✝ : V → ℝ≥0∞
eq_zero'✝ : ∀ (x : V), toFun✝ x = 0 → x = 0
map_add_le'✝ : ∀ (x y : V), toFun✝ (x + y) ≤ toFun✝ x + toFun✝ y
map_smul_le'✝ : ∀ (c : 𝕜) (x : V), toFun✝ (c • x) ≤ ↑‖c‖₊ * toFun✝ x
h : ↑{ toFun := toFun✝, eq_zero' := eq_zero'✝, map_add_le' := map_add_le'✝, map_smul_le' := map_smul_le'✝ } = ↑e₂
⊢ { toFun := toFun✝, eq_zero' := eq_zero'✝, map_add_le' := map_add_le'✝, map_smul_le' := map_smul_le'✝ } = e₂

tactic: congr
state_before: case mk.mk
𝕜 : Type u_2
V : Type u_1
inst✝² : NormedField 𝕜
inst✝¹ : AddCommGroup V
inst✝ : Module 𝕜 V
e : ENorm 𝕜 V
toFun✝¹ : V → ℝ≥0∞
eq_zero'✝¹ : ∀ (x : V), toFun✝¹ x = 0 → x = 0
map_add_le'✝¹ : ∀ (x y : V), toFun✝¹ (x + y) ≤ toFun✝¹ x + toFun✝¹ y
map_smul_le'✝¹ : ∀ (c : 𝕜) (x : V), toFun✝¹ (c • x) ≤ ↑‖c‖₊ * toFun✝¹ x
toFun✝ : V → ℝ≥0∞
eq_zero'✝ : ∀ (x : V), toFun✝ x = 0 → x = 0
map_add_le'✝ : ∀ (x y : V), toFun✝ (x + y) ≤ toFun✝ x + toFun✝ y
map_smul_le'✝ : ∀ (c : 𝕜) (x : V), toFun✝ (c • x) ≤ ↑‖c‖₊ * toFun✝ x
h :
  ↑{ toFun := toFun✝¹, eq_zero' := eq_zero'✝¹, map_add_le' := map_add_le'✝¹, map_smul_le' := map_smul_le'✝¹ } =
    ↑{ toFun := toFun✝, eq_zero' := eq_zero'✝, map_add_le' := map_add_le'✝, map_smul_le' := map_smul_le'✝ }
⊢ { toFun := toFun✝¹, eq_zero' := eq_zero'✝¹, map_add_le' := map_add_le'✝¹, map_smul_le' := map_smul_le'✝¹ } =
    { toFun := toFun✝, eq_zero' := eq_zero'✝, map_add_le' := map_add_le'✝, map_smul_le' := map_smul_le'✝ }
Theorem: NoBotOrder.to_noMinOrder
File: Mathlib/Order/Max.lean

tactic: simpa [not_le] using exists_not_ge a
state_before: α✝ : Type ?u.3482
β : Type ?u.3485
α : Type u_1
inst✝¹ : LinearOrder α
inst✝ : NoBotOrder α
a : α
⊢ ∃ b, b < a
Theorem: mul_lt_right₀
File: Mathlib/Algebra/Order/WithZero.lean

tactic: contrapose! h
state_before: α : Type u_1
a b c✝ d x y z : α
inst✝ : LinearOrderedCommGroupWithZero α
c : α
h : a < b
hc : c ≠ 0
⊢ a * c < b * c

tactic: exact le_of_le_mul_right hc h
state_before: α : Type u_1
a b c✝ d x y z : α
inst✝ : LinearOrderedCommGroupWithZero α
c : α
hc : c ≠ 0
h : b * c ≤ a * c
⊢ b ≤ a
Theorem: WithBot.strictMono_map_iff
File: Mathlib/Order/WithBot.lean

tactic: simp [StrictMono, bot_lt_coe]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.33858
δ : Type ?u.33861
a b : α
inst✝¹ : Preorder α
inst✝ : Preorder β
f : α → β
⊢ ((StrictMono fun a => map f ↑a) ∧ ∀ (x : α), map f ⊥ < map f ↑x) ↔ StrictMono f
Theorem: PseudoMetricSpace.dist_ofPreNNDist_le
File: Mathlib/Topology/MetricSpace/MetrizableUniformity.lean

tactic: simp
state_before: X : Type u_1
d : X → X → ℝ≥0
dist_self : ∀ (x : X), d x x = 0
dist_comm : ∀ (x y : X), d x y = d y x
x y : X
⊢ sum (zipWith d [x] ([] ++ [y])) = d x y
Theorem: ModuleCat.MonoidalCategory.tensor_comp
File: Mathlib/Algebra/Category/ModuleCat/Monoidal/Basic.lean

tactic: apply TensorProduct.ext
state_before: R : Type u
inst✝ : CommRing R
X₁ Y₁ Z₁ : ModuleCat R
X₂ Y₂ Z₂ : ModuleCat R
f₁ : X₁ ⟶ Y₁
f₂ : X₂ ⟶ Y₂
g₁ : Y₁ ⟶ Z₁
g₂ : Y₂ ⟶ Z₂
⊢ tensorHom (f₁ ≫ g₁) (f₂ ≫ g₂) = tensorHom f₁ f₂ ≫ tensorHom g₁ g₂

tactic: rfl
state_before: case H
R : Type u
inst✝ : CommRing R
X₁ Y₁ Z₁ : ModuleCat R
X₂ Y₂ Z₂ : ModuleCat R
f₁ : X₁ ⟶ Y₁
f₂ : X₂ ⟶ Y₂
g₁ : Y₁ ⟶ Z₁
g₂ : Y₂ ⟶ Z₂
⊢ LinearMap.compr₂ (TensorProduct.mk R ↑X₁ ↑X₂) (tensorHom (f₁ ≫ g₁) (f₂ ≫ g₂)) =
    LinearMap.compr₂ (TensorProduct.mk R ↑X₁ ↑X₂) (tensorHom f₁ f₂ ≫ tensorHom g₁ g₂)
Theorem: iInter_halfspaces_eq
File: Mathlib/Analysis/NormedSpace/HahnBanach/Separation.lean

tactic: rw [Set.iInter_setOf]
state_before: 𝕜 : Type ?u.130888
E : Type u_1
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s t : Set E
x y : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s
hs₂ : IsClosed s
⊢ (⋂ (l : E →L[ℝ] ℝ), {x | ∃ y, y ∈ s ∧ ↑l x ≤ ↑l y}) = s

tactic: refine' Set.Subset.antisymm (fun x hx => _) fun x hx l => ⟨x, hx, le_rfl⟩
state_before: 𝕜 : Type ?u.130888
E : Type u_1
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s t : Set E
x y : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s
hs₂ : IsClosed s
⊢ {x | ∀ (i : E →L[ℝ] ℝ), ∃ y, y ∈ s ∧ ↑i x ≤ ↑i y} = s

tactic: by_contra h
state_before: 𝕜 : Type ?u.130888
E : Type u_1
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s t : Set E
x✝ y : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s
hs₂ : IsClosed s
x : E
hx : x ∈ {x | ∀ (i : E →L[ℝ] ℝ), ∃ y, y ∈ s ∧ ↑i x ≤ ↑i y}
⊢ x ∈ s

tactic: obtain ⟨l, s, hlA, hl⟩ := geometric_hahn_banach_closed_point hs₁ hs₂ h
state_before: 𝕜 : Type ?u.130888
E : Type u_1
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s t : Set E
x✝ y : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s
hs₂ : IsClosed s
x : E
hx : x ∈ {x | ∀ (i : E →L[ℝ] ℝ), ∃ y, y ∈ s ∧ ↑i x ≤ ↑i y}
h : ¬x ∈ s
⊢ False

tactic: obtain ⟨y, hy, hxy⟩ := hx l
state_before: case intro.intro.intro
𝕜 : Type ?u.130888
E : Type u_1
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s✝ t : Set E
x✝ y : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s✝
hs₂ : IsClosed s✝
x : E
hx : x ∈ {x | ∀ (i : E →L[ℝ] ℝ), ∃ y, y ∈ s✝ ∧ ↑i x ≤ ↑i y}
h : ¬x ∈ s✝
l : E →L[ℝ] ℝ
s : ℝ
hlA : ∀ (a : E), a ∈ s✝ → ↑l a < s
hl : s < ↑l x
⊢ False

tactic: exact ((hxy.trans_lt (hlA y hy)).trans hl).not_le le_rfl
state_before: case intro.intro.intro.intro.intro
𝕜 : Type ?u.130888
E : Type u_1
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s✝ t : Set E
x✝ y✝ : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s✝
hs₂ : IsClosed s✝
x : E
hx : x ∈ {x | ∀ (i : E →L[ℝ] ℝ), ∃ y, y ∈ s✝ ∧ ↑i x ≤ ↑i y}
h : ¬x ∈ s✝
l : E →L[ℝ] ℝ
s : ℝ
hlA : ∀ (a : E), a ∈ s✝ → ↑l a < s
hl : s < ↑l x
y : E
hy : y ∈ s✝
hxy : ↑l x ≤ ↑l y
⊢ False
Theorem: Polynomial.rootMultiplicity_pos'
File: Mathlib/Data/Polynomial/Div.lean

tactic: rw [pos_iff_ne_zero, Ne.def, rootMultiplicity_eq_zero_iff, not_imp, and_comm]
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : CommRing R
p✝ q p : R[X]
x : R
⊢ 0 < rootMultiplicity x p ↔ p ≠ 0 ∧ IsRoot p x
Theorem: List.forall₂_nil_right_iff
File: Mathlib/Data/List/Forall2.lean

tactic: cases H
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.15064
δ : Type ?u.15067
R S : α → β → Prop
P : γ → δ → Prop
Rₐ : α → α → Prop
l : List α
H : Forall₂ R l []
⊢ l = []

tactic: rfl
state_before: case nil
α : Type u_1
β : Type u_2
γ : Type ?u.15064
δ : Type ?u.15067
R S : α → β → Prop
P : γ → δ → Prop
Rₐ : α → α → Prop
⊢ [] = []

tactic: rintro rfl
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.15064
δ : Type ?u.15067
R S : α → β → Prop
P : γ → δ → Prop
Rₐ : α → α → Prop
l : List α
⊢ l = [] → Forall₂ R l []

tactic: exact Forall₂.nil
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.15064
δ : Type ?u.15067
R S : α → β → Prop
P : γ → δ → Prop
Rₐ : α → α → Prop
⊢ Forall₂ R [] []
Theorem: MeasureTheory.snorm_smul_measure_of_ne_zero
File: Mathlib/MeasureTheory/Function/LpSeminorm.lean

tactic: by_cases hp0 : p = 0
state_before: α : Type u_1
E : Type ?u.2146317
F : Type u_2
G : Type ?u.2146323
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ≥0∞
f : α → F
c : ℝ≥0∞
hc : c ≠ 0
⊢ snorm f p (c • μ) = c ^ ENNReal.toReal (1 / p) • snorm f p μ

tactic: by_cases hp_top : p = ∞
state_before: case neg
α : Type u_1
E : Type ?u.2146317
F : Type u_2
G : Type ?u.2146323
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ≥0∞
f : α → F
c : ℝ≥0∞
hc : c ≠ 0
hp0 : ¬p = 0
⊢ snorm f p (c • μ) = c ^ ENNReal.toReal (1 / p) • snorm f p μ

tactic: exact snorm_smul_measure_of_ne_zero_of_ne_top hp0 hp_top c
state_before: case neg
α : Type u_1
E : Type ?u.2146317
F : Type u_2
G : Type ?u.2146323
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ≥0∞
f : α → F
c : ℝ≥0∞
hc : c ≠ 0
hp0 : ¬p = 0
hp_top : ¬p = ⊤
⊢ snorm f p (c • μ) = c ^ ENNReal.toReal (1 / p) • snorm f p μ

tactic: simp [hp0]
state_before: case pos
α : Type u_1
E : Type ?u.2146317
F : Type u_2
G : Type ?u.2146323
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ≥0∞
f : α → F
c : ℝ≥0∞
hc : c ≠ 0
hp0 : p = 0
⊢ snorm f p (c • μ) = c ^ ENNReal.toReal (1 / p) • snorm f p μ

tactic: simp [hp_top, snormEssSup_smul_measure hc]
state_before: case pos
α : Type u_1
E : Type ?u.2146317
F : Type u_2
G : Type ?u.2146323
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ≥0∞
f : α → F
c : ℝ≥0∞
hc : c ≠ 0
hp0 : ¬p = 0
hp_top : p = ⊤
⊢ snorm f p (c • μ) = c ^ ENNReal.toReal (1 / p) • snorm f p μ
Theorem: ZMod.valMinAbs_natCast_eq_self
File: Mathlib/Data/ZMod/Basic.lean

tactic: refine' ⟨fun ha => _, valMinAbs_natCast_of_le_half⟩
state_before: n a : ℕ
inst✝ : NeZero n
⊢ valMinAbs ↑a = ↑a ↔ a ≤ n / 2

tactic: rw [← Int.natAbs_ofNat a, ← ha]
state_before: n a : ℕ
inst✝ : NeZero n
ha : valMinAbs ↑a = ↑a
⊢ a ≤ n / 2

tactic: exact natAbs_valMinAbs_le a
state_before: n a : ℕ
inst✝ : NeZero n
ha : valMinAbs ↑a = ↑a
⊢ Int.natAbs (valMinAbs ↑a) ≤ n / 2
Theorem: List.inits_eq_tails
File: Mathlib/Data/List/Infix.lean

tactic: simp
state_before: α : Type u_1
β : Type ?u.42454
l l₁ l₂ l₃ : List α
a b : α
m n : ℕ
⊢ inits [] = reverse (map reverse (tails (reverse [])))

tactic: simp [inits_eq_tails l, map_eq_map_iff, reverse_map]
state_before: α : Type u_1
β : Type ?u.42454
l✝ l₁ l₂ l₃ : List α
a✝ b : α
m n : ℕ
a : α
l : List α
⊢ inits (a :: l) = reverse (map reverse (tails (reverse (a :: l))))
Theorem: EMetric.continuous_infEdist
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: simp
state_before: ι : Sort ?u.10627
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t : Set α
Φ : α → β
⊢ 1 ≠ ⊤

tactic: simp only [one_mul, infEdist_le_infEdist_add_edist, forall₂_true_iff]
state_before: ι : Sort ?u.10627
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t : Set α
Φ : α → β
⊢ ∀ (x y : α), infEdist x s ≤ infEdist y s + 1 * edist x y
Theorem: MeasureTheory.Measure.join_eq_bind
File: Mathlib/MeasureTheory/Measure/GiryMonad.lean

tactic: rw [bind, map_id]
state_before: α : Type u_1
β : Type ?u.41117
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
μ : Measure (Measure α)
⊢ join μ = bind μ id
Theorem: Set.Ioo_insert_right
File: Mathlib/Data/Set/Intervals/Basic.lean

tactic: rw [insert_eq, union_comm, Ioo_union_right h]
state_before: α : Type u_1
β : Type ?u.48593
inst✝ : PartialOrder α
a b c : α
h : a < b
⊢ insert b (Ioo a b) = Ioc a b
Theorem: Fin.range_succ
File: Mathlib/Data/Fin/Basic.lean

tactic: rw [← succAbove_zero]
state_before: n✝ m n : ℕ
⊢ Set.range succ = {0}ᶜ

tactic: exact range_succAbove (0 : Fin (n + 1))
state_before: n✝ m n : ℕ
⊢ Set.range ↑(succAbove 0) = {0}ᶜ
Theorem: CauSeq.sub_limZero
File: Mathlib/Data/Real/CauSeq.lean

tactic: simpa only [sub_eq_add_neg] using add_limZero hf (neg_limZero hg)
state_before: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : Ring β
abv : β → α
inst✝ : IsAbsoluteValue abv
f g : CauSeq β abv
hf : LimZero f
hg : LimZero g
⊢ LimZero (f - g)
Theorem: Real.Angle.abs_cos_eq_abs_sin_of_two_nsmul_add_two_nsmul_eq_pi
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: rw [← eq_sub_iff_add_eq, ← two_nsmul_coe_div_two, ← nsmul_sub, two_nsmul_eq_iff] at h
state_before: θ ψ : Angle
h : 2 • θ + 2 • ψ = ↑π
⊢ abs (cos θ) = abs (sin ψ)

tactic: rcases h with (rfl | rfl) <;> simp [cos_pi_div_two_sub]
state_before: θ ψ : Angle
h : θ = ↑(π / 2) - ψ ∨ θ = ↑(π / 2) - ψ + ↑π
⊢ abs (cos θ) = abs (sin ψ)
Theorem: MeasureTheory.NullMeasurableSet.sUnion
File: Mathlib/MeasureTheory/Measure/NullMeasurable.lean

tactic: rw [sUnion_eq_biUnion]
state_before: ι : Type ?u.3562
α : Type u_1
β : Type ?u.3568
γ : Type ?u.3571
m0 : MeasurableSpace α
μ : Measure α
s✝ t : Set α
s : Set (Set α)
hs : Set.Countable s
h : ∀ (t : Set α), t ∈ s → NullMeasurableSet t
⊢ NullMeasurableSet (⋃₀ s)

tactic: exact MeasurableSet.biUnion hs h
state_before: ι : Type ?u.3562
α : Type u_1
β : Type ?u.3568
γ : Type ?u.3571
m0 : MeasurableSpace α
μ : Measure α
s✝ t : Set α
s : Set (Set α)
hs : Set.Countable s
h : ∀ (t : Set α), t ∈ s → NullMeasurableSet t
⊢ NullMeasurableSet (⋃ (i : Set α) (_ : i ∈ s), i)
Theorem: BoxIntegral.Box.volume_apply'
File: Mathlib/Analysis/BoxIntegral/Partition/Measure.lean

tactic: rw [coe_eq_pi, Real.volume_pi_Ioc_toReal I.lower_le_upper]
state_before: ι : Type u_1
inst✝ : Fintype ι
I : Box ι
⊢ ENNReal.toReal (↑↑volume ↑I) = ∏ i : ι, (upper I i - lower I i)
Theorem: CategoryTheory.Limits.coprod.map_map
File: Mathlib/CategoryTheory/Limits/Shapes/BinaryProducts.lean

tactic: apply coprod.hom_ext
state_before: C : Type u
inst✝³ : Category C
X Y A₁ A₂ A₃ B₁ B₂ B₃ : C
inst✝² : HasBinaryCoproduct A₁ B₁
inst✝¹ : HasBinaryCoproduct A₂ B₂
inst✝ : HasBinaryCoproduct A₃ B₃
f : A₁ ⟶ A₂
g : B₁ ⟶ B₂
h : A₂ ⟶ A₃
k : B₂ ⟶ B₃
⊢ map f g ≫ map h k = map (f ≫ h) (g ≫ k)

tactic: simp
state_before: case h₁
C : Type u
inst✝³ : Category C
X Y A₁ A₂ A₃ B₁ B₂ B₃ : C
inst✝² : HasBinaryCoproduct A₁ B₁
inst✝¹ : HasBinaryCoproduct A₂ B₂
inst✝ : HasBinaryCoproduct A₃ B₃
f : A₁ ⟶ A₂
g : B₁ ⟶ B₂
h : A₂ ⟶ A₃
k : B₂ ⟶ B₃
⊢ inl ≫ map f g ≫ map h k = inl ≫ map (f ≫ h) (g ≫ k)

case h₂
C : Type u
inst✝³ : Category C
X Y A₁ A₂ A₃ B₁ B₂ B₃ : C
inst✝² : HasBinaryCoproduct A₁ B₁
inst✝¹ : HasBinaryCoproduct A₂ B₂
inst✝ : HasBinaryCoproduct A₃ B₃
f : A₁ ⟶ A₂
g : B₁ ⟶ B₂
h : A₂ ⟶ A₃
k : B₂ ⟶ B₃
⊢ inr ≫ map f g ≫ map h k = inr ≫ map (f ≫ h) (g ≫ k)

tactic: simp
state_before: case h₂
C : Type u
inst✝³ : Category C
X Y A₁ A₂ A₃ B₁ B₂ B₃ : C
inst✝² : HasBinaryCoproduct A₁ B₁
inst✝¹ : HasBinaryCoproduct A₂ B₂
inst✝ : HasBinaryCoproduct A₃ B₃
f : A₁ ⟶ A₂
g : B₁ ⟶ B₂
h : A₂ ⟶ A₃
k : B₂ ⟶ B₃
⊢ inr ≫ map f g ≫ map h k = inr ≫ map (f ≫ h) (g ≫ k)
Theorem: LinearMap.map_comp_rTensor
File: Mathlib/LinearAlgebra/TensorProduct.lean

tactic: simp only [lTensor, rTensor, ← map_comp, id_comp, comp_id]
state_before: R : Type u_1
inst✝¹⁴ : CommSemiring R
R' : Type ?u.1281534
inst✝¹³ : Monoid R'
R'' : Type ?u.1281540
inst✝¹² : Semiring R''
M : Type u_2
N : Type u_4
P : Type u_3
Q : Type u_5
S : Type u_6
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid N
inst✝⁹ : AddCommMonoid P
inst✝⁸ : AddCommMonoid Q
inst✝⁷ : AddCommMonoid S
inst✝⁶ : Module R M
inst✝⁵ : Module R N
inst✝⁴ : Module R P
inst✝³ : Module R Q
inst✝² : Module R S
inst✝¹ : DistribMulAction R' M
inst✝ : Module R'' M
g✝ : P →ₗ[R] Q
f✝ : N →ₗ[R] P
f : M →ₗ[R] P
g : N →ₗ[R] Q
f' : S →ₗ[R] M
⊢ comp (map f g) (rTensor N f') = map (comp f f') g
Theorem: LinearMap.injective_iff_surjective_of_finrank_eq_finrank
File: Mathlib/LinearAlgebra/FiniteDimensional.lean

tactic: have := finrank_range_add_finrank_ker f
state_before: K : Type u
V : Type v
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
V₂ : Type v'
inst✝³ : AddCommGroup V₂
inst✝² : Module K V₂
inst✝¹ : FiniteDimensional K V
inst✝ : FiniteDimensional K V₂
H : finrank K V = finrank K V₂
f : V →ₗ[K] V₂
⊢ Injective ↑f ↔ Surjective ↑f

tactic: rw [← ker_eq_bot, ← range_eq_top]
state_before: K : Type u
V : Type v
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
V₂ : Type v'
inst✝³ : AddCommGroup V₂
inst✝² : Module K V₂
inst✝¹ : FiniteDimensional K V
inst✝ : FiniteDimensional K V₂
H : finrank K V = finrank K V₂
f : V →ₗ[K] V₂
this : finrank K { x // x ∈ range f } + finrank K { x // x ∈ ker f } = finrank K V
⊢ Injective ↑f ↔ Surjective ↑f

tactic: refine' ⟨fun h => _, fun h => _⟩
state_before: K : Type u
V : Type v
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
V₂ : Type v'
inst✝³ : AddCommGroup V₂
inst✝² : Module K V₂
inst✝¹ : FiniteDimensional K V
inst✝ : FiniteDimensional K V₂
H : finrank K V = finrank K V₂
f : V →ₗ[K] V₂
this : finrank K { x // x ∈ range f } + finrank K { x // x ∈ ker f } = finrank K V
⊢ ker f = ⊥ ↔ range f = ⊤

tactic: rw [h, finrank_bot, add_zero, H] at this
state_before: case refine'_1
K : Type u
V : Type v
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
V₂ : Type v'
inst✝³ : AddCommGroup V₂
inst✝² : Module K V₂
inst✝¹ : FiniteDimensional K V
inst✝ : FiniteDimensional K V₂
H : finrank K V = finrank K V₂
f : V →ₗ[K] V₂
this : finrank K { x // x ∈ range f } + finrank K { x // x ∈ ker f } = finrank K V
h : ker f = ⊥
⊢ range f = ⊤

tactic: exact eq_top_of_finrank_eq this
state_before: case refine'_1
K : Type u
V : Type v
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
V₂ : Type v'
inst✝³ : AddCommGroup V₂
inst✝² : Module K V₂
inst✝¹ : FiniteDimensional K V
inst✝ : FiniteDimensional K V₂
H : finrank K V = finrank K V₂
f : V →ₗ[K] V₂
this : finrank K { x // x ∈ range f } = finrank K V₂
h : ker f = ⊥
⊢ range f = ⊤

tactic: rw [h, finrank_top, H] at this
state_before: case refine'_2
K : Type u
V : Type v
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
V₂ : Type v'
inst✝³ : AddCommGroup V₂
inst✝² : Module K V₂
inst✝¹ : FiniteDimensional K V
inst✝ : FiniteDimensional K V₂
H : finrank K V = finrank K V₂
f : V →ₗ[K] V₂
this : finrank K { x // x ∈ range f } + finrank K { x // x ∈ ker f } = finrank K V
h : range f = ⊤
⊢ ker f = ⊥

tactic: exact finrank_eq_zero.1 (add_right_injective _ this)
state_before: case refine'_2
K : Type u
V : Type v
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
V₂ : Type v'
inst✝³ : AddCommGroup V₂
inst✝² : Module K V₂
inst✝¹ : FiniteDimensional K V
inst✝ : FiniteDimensional K V₂
H : finrank K V = finrank K V₂
f : V →ₗ[K] V₂
this : finrank K V₂ + finrank K { x // x ∈ ker f } = finrank K V₂
h : range f = ⊤
⊢ ker f = ⊥
Theorem: div_lt_div_of_lt
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rw [div_eq_mul_one_div a c, div_eq_mul_one_div b c]
state_before: ι : Type ?u.63758
α : Type u_1
β : Type ?u.63764
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
hc : 0 < c
h : a < b
⊢ a / c < b / c

tactic: exact mul_lt_mul_of_pos_right h (one_div_pos.2 hc)
state_before: ι : Type ?u.63758
α : Type u_1
β : Type ?u.63764
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
hc : 0 < c
h : a < b
⊢ a * (1 / c) < b * (1 / c)
Theorem: PerfectClosure.int_cast
File: Mathlib/FieldTheory/PerfectClosure.lean

tactic: induction x <;> simp only [Int.ofNat_eq_coe, Int.cast_ofNat, Int.cast_negSucc, nat_cast K p 0]
state_before: K : Type u
inst✝² : CommRing K
p : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : CharP K p
x : ℤ
⊢ ↑x = mk K p (0, ↑x)

tactic: rfl
state_before: case negSucc
K : Type u
inst✝² : CommRing K
p : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : CharP K p
a✝ : ℕ
⊢ -mk K p (0, ↑(a✝ + 1)) = mk K p (0, -↑(a✝ + 1))
Theorem: TrivSqZeroExt.liftAux_apply_inr
File: Mathlib/Algebra/TrivSqZeroExt.lean

tactic: rw [RingHom.map_zero, zero_add]
state_before: S : Type ?u.861406
R R' : Type u
M : Type v
inst✝¹⁷ : CommSemiring S
inst✝¹⁶ : Semiring R
inst✝¹⁵ : CommSemiring R'
inst✝¹⁴ : AddCommMonoid M
inst✝¹³ : Algebra S R
inst✝¹² : Algebra S R'
inst✝¹¹ : Module S M
inst✝¹⁰ : Module R M
inst✝⁹ : Module Rᵐᵒᵖ M
inst✝⁸ : SMulCommClass R Rᵐᵒᵖ M
inst✝⁷ : IsScalarTower S R M
inst✝⁶ : IsScalarTower S Rᵐᵒᵖ M
inst✝⁵ : Module R' M
inst✝⁴ : Module R'ᵐᵒᵖ M
inst✝³ : IsCentralScalar R' M
inst✝² : IsScalarTower S R' M
A : Type u_1
inst✝¹ : Semiring A
inst✝ : Algebra R' A
f : M →ₗ[R'] A
hf : ∀ (x y : M), ↑f x * ↑f y = 0
m : M
⊢ ↑(algebraMap R' A) 0 + ↑f m = ↑f m
Theorem: rank_range_of_surjective
File: Mathlib/LinearAlgebra/Dimension.lean

tactic: rw [LinearMap.range_eq_top.2 h, rank_top]
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.83941
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'
h : Surjective ↑f
⊢ Module.rank R { x // x ∈ LinearMap.range f } = Module.rank R M'
Theorem: Fin.card_fintypeIoo
File: Mathlib/Data/Fin/Interval.lean

tactic: rw [← card_Ioo, Fintype.card_ofFinset]
state_before: n : ℕ
a b : Fin n
⊢ Fintype.card ↑(Set.Ioo a b) = ↑b - ↑a - 1