tasksource/leandojo huggingface dataset:
Theorem: MeasureTheory.SignedMeasure.subset_positive_null_set
File: Mathlib/MeasureTheory/Decomposition/Jordan.lean

tactic: have : s v + s (w \ v) = 0 := by
  rw [← hw₁, ← of_union Set.disjoint_sdiff_right hv (hw.diff hv), Set.union_diff_self,
    Set.union_eq_self_of_subset_left hwt]
state_before: α : Type u_1
β : Type ?u.41858
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hw : MeasurableSet w
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hw₁ : ↑s w = 0
hw₂ : w ⊆ u
hwt : v ⊆ w
⊢ ↑s v = 0

tactic: have h₁ := nonneg_of_zero_le_restrict _ (restrict_le_restrict_subset _ _ hu hsu (hwt.trans hw₂))
state_before: α : Type u_1
β : Type ?u.41858
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hw : MeasurableSet w
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hw₁ : ↑s w = 0
hw₂ : w ⊆ u
hwt : v ⊆ w
this : ↑s v + ↑s (w \ v) = 0
⊢ ↑s v = 0

tactic: have h₂ :=
  nonneg_of_zero_le_restrict _
    (restrict_le_restrict_subset _ _ hu hsu ((w.diff_subset v).trans hw₂))
state_before: α : Type u_1
β : Type ?u.41858
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hw : MeasurableSet w
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hw₁ : ↑s w = 0
hw₂ : w ⊆ u
hwt : v ⊆ w
this : ↑s v + ↑s (w \ v) = 0
h₁ : 0 ≤ ↑s v
⊢ ↑s v = 0

tactic: linarith
state_before: α : Type u_1
β : Type ?u.41858
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hw : MeasurableSet w
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hw₁ : ↑s w = 0
hw₂ : w ⊆ u
hwt : v ⊆ w
this : ↑s v + ↑s (w \ v) = 0
h₁ : 0 ≤ ↑s v
h₂ : 0 ≤ ↑s (w \ v)
⊢ ↑s v = 0

tactic: rw [← hw₁, ← of_union Set.disjoint_sdiff_right hv (hw.diff hv), Set.union_diff_self,
  Set.union_eq_self_of_subset_left hwt]
state_before: α : Type u_1
β : Type ?u.41858
inst✝² : MeasurableSpace α
s : SignedMeasure α
μ ν : Measure α
inst✝¹ : IsFiniteMeasure μ
inst✝ : IsFiniteMeasure ν
u v w : Set α
hu : MeasurableSet u
hv : MeasurableSet v
hw : MeasurableSet w
hsu : VectorMeasure.restrict 0 u ≤ VectorMeasure.restrict s u
hw₁ : ↑s w = 0
hw₂ : w ⊆ u
hwt : v ⊆ w
⊢ ↑s v + ↑s (w \ v) = 0
Theorem: CategoryTheory.Functor.preservesMonomorphisms.of_iso
File: Mathlib/CategoryTheory/Functor/EpiMono.lean

tactic: haveI : Mono (F.map f ≫ (α.app Y).hom) := mono_comp _ _
state_before: C : Type u₁
inst✝³ : Category C
D : Type u₂
inst✝² : Category D
E : Type u₃
inst✝¹ : Category E
F G : C ⥤ D
inst✝ : PreservesMonomorphisms F
α : F ≅ G
X Y : C
f : X ⟶ Y
h : Mono f
⊢ Mono (G.map f)

tactic: convert (mono_comp _ _ : Mono ((α.app X).inv ≫ F.map f ≫ (α.app Y).hom))
state_before: C : Type u₁
inst✝³ : Category C
D : Type u₂
inst✝² : Category D
E : Type u₃
inst✝¹ : Category E
F G : C ⥤ D
inst✝ : PreservesMonomorphisms F
α : F ≅ G
X Y : C
f : X ⟶ Y
h : Mono f
this : Mono (F.map f ≫ (α.app Y).hom)
⊢ Mono (G.map f)

tactic: rw [Iso.eq_inv_comp, Iso.app_hom, Iso.app_hom, NatTrans.naturality]
state_before: case h.e'_5
C : Type u₁
inst✝³ : Category C
D : Type u₂
inst✝² : Category D
E : Type u₃
inst✝¹ : Category E
F G : C ⥤ D
inst✝ : PreservesMonomorphisms F
α : F ≅ G
X Y : C
f : X ⟶ Y
h : Mono f
this : Mono (F.map f ≫ (α.app Y).hom)
⊢ G.map f = (α.app X).inv ≫ F.map f ≫ (α.app Y).hom
Theorem: Projectivization.map_id
File: Mathlib/LinearAlgebra/ProjectiveSpace/Basic.lean

tactic: ext ⟨v⟩
state_before: K : Type u_2
V : Type u_1
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
L : Type ?u.156698
W : Type ?u.156701
inst✝² : DivisionRing L
inst✝¹ : AddCommGroup W
inst✝ : Module L W
⊢ map LinearMap.id (_ : Function.Injective ↑(LinearEquiv.refl K V)) = id

tactic: rfl
state_before: case h.mk
K : Type u_2
V : Type u_1
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
L : Type ?u.156698
W : Type ?u.156701
inst✝² : DivisionRing L
inst✝¹ : AddCommGroup W
inst✝ : Module L W
x✝ : ℙ K V
v : { v // v ≠ 0 }
⊢ map LinearMap.id (_ : Function.Injective ↑(LinearEquiv.refl K V)) (Quot.mk Setoid.r v) = id (Quot.mk Setoid.r v)
Theorem: Real.rpow_sum_le_const_mul_sum_rpow_of_nonneg
File: Mathlib/Analysis/MeanInequalities.lean

tactic: convert rpow_sum_le_const_mul_sum_rpow s f hp using 2 <;> apply sum_congr rfl <;> intro i hi <;>
  simp only [abs_of_nonneg, hf i hi]
state_before: ι : Type u
s : Finset ι
f g : ι → ℝ
p q : ℝ
hp : 1 ≤ p
hf : ∀ (i : ι), i ∈ s → 0 ≤ f i
⊢ (∑ i in s, f i) ^ p ≤ ↑(card s) ^ (p - 1) * ∑ i in s, f i ^ p
Theorem: Ideal.iInf_pow_eq_bot_of_isDomain
File: Mathlib/RingTheory/Filtration.lean

tactic: rw [eq_bot_iff]
state_before: R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : Filtration I M
inst✝¹ : IsNoetherianRing R
inst✝ : IsDomain R
h : I ≠ ⊤
⊢ (⨅ (i : ℕ), I ^ i) = ⊥

tactic: intro x hx
state_before: R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : Filtration I M
inst✝¹ : IsNoetherianRing R
inst✝ : IsDomain R
h : I ≠ ⊤
⊢ (⨅ (i : ℕ), I ^ i) ≤ ⊥

tactic: by_contra hx'
state_before: R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : Filtration I M
inst✝¹ : IsNoetherianRing R
inst✝ : IsDomain R
h : I ≠ ⊤
x : R
hx : x ∈ ⨅ (i : ℕ), I ^ i
⊢ x ∈ ⊥

tactic: have := Ideal.mem_iInf_smul_pow_eq_bot_iff I x
state_before: R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : Filtration I M
inst✝¹ : IsNoetherianRing R
inst✝ : IsDomain R
h : I ≠ ⊤
x : R
hx : x ∈ ⨅ (i : ℕ), I ^ i
hx' : ¬x ∈ ⊥
⊢ False

tactic: simp_rw [smul_eq_mul, ← Ideal.one_eq_top, mul_one] at this
state_before: R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : Filtration I M
inst✝¹ : IsNoetherianRing R
inst✝ : IsDomain R
h : I ≠ ⊤
x : R
hx : x ∈ ⨅ (i : ℕ), I ^ i
hx' : ¬x ∈ ⊥
this : (x ∈ ⨅ (i : ℕ), I ^ i • ⊤) ↔ ∃ r, ↑r • x = x
⊢ False

tactic: obtain ⟨r, hr⟩ := this.mp hx
state_before: R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : Filtration I M
inst✝¹ : IsNoetherianRing R
inst✝ : IsDomain R
h : I ≠ ⊤
x : R
hx : x ∈ ⨅ (i : ℕ), I ^ i
hx' : ¬x ∈ ⊥
this : (x ∈ ⨅ (i : ℕ), I ^ i) ↔ ∃ r, ↑r * x = x
⊢ False

tactic: have := mul_right_cancel₀ hx' (hr.trans (one_mul x).symm)
state_before: case intro
R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : Filtration I M
inst✝¹ : IsNoetherianRing R
inst✝ : IsDomain R
h : I ≠ ⊤
x : R
hx : x ∈ ⨅ (i : ℕ), I ^ i
hx' : ¬x ∈ ⊥
this : (x ∈ ⨅ (i : ℕ), I ^ i) ↔ ∃ r, ↑r * x = x
r : { x // x ∈ I }
hr : ↑r * x = x
⊢ False

tactic: exact I.eq_top_iff_one.not.mp h (this ▸ r.prop)
state_before: case intro
R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : Filtration I M
inst✝¹ : IsNoetherianRing R
inst✝ : IsDomain R
h : I ≠ ⊤
x : R
hx : x ∈ ⨅ (i : ℕ), I ^ i
hx' : ¬x ∈ ⊥
this✝ : (x ∈ ⨅ (i : ℕ), I ^ i) ↔ ∃ r, ↑r * x = x
r : { x // x ∈ I }
hr : ↑r * x = x
this : ↑r = 1
⊢ False
Theorem: Multiset.mem_nsmul
File: Mathlib/Data/Multiset/Basic.lean

tactic: refine' ⟨mem_of_mem_nsmul, fun h => _⟩
state_before: α : Type u_1
β : Type ?u.47121
γ : Type ?u.47124
a : α
s : Multiset α
n : ℕ
h0 : n ≠ 0
⊢ a ∈ n • s ↔ a ∈ s

tactic: obtain ⟨n, rfl⟩ := exists_eq_succ_of_ne_zero h0
state_before: α : Type u_1
β : Type ?u.47121
γ : Type ?u.47124
a : α
s : Multiset α
n : ℕ
h0 : n ≠ 0
h : a ∈ s
⊢ a ∈ n • s

tactic: rw [succ_nsmul, mem_add]
state_before: case intro
α : Type u_1
β : Type ?u.47121
γ : Type ?u.47124
a : α
s : Multiset α
h : a ∈ s
n : ℕ
h0 : succ n ≠ 0
⊢ a ∈ succ n • s

tactic: exact Or.inl h
state_before: case intro
α : Type u_1
β : Type ?u.47121
γ : Type ?u.47124
a : α
s : Multiset α
h : a ∈ s
n : ℕ
h0 : succ n ≠ 0
⊢ a ∈ s ∨ a ∈ n • s
Theorem: fderivWithin_const_sub
File: Mathlib/Analysis/Calculus/FDeriv/Add.lean

tactic: simp only [sub_eq_add_neg, fderivWithin_const_add, fderivWithin_neg, hxs]
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type ?u.574896
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type ?u.574991
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
hxs : UniqueDiffWithinAt 𝕜 s x
c : F
⊢ fderivWithin 𝕜 (fun y => c - f y) s x = -fderivWithin 𝕜 f s x
Theorem: AList.mk_cons_eq_insert
File: Mathlib/Data/List/AList.lean

tactic: simpa [insert] using (kerase_of_not_mem_keys <| not_mem_keys_of_nodupKeys_cons h).symm
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
c : Sigma β
l : List (Sigma β)
h : NodupKeys (c :: l)
⊢ { entries := c :: l, nodupKeys := h } = insert c.fst c.snd { entries := l, nodupKeys := (_ : NodupKeys l) }
Theorem: Int.csSup_of_not_bdd_above
File: Mathlib/Data/Int/ConditionallyCompleteOrder.lean

tactic: simp [h]
state_before: s : Set ℤ
h : ¬BddAbove s
⊢ ¬(Set.Nonempty s ∧ BddAbove s)
Theorem: segment_subset_uIcc
File: Mathlib/Analysis/Convex/Segment.lean

tactic: cases' le_total x y with h h
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type ?u.269436
G : Type ?u.269439
ι : Type ?u.269442
π : ι → Type ?u.269447
inst✝³ : OrderedSemiring 𝕜
inst✝² : LinearOrderedAddCommMonoid E
inst✝¹ : Module 𝕜 E
inst✝ : OrderedSMul 𝕜 E
a b : 𝕜
x y : E
⊢ [x-[𝕜]y] ⊆ uIcc x y

tactic: rw [uIcc_of_le h]
state_before: case inl
𝕜 : Type u_2
E : Type u_1
F : Type ?u.269436
G : Type ?u.269439
ι : Type ?u.269442
π : ι → Type ?u.269447
inst✝³ : OrderedSemiring 𝕜
inst✝² : LinearOrderedAddCommMonoid E
inst✝¹ : Module 𝕜 E
inst✝ : OrderedSMul 𝕜 E
a b : 𝕜
x y : E
h : x ≤ y
⊢ [x-[𝕜]y] ⊆ uIcc x y

tactic: exact segment_subset_Icc h
state_before: case inl
𝕜 : Type u_2
E : Type u_1
F : Type ?u.269436
G : Type ?u.269439
ι : Type ?u.269442
π : ι → Type ?u.269447
inst✝³ : OrderedSemiring 𝕜
inst✝² : LinearOrderedAddCommMonoid E
inst✝¹ : Module 𝕜 E
inst✝ : OrderedSMul 𝕜 E
a b : 𝕜
x y : E
h : x ≤ y
⊢ [x-[𝕜]y] ⊆ Icc x y

tactic: rw [uIcc_of_ge h, segment_symm]
state_before: case inr
𝕜 : Type u_2
E : Type u_1
F : Type ?u.269436
G : Type ?u.269439
ι : Type ?u.269442
π : ι → Type ?u.269447
inst✝³ : OrderedSemiring 𝕜
inst✝² : LinearOrderedAddCommMonoid E
inst✝¹ : Module 𝕜 E
inst✝ : OrderedSMul 𝕜 E
a b : 𝕜
x y : E
h : y ≤ x
⊢ [x-[𝕜]y] ⊆ uIcc x y

tactic: exact segment_subset_Icc h
state_before: case inr
𝕜 : Type u_2
E : Type u_1
F : Type ?u.269436
G : Type ?u.269439
ι : Type ?u.269442
π : ι → Type ?u.269447
inst✝³ : OrderedSemiring 𝕜
inst✝² : LinearOrderedAddCommMonoid E
inst✝¹ : Module 𝕜 E
inst✝ : OrderedSMul 𝕜 E
a b : 𝕜
x y : E
h : y ≤ x
⊢ [y-[𝕜]x] ⊆ Icc y x
Theorem: Real.rpow_lt_rpow_left_iff_of_base_lt_one
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: rw [lt_iff_not_le, rpow_le_rpow_left_iff_of_base_lt_one hx0 hx1, lt_iff_not_le]
state_before: x y z : ℝ
hx0 : 0 < x
hx1 : x < 1
⊢ x ^ y < x ^ z ↔ z < y
Theorem: IsAtom.le_iff
File: Mathlib/Order/Atoms.lean

tactic: rw [le_iff_lt_or_eq, h.lt_iff]
state_before: α : Type u_1
β : Type ?u.2208
inst✝¹ : PartialOrder α
inst✝ : OrderBot α
a b x : α
h : IsAtom a
⊢ x ≤ a ↔ x = ⊥ ∨ x = a
Theorem: Con.lift_funext
File: Mathlib/GroupTheory/Congruence.lean

tactic: rw [← lift_apply_mk' f, ← lift_apply_mk' g]
state_before: M : Type u_1
N : Type ?u.62273
P : Type u_2
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
c : Con M
x y : M
f✝ : M →* P
f g : Con.Quotient c →* P
h : ∀ (a : M), ↑f ↑a = ↑g ↑a
⊢ f = g

tactic: congr 1
state_before: M : Type u_1
N : Type ?u.62273
P : Type u_2
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
c : Con M
x y : M
f✝ : M →* P
f g : Con.Quotient c →* P
h : ∀ (a : M), ↑f ↑a = ↑g ↑a
⊢ lift c (MonoidHom.comp f (mk' c)) (_ : ∀ (x y : M), ↑c x y → ↑f ↑x = ↑f ↑y) =
    lift c (MonoidHom.comp g (mk' c)) (_ : ∀ (x y : M), ↑c x y → ↑g ↑x = ↑g ↑y)

tactic: exact FunLike.ext_iff.2 h
state_before: case e_f
M : Type u_1
N : Type ?u.62273
P : Type u_2
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
c : Con M
x y : M
f✝ : M →* P
f g : Con.Quotient c →* P
h : ∀ (a : M), ↑f ↑a = ↑g ↑a
⊢ MonoidHom.comp f (mk' c) = MonoidHom.comp g (mk' c)
Theorem: MeasureTheory.MeasurePreserving.measure_preimage
File: Mathlib/Dynamics/Ergodic/MeasurePreserving.lean

tactic: rw [← hf.map_eq, map_apply hf.1 hs]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.271396
δ : Type ?u.271399
inst✝³ : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
μa : Measure α
μb : Measure β
μc : Measure γ
μd : Measure δ
f : α → β
hf : MeasurePreserving f
s : Set β
hs : MeasurableSet s
⊢ ↑↑μa (f ⁻¹' s) = ↑↑μb s
Theorem: PiNat.exists_retraction_subtype_of_isClosed
File: Mathlib/Topology/MetricSpace/PiNat.lean

tactic: obtain ⟨f, fs, rfl, f_cont⟩ :
  ∃ f : (∀ n, E n) → ∀ n, E n, (∀ x ∈ s, f x = x) ∧ range f = s ∧ Continuous f :=
  exists_retraction_of_isClosed hs hne
state_before: E : ℕ → Type u_1
inst✝¹ : (n : ℕ) → TopologicalSpace (E n)
inst✝ : ∀ (n : ℕ), DiscreteTopology (E n)
s : Set ((n : ℕ) → E n)
hs : IsClosed s
hne : Set.Nonempty s
⊢ ∃ f, (∀ (x : ↑s), f ↑x = x) ∧ Surjective f ∧ Continuous f

tactic: have A : ∀ x : range f, rangeFactorization f x = x := fun x ↦ Subtype.eq <| fs x x.2
state_before: case intro.intro.intro
E : ℕ → Type u_1
inst✝¹ : (n : ℕ) → TopologicalSpace (E n)
inst✝ : ∀ (n : ℕ), DiscreteTopology (E n)
f : ((n : ℕ) → E n) → (n : ℕ) → E n
f_cont : Continuous f
hs : IsClosed (range f)
hne : Set.Nonempty (range f)
fs : ∀ (x : (n : ℕ) → E n), x ∈ range f → f x = x
⊢ ∃ f_1, (∀ (x : ↑(range f)), f_1 ↑x = x) ∧ Surjective f_1 ∧ Continuous f_1

tactic: exact ⟨rangeFactorization f, A, fun x => ⟨x, A x⟩, f_cont.subtype_mk _⟩
state_before: case intro.intro.intro
E : ℕ → Type u_1
inst✝¹ : (n : ℕ) → TopologicalSpace (E n)
inst✝ : ∀ (n : ℕ), DiscreteTopology (E n)
f : ((n : ℕ) → E n) → (n : ℕ) → E n
f_cont : Continuous f
hs : IsClosed (range f)
hne : Set.Nonempty (range f)
fs : ∀ (x : (n : ℕ) → E n), x ∈ range f → f x = x
A : ∀ (x : ↑(range f)), rangeFactorization f ↑x = x
⊢ ∃ f_1, (∀ (x : ↑(range f)), f_1 ↑x = x) ∧ Surjective f_1 ∧ Continuous f_1
Theorem: dist_prod_prod_le_of_le
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: simp only [dist_eq_norm_div, ← Finset.prod_div_distrib] at *
state_before: 𝓕 : Type ?u.739254
𝕜 : Type ?u.739257
α : Type ?u.739260
ι : Type u_1
κ : Type ?u.739266
E : Type u_2
F : Type ?u.739272
G : Type ?u.739275
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a✝ a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
s : Finset ι
f a : ι → E
d : ι → ℝ
h : ∀ (b : ι), b ∈ s → dist (f b) (a b) ≤ d b
⊢ dist (∏ b in s, f b) (∏ b in s, a b) ≤ ∑ b in s, d b

tactic: exact norm_prod_le_of_le s h
state_before: 𝓕 : Type ?u.739254
𝕜 : Type ?u.739257
α : Type ?u.739260
ι : Type u_1
κ : Type ?u.739266
E : Type u_2
F : Type ?u.739272
G : Type ?u.739275
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a✝ a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
s : Finset ι
f a : ι → E
d : ι → ℝ
h : ∀ (b : ι), b ∈ s → ‖f b / a b‖ ≤ d b
⊢ ‖∏ x in s, f x / a x‖ ≤ ∑ b in s, d b
Theorem: SatisfiesM_Option_eq
File: Std/Classes/LawfulMonad.lean

tactic: revert x
state_before: α✝ : Type u_1
p : α✝ → Prop
x : Option α✝
⊢ SatisfiesM p x → ∀ (a : α✝), x = some a → p a

tactic: intro | some _, ⟨some ⟨_, h⟩, rfl⟩, _, rfl => exact h
state_before: α✝ : Type u_1
p : α✝ → Prop
⊢ ∀ {x : Option α✝}, SatisfiesM p x → ∀ (a : α✝), x = some a → p a

tactic: exact h
state_before: α✝ : Type u_1
p : α✝ → Prop
x✝³ : Option α✝
x✝² : SatisfiesM p x✝³
x✝¹ : α✝
x✝ : x✝³ = some x✝¹
val✝ : α✝
h : p val✝
⊢ p { val := val✝, property := h }.val
Theorem: RatFunc.denom_algebraMap
File: Mathlib/FieldTheory/RatFunc.lean

tactic: convert denom_div p one_ne_zero <;> simp
state_before: K : Type u
inst✝ : Field K
p : K[X]
⊢ denom (↑(algebraMap K[X] (RatFunc K)) p) = 1
Theorem: MvPolynomial.cardinal_mk_eq_max_lift
File: Mathlib/Data/MvPolynomial/Cardinal.lean

tactic: rw [mk_finsupp_nat, max_assoc, lift_max, lift_aleph0, max_comm]
state_before: σ : Type u
R : Type v
inst✝² : CommSemiring R
inst✝¹ : Nonempty σ
inst✝ : Nontrivial R
⊢ max (lift (#σ →₀ ℕ)) (lift (#R)) = max (max (lift (#R)) (lift (#σ))) ℵ₀
Theorem: Sym2.map_congr
File: Mathlib/Data/Sym/Sym2.lean

tactic: ext y
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.39407
f g : α → β
s : Sym2 α
h : ∀ (x : α), x ∈ s → f x = g x
⊢ map f s = map g s

tactic: simp only [mem_map]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type ?u.39407
f g : α → β
s : Sym2 α
h : ∀ (x : α), x ∈ s → f x = g x
y : β
⊢ y ∈ map f s ↔ y ∈ map g s

tactic: rintro ⟨w, hw, rfl⟩
state_before: case h.mpr
α : Type u_1
β : Type u_2
γ : Type ?u.39407
f g : α → β
s : Sym2 α
h : ∀ (x : α), x ∈ s → f x = g x
y : β
⊢ (∃ a, a ∈ s ∧ g a = y) → ∃ a, a ∈ s ∧ f a = y

tactic: exact ⟨w, hw, by simp [hw, h]⟩
state_before: case h.mpr.intro.intro
α : Type u_1
β : Type u_2
γ : Type ?u.39407
f g : α → β
s : Sym2 α
h : ∀ (x : α), x ∈ s → f x = g x
w : α
hw : w ∈ s
⊢ ∃ a, a ∈ s ∧ f a = g w

tactic: simp [hw, h]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.39407
f g : α → β
s : Sym2 α
h : ∀ (x : α), x ∈ s → f x = g x
w : α
hw : w ∈ s
⊢ f w = g w
Theorem: Set.preimage_sub_const_Iic
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: simp [sub_eq_add_neg]
state_before: α : Type u_1
inst✝ : OrderedAddCommGroup α
a b c : α
⊢ (fun x => x - a) ⁻¹' Iic b = Iic (b + a)
Theorem: OrthogonalFamily.norm_sum
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: have : ((‖∑ i in s, V i (l i)‖ : ℝ) : 𝕜) ^ 2 = ∑ i in s, ((‖l i‖ : ℝ) : 𝕜) ^ 2 := by
  simp only [← inner_self_eq_norm_sq_to_K, hV.inner_sum]
state_before: 𝕜 : Type u_4
E : Type u_2
F : Type ?u.3676885
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace ℝ F
dec_E : DecidableEq E
ι : Type u_1
dec_ι : DecidableEq ι
G : ι → Type u_3
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
hV : OrthogonalFamily 𝕜 G V
dec_V : (i : ι) → (x : G i) → Decidable (x ≠ 0)
l : (i : ι) → G i
s : Finset ι
⊢ ‖∑ i in s, ↑(V i) (l i)‖ ^ 2 = ∑ i in s, ‖l i‖ ^ 2

tactic: exact_mod_cast this
state_before: 𝕜 : Type u_4
E : Type u_2
F : Type ?u.3676885
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace ℝ F
dec_E : DecidableEq E
ι : Type u_1
dec_ι : DecidableEq ι
G : ι → Type u_3
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
hV : OrthogonalFamily 𝕜 G V
dec_V : (i : ι) → (x : G i) → Decidable (x ≠ 0)
l : (i : ι) → G i
s : Finset ι
this : ↑‖∑ i in s, ↑(V i) (l i)‖ ^ 2 = ∑ i in s, ↑‖l i‖ ^ 2
⊢ ‖∑ i in s, ↑(V i) (l i)‖ ^ 2 = ∑ i in s, ‖l i‖ ^ 2

tactic: simp only [← inner_self_eq_norm_sq_to_K, hV.inner_sum]
state_before: 𝕜 : Type u_4
E : Type u_2
F : Type ?u.3676885
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace ℝ F
dec_E : DecidableEq E
ι : Type u_1
dec_ι : DecidableEq ι
G : ι → Type u_3
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
hV : OrthogonalFamily 𝕜 G V
dec_V : (i : ι) → (x : G i) → Decidable (x ≠ 0)
l : (i : ι) → G i
s : Finset ι
⊢ ↑‖∑ i in s, ↑(V i) (l i)‖ ^ 2 = ∑ i in s, ↑‖l i‖ ^ 2
Theorem: Subgroup.isComplement_top_left
File: Mathlib/GroupTheory/Complement.lean

tactic: refine'
  ⟨fun h => Set.exists_eq_singleton_iff_nonempty_subsingleton.mpr ⟨_, fun a ha b hb => _⟩, _⟩
state_before: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
⊢ IsComplement ⊤ S ↔ ∃ g, S = {g}

tactic: obtain ⟨a, _⟩ := h.2 1
state_before: case refine'_1
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
h : IsComplement ⊤ S
⊢ Set.Nonempty S

tactic: exact ⟨a.2.1, a.2.2⟩
state_before: case refine'_1.intro
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
h : IsComplement ⊤ S
a : ↑⊤ × ↑S
h✝ : (fun x => ↑x.fst * ↑x.snd) a = 1
⊢ Set.Nonempty S

tactic: have : (⟨⟨_, mem_top a⁻¹⟩, ⟨a, ha⟩⟩ : (⊤ : Set G) × S) = ⟨⟨_, mem_top b⁻¹⟩, ⟨b, hb⟩⟩ :=
  h.1 ((inv_mul_self a).trans (inv_mul_self b).symm)
state_before: case refine'_2
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
h : IsComplement ⊤ S
a : G
ha : a ∈ S
b : G
hb : b ∈ S
⊢ a = b

tactic: exact Subtype.ext_iff.mp (Prod.ext_iff.mp this).2
state_before: case refine'_2
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
h : IsComplement ⊤ S
a : G
ha : a ∈ S
b : G
hb : b ∈ S
this :
  ({ val := a⁻¹, property := (_ : a⁻¹ ∈ ⊤) }, { val := a, property := ha }) =
    ({ val := b⁻¹, property := (_ : b⁻¹ ∈ ⊤) }, { val := b, property := hb })
⊢ a = b

tactic: rintro ⟨g, rfl⟩
state_before: case refine'_3
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
⊢ (∃ g, S = {g}) → IsComplement ⊤ S

tactic: exact isComplement_top_singleton
state_before: case refine'_3.intro
G : Type u_1
inst✝ : Group G
H K : Subgroup G
T : Set G
g : G
⊢ IsComplement ⊤ {g}
Theorem: TensorProduct.lift.unique
File: Mathlib/LinearAlgebra/TensorProduct.lean

tactic: rw [H, lift.tmul]
state_before: R : Type u_1
inst✝¹⁴ : CommSemiring R
R' : Type ?u.606732
inst✝¹³ : Monoid R'
R'' : Type ?u.606738
inst✝¹² : Semiring R''
M : Type u_3
N : Type u_2
P : Type u_4
Q : Type ?u.606753
S : Type ?u.606756
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
f : M →ₗ[R] N →ₗ[R] P
g : M ⊗[R] N →ₗ[R] P
H : ∀ (x : M) (y : N), ↑g (x ⊗ₜ[R] y) = ↑(↑f x) y
m : M
n : N
⊢ ↑g (m ⊗ₜ[R] n) = ↑(lift f) (m ⊗ₜ[R] n)
Theorem: Finset.erase_subset_iff_of_mem
File: Mathlib/Data/Finset/Basic.lean

tactic: rw [← subset_insert_iff, insert_eq_of_mem h]
state_before: α : Type u_1
β : Type ?u.219160
γ : Type ?u.219163
inst✝ : DecidableEq α
s t u v : Finset α
a b : α
h : a ∈ t
⊢ erase s a ⊆ t ↔ s ⊆ t
Theorem: IsScalarTower.algebraMap_eq
File: Mathlib/Algebra/Algebra/Tower.lean

tactic: simp_rw [RingHom.comp_apply, Algebra.algebraMap_eq_smul_one, smul_assoc, one_smul]
state_before: R : Type u
S : Type v
A : Type w
B : Type u₁
M : Type v₁
inst✝¹⁰ : CommSemiring R
inst✝⁹ : CommSemiring S
inst✝⁸ : Semiring A
inst✝⁷ : Semiring B
inst✝⁶ : Algebra R S
inst✝⁵ : Algebra S A
inst✝⁴ : Algebra S B
inst✝³ : Algebra R A
inst✝² : Algebra R B
inst✝¹ : IsScalarTower R S A
inst✝ : IsScalarTower R S B
x : R
⊢ ↑(algebraMap R A) x = ↑(RingHom.comp (algebraMap S A) (algebraMap R S)) x