tasksource/leandojo huggingface dataset:
Theorem: Fin.succ_eq_last_succ
File: Mathlib/Data/Fin/Basic.lean

tactic: rw [← succ_last, (succ_injective _).eq_iff]
state_before: n✝ m n : ℕ
i : Fin (Nat.succ n)
⊢ succ i = last (n + 1) ↔ i = last n
Theorem: pi_Ioc_mem_nhds
File: Mathlib/Topology/Order/Basic.lean

tactic: refine' mem_of_superset (set_pi_mem_nhds Set.finite_univ fun i _ => _) (pi_univ_Ioc_subset a b)
state_before: α : Type u
β : Type v
γ : Type w
inst✝⁷ : TopologicalSpace α
inst✝⁶ : LinearOrder α
inst✝⁵ : OrderTopology α
ι : Type u_2
π : ι → Type u_1
inst✝⁴ : Finite ι
inst✝³ : (i : ι) → LinearOrder (π i)
inst✝² : (i : ι) → TopologicalSpace (π i)
inst✝¹ : ∀ (i : ι), OrderTopology (π i)
a b x : (i : ι) → π i
a' b' x' : ι → α
inst✝ : Nonempty ι
ha : ∀ (i : ι), a i < x i
hb : ∀ (i : ι), x i < b i
⊢ Ioc a b ∈ 𝓝 x

tactic: exact Ioc_mem_nhds (ha i) (hb i)
state_before: α : Type u
β : Type v
γ : Type w
inst✝⁷ : TopologicalSpace α
inst✝⁶ : LinearOrder α
inst✝⁵ : OrderTopology α
ι : Type u_2
π : ι → Type u_1
inst✝⁴ : Finite ι
inst✝³ : (i : ι) → LinearOrder (π i)
inst✝² : (i : ι) → TopologicalSpace (π i)
inst✝¹ : ∀ (i : ι), OrderTopology (π i)
a b x : (i : ι) → π i
a' b' x' : ι → α
inst✝ : Nonempty ι
ha : ∀ (i : ι), a i < x i
hb : ∀ (i : ι), x i < b i
i : ι
x✝ : i ∈ univ
⊢ Ioc (a i) (b i) ∈ 𝓝 (x i)
Theorem: CategoryTheory.GrothendieckTopology.sheafificationWhiskerLeftIso_inv_app
File: Mathlib/CategoryTheory/Sites/CompatibleSheafification.lean

tactic: dsimp [sheafificationWhiskerLeftIso, sheafifyCompIso]
state_before: C : Type u
inst✝¹⁰ : Category C
J : GrothendieckTopology C
D : Type w₁
inst✝⁹ : Category D
E : Type w₂
inst✝⁸ : Category E
F✝ : D ⥤ E
inst✝⁷ : ∀ (α β : Type (max v u)) (fst snd : β → α), HasLimitsOfShape (WalkingMulticospan fst snd) D
inst✝⁶ : ∀ (α β : Type (max v u)) (fst snd : β → α), HasLimitsOfShape (WalkingMulticospan fst snd) E
inst✝⁵ : ∀ (X : C), HasColimitsOfShape (Cover J X)ᵒᵖ D
inst✝⁴ : ∀ (X : C), HasColimitsOfShape (Cover J X)ᵒᵖ E
inst✝³ : (X : C) → PreservesColimitsOfShape (Cover J X)ᵒᵖ F✝
inst✝² : (X : C) → (W : Cover J X) → (P : Cᵒᵖ ⥤ D) → PreservesLimit (MulticospanIndex.multicospan (Cover.index W P)) F✝
P✝ P : Cᵒᵖ ⥤ D
F : D ⥤ E
inst✝¹ : (F : D ⥤ E) → (X : C) → PreservesColimitsOfShape (Cover J X)ᵒᵖ F
inst✝ :
  (F : D ⥤ E) →
    (X : C) → (W : Cover J X) → (P : Cᵒᵖ ⥤ D) → PreservesLimit (MulticospanIndex.multicospan (Cover.index W P)) F
⊢ (sheafificationWhiskerLeftIso J P).inv.app F = (sheafifyCompIso J F P).inv

tactic: erw [Category.id_comp]
state_before: C : Type u
inst✝¹⁰ : Category C
J : GrothendieckTopology C
D : Type w₁
inst✝⁹ : Category D
E : Type w₂
inst✝⁸ : Category E
F✝ : D ⥤ E
inst✝⁷ : ∀ (α β : Type (max v u)) (fst snd : β → α), HasLimitsOfShape (WalkingMulticospan fst snd) D
inst✝⁶ : ∀ (α β : Type (max v u)) (fst snd : β → α), HasLimitsOfShape (WalkingMulticospan fst snd) E
inst✝⁵ : ∀ (X : C), HasColimitsOfShape (Cover J X)ᵒᵖ D
inst✝⁴ : ∀ (X : C), HasColimitsOfShape (Cover J X)ᵒᵖ E
inst✝³ : (X : C) → PreservesColimitsOfShape (Cover J X)ᵒᵖ F✝
inst✝² : (X : C) → (W : Cover J X) → (P : Cᵒᵖ ⥤ D) → PreservesLimit (MulticospanIndex.multicospan (Cover.index W P)) F✝
P✝ P : Cᵒᵖ ⥤ D
F : D ⥤ E
inst✝¹ : (F : D ⥤ E) → (X : C) → PreservesColimitsOfShape (Cover J X)ᵒᵖ F
inst✝ :
  (F : D ⥤ E) →
    (X : C) → (W : Cover J X) → (P : Cᵒᵖ ⥤ D) → PreservesLimit (MulticospanIndex.multicospan (Cover.index W P)) F
⊢ (𝟙 (plusObj J (plusObj J (P ⋙ F))) ≫ plusMap J (plusCompIso J F P).inv) ≫ (plusCompIso J F (plusObj J P)).inv =
    plusMap J (plusCompIso J F P).inv ≫ (plusCompIso J F (plusObj J P)).inv
Theorem: uniformEquicontinuous_at_iff_range
File: Mathlib/Topology/UniformSpace/Equicontinuity.lean

tactic: rw [← comp_rangeSplitting F]
state_before: ι : Type u_1
κ : Type ?u.49263
X : Type ?u.49266
Y : Type ?u.49269
Z : Type ?u.49272
α : Type u_2
β : Type u_3
γ : Type ?u.49281
𝓕 : Type ?u.49284
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
F : ι → β → α
h : UniformEquicontinuous F
⊢ UniformEquicontinuous Subtype.val

tactic: exact h.comp _
state_before: ι : Type u_1
κ : Type ?u.49263
X : Type ?u.49266
Y : Type ?u.49269
Z : Type ?u.49272
α : Type u_2
β : Type u_3
γ : Type ?u.49281
𝓕 : Type ?u.49284
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
F : ι → β → α
h : UniformEquicontinuous F
⊢ UniformEquicontinuous (F ∘ rangeSplitting F)
Theorem: circleIntegral.norm_integral_le_of_norm_le_const
File: Mathlib/MeasureTheory/Integral/CircleIntegral.lean

tactic: rwa [this]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f : ℂ → E
c : ℂ
R C : ℝ
hR : 0 ≤ R
hf : ∀ (z : ℂ), z ∈ sphere c R → ‖f z‖ ≤ C
this : Abs.abs R = R
⊢ ∀ (z : ℂ), z ∈ sphere c (Abs.abs R) → ‖f z‖ ≤ C

tactic: rw [this]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f : ℂ → E
c : ℂ
R C : ℝ
hR : 0 ≤ R
hf : ∀ (z : ℂ), z ∈ sphere c R → ‖f z‖ ≤ C
this : Abs.abs R = R
⊢ 2 * π * Abs.abs R * C = 2 * π * R * C
Theorem: Part.bind_none
File: Mathlib/Data/Part.lean

tactic: simp
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.20958
f : α → Part β
a : β
⊢ ¬a ∈ Part.bind none f
Theorem: Int.floor_add_one
File: Mathlib/Algebra/Order/Floor.lean

tactic: rw [← cast_one, floor_add_int]
state_before: F : Type ?u.130776
α : Type u_1
β : Type ?u.130782
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a✝ a : α
⊢ ⌊a + 1⌋ = ⌊a⌋ + 1
Theorem: Finset.sum_univ_ite
File: Mathlib/LinearAlgebra/FinsuppVectorSpace.lean

tactic: simp only [ite_smul, zero_smul, one_smul, Finset.sum_ite_eq, Finset.mem_univ, ite_true]
state_before: R : Type u_3
M : Type u_1
n : Type u_2
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
b : n → M
i : n
⊢ (Finset.sum Finset.univ fun x => (if i = x then 1 else 0) • b x) = b i
Theorem: FreeGroup.toWord_injective
File: Mathlib/GroupTheory/FreeGroup.lean

tactic: rintro ⟨L₁⟩ ⟨L₂⟩
state_before: α : Type u
L L₁ L₂ L₃ L₄ : List (α × Bool)
inst✝ : DecidableEq α
⊢ Function.Injective toWord

tactic: exact reduce.exact
state_before: case mk.mk
α : Type u
L L₁✝ L₂✝ L₃ L₄ : List (α × Bool)
inst✝ : DecidableEq α
a₁✝ : FreeGroup α
L₁ : List (α × Bool)
a₂✝ : FreeGroup α
L₂ : List (α × Bool)
⊢ toWord (Quot.mk Red.Step L₁) = toWord (Quot.mk Red.Step L₂) → Quot.mk Red.Step L₁ = Quot.mk Red.Step L₂
Theorem: Multiset.aemeasurable_prod'
File: Mathlib/MeasureTheory/Group/Arithmetic.lean

tactic: rcases l with ⟨l⟩
state_before: M : Type u_1
ι : Type ?u.4397208
α : Type u_2
inst✝² : CommMonoid M
inst✝¹ : MeasurableSpace M
inst✝ : MeasurableMul₂ M
m : MeasurableSpace α
μ : MeasureTheory.Measure α
f : ι → α → M
l : Multiset (α → M)
hl : ∀ (f : α → M), f ∈ l → AEMeasurable f
⊢ AEMeasurable (prod l)

tactic: simpa using l.aemeasurable_prod' (by simpa using hl)
state_before: case mk
M : Type u_1
ι : Type ?u.4397208
α : Type u_2
inst✝² : CommMonoid M
inst✝¹ : MeasurableSpace M
inst✝ : MeasurableMul₂ M
m : MeasurableSpace α
μ : MeasureTheory.Measure α
f : ι → α → M
l✝ : Multiset (α → M)
l : List (α → M)
hl : ∀ (f : α → M), f ∈ Quot.mk Setoid.r l → AEMeasurable f
⊢ AEMeasurable (prod (Quot.mk Setoid.r l))

tactic: simpa using hl
state_before: M : Type u_1
ι : Type ?u.4397208
α : Type u_2
inst✝² : CommMonoid M
inst✝¹ : MeasurableSpace M
inst✝ : MeasurableMul₂ M
m : MeasurableSpace α
μ : MeasureTheory.Measure α
f : ι → α → M
l✝ : Multiset (α → M)
l : List (α → M)
hl : ∀ (f : α → M), f ∈ Quot.mk Setoid.r l → AEMeasurable f
⊢ ∀ (f : α → M), f ∈ l → AEMeasurable f
Theorem: Zsqrtd.divides_sq_eq_zero_z
File: Mathlib/NumberTheory/Zsqrtd/Basic.lean

tactic: rw [mul_assoc, ← Int.natAbs_mul_self, ← Int.natAbs_mul_self, ← Int.ofNat_mul, ← mul_assoc] at h
state_before: d : ℕ
dnsq : Nonsquare d
x y : ℤ
h : x * x = ↑d * y * y
⊢ x = 0 ∧ y = 0

tactic: exact
  let ⟨h1, h2⟩ := divides_sq_eq_zero (Int.ofNat.inj h)
  ⟨Int.natAbs_eq_zero.mp h1, Int.natAbs_eq_zero.mp h2⟩
state_before: d : ℕ
dnsq : Nonsquare d
x y : ℤ
h : ↑(Int.natAbs x * Int.natAbs x) = ↑(d * Int.natAbs y * Int.natAbs y)
⊢ x = 0 ∧ y = 0
Theorem: isClosed_iff_frequently
File: Mathlib/Topology/Basic.lean

tactic: rw [← closure_subset_iff_isClosed]
state_before: α : Type u
β : Type v
ι : Sort w
a : α
s✝ s₁ s₂ t : Set α
p p₁ p₂ : α → Prop
inst✝ : TopologicalSpace α
s : Set α
⊢ IsClosed s ↔ ∀ (x : α), (∃ᶠ (y : α) in 𝓝 x, y ∈ s) → x ∈ s

tactic: refine' forall_congr' fun x => _
state_before: α : Type u
β : Type v
ι : Sort w
a : α
s✝ s₁ s₂ t : Set α
p p₁ p₂ : α → Prop
inst✝ : TopologicalSpace α
s : Set α
⊢ closure s ⊆ s ↔ ∀ (x : α), (∃ᶠ (y : α) in 𝓝 x, y ∈ s) → x ∈ s

tactic: rw [mem_closure_iff_frequently]
state_before: α : Type u
β : Type v
ι : Sort w
a : α
s✝ s₁ s₂ t : Set α
p p₁ p₂ : α → Prop
inst✝ : TopologicalSpace α
s : Set α
x : α
⊢ x ∈ closure s → x ∈ s ↔ (∃ᶠ (y : α) in 𝓝 x, y ∈ s) → x ∈ s
Theorem: AddSubmonoid.closure_pow
File: Mathlib/GroupTheory/Submonoid/Pointwise.lean

tactic: rw [pow_zero, pow_zero, one_eq_closure_one_set]
state_before: α : Type ?u.264941
G : Type ?u.264944
M : Type ?u.264947
R : Type u_1
A : Type ?u.264953
inst✝² : Monoid M
inst✝¹ : AddMonoid A
inst✝ : Semiring R
s : Set R
⊢ closure s ^ 0 = closure (s ^ 0)

tactic: rw [pow_succ, pow_succ, closure_pow s n, closure_mul_closure]
state_before: α : Type ?u.264941
G : Type ?u.264944
M : Type ?u.264947
R : Type u_1
A : Type ?u.264953
inst✝² : Monoid M
inst✝¹ : AddMonoid A
inst✝ : Semiring R
s : Set R
n : ℕ
⊢ closure s ^ (n + 1) = closure (s ^ (n + 1))
Theorem: Nat.zero_union_range_succ
File: Mathlib/Data/Nat/Set.lean

tactic: ext n
state_before: ⊢ {0} ∪ range succ = univ

tactic: cases n <;> simp
state_before: case h
n : ℕ
⊢ n ∈ {0} ∪ range succ ↔ n ∈ univ
Theorem: isEmpty_psum
File: Mathlib/Logic/IsEmpty.lean

tactic: simp only [← not_nonempty_iff, nonempty_psum, not_or]
state_before: α✝ : Sort ?u.3457
β✝ : Sort ?u.3460
γ : Sort ?u.3463
α : Sort u_1
β : Sort u_2
⊢ IsEmpty (α ⊕' β) ↔ IsEmpty α ∧ IsEmpty β
Theorem: Dfinsupp.support_inf
File: Mathlib/Data/Dfinsupp/Order.lean

tactic: ext
state_before: ι : Type u_1
α : ι → Type u_2
inst✝¹ : (i : ι) → CanonicallyLinearOrderedAddMonoid (α i)
inst✝ : DecidableEq ι
f g : Π₀ (i : ι), α i
⊢ support (f ⊓ g) = support f ∩ support g

tactic: simp only [inf_apply, mem_support_iff, Ne.def, Finset.mem_inter]
state_before: case a
ι : Type u_1
α : ι → Type u_2
inst✝¹ : (i : ι) → CanonicallyLinearOrderedAddMonoid (α i)
inst✝ : DecidableEq ι
f g : Π₀ (i : ι), α i
a✝ : ι
⊢ a✝ ∈ support (f ⊓ g) ↔ a✝ ∈ support f ∩ support g

tactic: simp only [inf_eq_min, ← nonpos_iff_eq_zero, min_le_iff, not_or]
state_before: case a
ι : Type u_1
α : ι → Type u_2
inst✝¹ : (i : ι) → CanonicallyLinearOrderedAddMonoid (α i)
inst✝ : DecidableEq ι
f g : Π₀ (i : ι), α i
a✝ : ι
⊢ ¬↑f a✝ ⊓ ↑g a✝ = 0 ↔ ¬↑f a✝ = 0 ∧ ¬↑g a✝ = 0
Theorem: CategoryTheory.Subobject.mk_eq_bot_iff_zero
File: Mathlib/CategoryTheory/Subobject/Lattice.lean

tactic: simpa [h, bot_factors_iff_zero] using mk_factors_self f
state_before: C : Type u₁
inst✝⁴ : Category C
X Y Z : C
D : Type u₂
inst✝³ : Category D
inst✝² : HasZeroObject C
inst✝¹ : HasZeroMorphisms C
f : X ⟶ Y
inst✝ : Mono f
h : mk f = ⊥
⊢ f = 0

tactic: simp [h]
state_before: C : Type u₁
inst✝⁴ : Category C
X Y Z : C
D : Type u₂
inst✝³ : Category D
inst✝² : HasZeroObject C
inst✝¹ : HasZeroMorphisms C
f : X ⟶ Y
inst✝ : Mono f
h : f = 0
⊢ (isoZeroOfMonoEqZero h ≪≫ HasZeroObject.zeroIsoInitial).hom ≫ initial.to Y = f
Theorem: AlgebraicGeometry.RingedSpace.basicOpen_mul
File: Mathlib/AlgebraicGeometry/RingedSpace.lean

tactic: ext1
state_before: X : RingedSpace
U : Opens ↑↑X.toPresheafedSpace
f g : ↑(X.presheaf.obj U.op)
⊢ basicOpen X (f * g) = basicOpen X f ⊓ basicOpen X g

tactic: dsimp [RingedSpace.basicOpen]
state_before: case h
X : RingedSpace
U : Opens ↑↑X.toPresheafedSpace
f g : ↑(X.presheaf.obj U.op)
⊢ ↑(basicOpen X (f * g)) = ↑(basicOpen X f ⊓ basicOpen X g)

tactic: rw [← Set.image_inter Subtype.coe_injective]
state_before: case h
X : RingedSpace
U : Opens ↑↑X.toPresheafedSpace
f g : ↑(X.presheaf.obj U.op)
⊢ Subtype.val '' {x | IsUnit (↑(germ X.presheaf x) (f * g))} =
    Subtype.val '' {x | IsUnit (↑(germ X.presheaf x) f)} ∩ Subtype.val '' {x | IsUnit (↑(germ X.presheaf x) g)}

tactic: congr
state_before: case h
X : RingedSpace
U : Opens ↑↑X.toPresheafedSpace
f g : ↑(X.presheaf.obj U.op)
⊢ Subtype.val '' {x | IsUnit (↑(germ X.presheaf x) (f * g))} =
    (fun a => ↑a) '' ({x | IsUnit (↑(germ X.presheaf x) f)} ∩ {x | IsUnit (↑(germ X.presheaf x) g)})

tactic: ext x
state_before: case h
X : RingedSpace
U : Opens ↑↑X.toPresheafedSpace
f g : ↑(X.presheaf.obj U.op)
⊢ Subtype.val '' {x | IsUnit (↑(germ X.presheaf x) (f * g))} =
    (fun a => ↑a) '' ({x | IsUnit (↑(germ X.presheaf x) f)} ∩ {x | IsUnit (↑(germ X.presheaf x) g)})

tactic: simp [map_mul, Set.mem_image]
state_before: case h.h
X : RingedSpace
U : Opens ↑↑X.toPresheafedSpace
f g : ↑(X.presheaf.obj U.op)
x : ↑↑X.toPresheafedSpace
⊢ x ∈ Subtype.val '' {x | IsUnit (↑(germ X.presheaf x) (f * g))} ↔
    x ∈ (fun a => ↑a) '' ({x | IsUnit (↑(germ X.presheaf x) f)} ∩ {x | IsUnit (↑(germ X.presheaf x) g)})
Theorem: LocalHomeomorph.restr_source_inter
File: Mathlib/Topology/LocalHomeomorph.lean

tactic: refine' LocalHomeomorph.ext _ _ (fun x => rfl) (fun x => rfl) _
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.54413
δ : Type ?u.54416
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
e : LocalHomeomorph α β
e' : LocalHomeomorph β γ
s : Set α
⊢ LocalHomeomorph.restr e (e.source ∩ s) = LocalHomeomorph.restr e s

tactic: simp [e.open_source.interior_eq, ← inter_assoc]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.54413
δ : Type ?u.54416
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
e : LocalHomeomorph α β
e' : LocalHomeomorph β γ
s : Set α
⊢ (LocalHomeomorph.restr e (e.source ∩ s)).toLocalEquiv.source = (LocalHomeomorph.restr e s).toLocalEquiv.source
Theorem: Localization.mk_zero
File: Mathlib/GroupTheory/MonoidLocalization.lean

tactic: simp
state_before: M : Type u_1
inst✝² : CommMonoidWithZero M
S : Submonoid M
N : Type ?u.3329406
inst✝¹ : CommMonoidWithZero N
P : Type ?u.3329412
inst✝ : CommMonoidWithZero P
x : { x // x ∈ S }
⊢ ↑(0, 1).snd * (0, x).fst = ↑(0, x).snd * (0, 1).fst
Theorem: MeasureTheory.lintegral_strict_mono
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: rw [Ne.def, ← Measure.measure_univ_eq_zero] at hμ
state_before: α : Type u_1
β : Type ?u.985899
γ : Type ?u.985902
δ : Type ?u.985905
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hμ : μ ≠ 0
hg : AEMeasurable g
hfi : (∫⁻ (x : α), f x ∂μ) ≠ ⊤
h : ∀ᵐ (x : α) ∂μ, f x < g x
⊢ (∫⁻ (x : α), f x ∂μ) < ∫⁻ (x : α), g x ∂μ

tactic: refine' lintegral_strict_mono_of_ae_le_of_ae_lt_on hg hfi (ae_le_of_ae_lt h) hμ _
state_before: α : Type u_1
β : Type ?u.985899
γ : Type ?u.985902
δ : Type ?u.985905
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hμ : ¬↑↑μ univ = 0
hg : AEMeasurable g
hfi : (∫⁻ (x : α), f x ∂μ) ≠ ⊤
h : ∀ᵐ (x : α) ∂μ, f x < g x
⊢ (∫⁻ (x : α), f x ∂μ) < ∫⁻ (x : α), g x ∂μ

tactic: simpa using h
state_before: α : Type u_1
β : Type ?u.985899
γ : Type ?u.985902
δ : Type ?u.985905
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hμ : ¬↑↑μ univ = 0
hg : AEMeasurable g
hfi : (∫⁻ (x : α), f x ∂μ) ≠ ⊤
h : ∀ᵐ (x : α) ∂μ, f x < g x
⊢ ∀ᵐ (x : α) ∂μ, x ∈ univ → f x < g x
Theorem: uniformEmbedding_set_inclusion
File: Mathlib/Topology/UniformSpace/UniformEmbedding.lean

tactic: rw [uniformity_subtype, uniformity_subtype, comap_comap]
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
s t : Set α
hst : s ⊆ t
⊢ comap (fun x => (inclusion hst x.fst, inclusion hst x.snd)) (𝓤 ↑t) = 𝓤 ↑s

tactic: rfl
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
s t : Set α
hst : s ⊆ t
⊢ comap ((fun q => (↑q.fst, ↑q.snd)) ∘ fun x => (inclusion hst x.fst, inclusion hst x.snd)) (𝓤 α) =
    comap (fun q => (↑q.fst, ↑q.snd)) (𝓤 α)
Theorem: FreeGroup.Red.Step.lift
File: Mathlib/GroupTheory/FreeGroup.lean

tactic: cases' H with _ _ _ b
state_before: α : Type u
L L₁ L₂ L₃ L₄ : List (α × Bool)
β : Type v
inst✝ : Group β
f✝ : α → β
x y : FreeGroup α
f : α → β
H : Step L₁ L₂
⊢ Lift.aux f L₁ = Lift.aux f L₂

tactic: cases b <;> simp [Lift.aux]
state_before: case not
α : Type u
L L₃ L₄ : List (α × Bool)
β : Type v
inst✝ : Group β
f✝ : α → β
x y : FreeGroup α
f : α → β
L₁✝ L₂✝ : List (α × Bool)
x✝ : α
b : Bool
⊢ Lift.aux f (L₁✝ ++ (x✝, b) :: (x✝, !b) :: L₂✝) = Lift.aux f (L₁✝ ++ L₂✝)
Theorem: Set.mk_preimage_prod_right_eq_if
File: Mathlib/Data/Set/Prod.lean

tactic: split_ifs with h <;> simp [h]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.28728
δ : Type ?u.28731
s s₁ s₂ : Set α
t t₁ t₂ : Set β
a : α
b : β
inst✝ : DecidablePred fun x => x ∈ s
⊢ Prod.mk a ⁻¹' s ×ˢ t = if a ∈ s then t else ∅
Theorem: continuousOn_iff_continuous_restrict
File: Mathlib/Topology/ContinuousOn.lean

tactic: rw [ContinuousOn, continuous_iff_continuousAt]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.312868
δ : Type ?u.312871
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α → β
s : Set α
⊢ ContinuousOn f s ↔ Continuous (restrict s f)

tactic: constructor
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.312868
δ : Type ?u.312871
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α → β
s : Set α
⊢ (∀ (x : α), x ∈ s → ContinuousWithinAt f s x) ↔ ∀ (x : ↑s), ContinuousAt (restrict s f) x

tactic: intro h x xs
state_before: case mpr
α : Type u_1
β : Type u_2
γ : Type ?u.312868
δ : Type ?u.312871
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α → β
s : Set α
⊢ (∀ (x : ↑s), ContinuousAt (restrict s f) x) → ∀ (x : α), x ∈ s → ContinuousWithinAt f s x

tactic: exact (continuousWithinAt_iff_continuousAt_restrict f xs).mpr (h ⟨x, xs⟩)
state_before: case mpr
α : Type u_1
β : Type u_2
γ : Type ?u.312868
δ : Type ?u.312871
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α → β
s : Set α
h : ∀ (x : ↑s), ContinuousAt (restrict s f) x
x : α
xs : x ∈ s
⊢ ContinuousWithinAt f s x

tactic: rintro h ⟨x, xs⟩
state_before: case mp
α : Type u_1
β : Type u_2
γ : Type ?u.312868
δ : Type ?u.312871
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α → β
s : Set α
⊢ (∀ (x : α), x ∈ s → ContinuousWithinAt f s x) → ∀ (x : ↑s), ContinuousAt (restrict s f) x

tactic: exact (continuousWithinAt_iff_continuousAt_restrict f xs).mp (h x xs)
state_before: case mp.mk
α : Type u_1
β : Type u_2
γ : Type ?u.312868
δ : Type ?u.312871
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α → β
s : Set α
h : ∀ (x : α), x ∈ s → ContinuousWithinAt f s x
x : α
xs : x ∈ s
⊢ ContinuousAt (restrict s f) { val := x, property := xs }
Theorem: Finite.wellFounded_of_trans_of_irrefl
File: Mathlib/Data/Fintype/Card.lean

tactic: classical
cases nonempty_fintype α;
exact
  have :
    ∀ x y, r x y → (univ.filter fun z => r z x).card < (univ.filter fun z => r z y).card :=
    fun x y hxy =>
    Finset.card_lt_card <| by
      simp only [Finset.lt_iff_ssubset.symm, lt_iff_le_not_le, Finset.le_iff_subset,
          Finset.subset_iff, mem_filter, true_and_iff, mem_univ, hxy];
      exact
        ⟨fun z hzx => _root_.trans hzx hxy,
          not_forall_of_exists_not ⟨x, not_imp.2 ⟨hxy, irrefl x⟩⟩⟩
  Subrelation.wf (this _ _) (measure _).wf
state_before: α : Type u_1
β : Type ?u.61329
γ : Type ?u.61332
inst✝² : Finite α
r : α → α → Prop
inst✝¹ : IsTrans α r
inst✝ : IsIrrefl α r
⊢ WellFounded r

tactic: cases nonempty_fintype α
state_before: α : Type u_1
β : Type ?u.61329
γ : Type ?u.61332
inst✝² : Finite α
r : α → α → Prop
inst✝¹ : IsTrans α r
inst✝ : IsIrrefl α r
⊢ WellFounded r

tactic: exact
  have :
    ∀ x y, r x y → (univ.filter fun z => r z x).card < (univ.filter fun z => r z y).card :=
    fun x y hxy =>
    Finset.card_lt_card <| by
      simp only [Finset.lt_iff_ssubset.symm, lt_iff_le_not_le, Finset.le_iff_subset,
          Finset.subset_iff, mem_filter, true_and_iff, mem_univ, hxy];
      exact
        ⟨fun z hzx => _root_.trans hzx hxy,
          not_forall_of_exists_not ⟨x, not_imp.2 ⟨hxy, irrefl x⟩⟩⟩
  Subrelation.wf (this _ _) (measure _).wf
state_before: case intro
α : Type u_1
β : Type ?u.61329
γ : Type ?u.61332
inst✝² : Finite α
r : α → α → Prop
inst✝¹ : IsTrans α r
inst✝ : IsIrrefl α r
val✝ : Fintype α
⊢ WellFounded r

tactic: simp only [Finset.lt_iff_ssubset.symm, lt_iff_le_not_le, Finset.le_iff_subset,
    Finset.subset_iff, mem_filter, true_and_iff, mem_univ, hxy]
state_before: α : Type u_1
β : Type ?u.61329
γ : Type ?u.61332
inst✝² : Finite α
r : α → α → Prop
inst✝¹ : IsTrans α r
inst✝ : IsIrrefl α r
val✝ : Fintype α
x y : α
hxy : r x y
⊢ filter (fun z => r z x) univ ⊂ filter (fun z => r z y) univ

tactic: exact
  ⟨fun z hzx => _root_.trans hzx hxy,
    not_forall_of_exists_not ⟨x, not_imp.2 ⟨hxy, irrefl x⟩⟩⟩
state_before: α : Type u_1
β : Type ?u.61329
γ : Type ?u.61332
inst✝² : Finite α
r : α → α → Prop
inst✝¹ : IsTrans α r
inst✝ : IsIrrefl α r
val✝ : Fintype α
x y : α
hxy : r x y
⊢ (∀ ⦃x_1 : α⦄, r x_1 x → r x_1 y) ∧ ¬∀ ⦃x_1 : α⦄, r x_1 y → r x_1 x
Theorem: MeasureTheory.OuterMeasure.ofFunction_caratheodory
File: Mathlib/MeasureTheory/Measure/OuterMeasure.lean

tactic: apply (isCaratheodory_iff_le _).mpr
state_before: α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
h₀ : m ∅ = 0
hs : ∀ (t : Set α), m (t ∩ s) + m (t \ s) ≤ m t
⊢ MeasurableSet s

tactic: refine' fun t => le_iInf fun f => le_iInf fun hf => _
state_before: α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
h₀ : m ∅ = 0
hs : ∀ (t : Set α), m (t ∩ s) + m (t \ s) ≤ m t
⊢ ∀ (t : Set α),
    ↑(OuterMeasure.ofFunction m h₀) (t ∩ s) + ↑(OuterMeasure.ofFunction m h₀) (t \ s) ≤
      ↑(OuterMeasure.ofFunction m h₀) t

tactic: refine'
  le_trans
    (add_le_add ((iInf_le_of_le fun i => f i ∩ s) <| iInf_le _ _)
      ((iInf_le_of_le fun i => f i \ s) <| iInf_le _ _))
    _
state_before: α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
h₀ : m ∅ = 0
hs : ∀ (t : Set α), m (t ∩ s) + m (t \ s) ≤ m t
t : Set α
f : ℕ → Set α
hf : t ⊆ ⋃ (i : ℕ), f i
⊢ ↑(OuterMeasure.ofFunction m h₀) (t ∩ s) + ↑(OuterMeasure.ofFunction m h₀) (t \ s) ≤ ∑' (i : ℕ), m (f i)

tactic: rw [← iUnion_inter]
state_before: case refine'_1
α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
h₀ : m ∅ = 0
hs : ∀ (t : Set α), m (t ∩ s) + m (t \ s) ≤ m t
t : Set α
f : ℕ → Set α
hf : t ⊆ ⋃ (i : ℕ), f i
⊢ t ∩ s ⊆ ⋃ (i : ℕ), (fun i => f i ∩ s) i

tactic: exact inter_subset_inter_left _ hf
state_before: case refine'_1
α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
h₀ : m ∅ = 0
hs : ∀ (t : Set α), m (t ∩ s) + m (t \ s) ≤ m t
t : Set α
f : ℕ → Set α
hf : t ⊆ ⋃ (i : ℕ), f i
⊢ t ∩ s ⊆ (⋃ (i : ℕ), f i) ∩ s

tactic: rw [← iUnion_diff]
state_before: case refine'_2
α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
h₀ : m ∅ = 0
hs : ∀ (t : Set α), m (t ∩ s) + m (t \ s) ≤ m t
t : Set α
f : ℕ → Set α
hf : t ⊆ ⋃ (i : ℕ), f i
⊢ t \ s ⊆ ⋃ (i : ℕ), (fun i => f i \ s) i

tactic: exact diff_subset_diff_left hf
state_before: case refine'_2
α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
h₀ : m ∅ = 0
hs : ∀ (t : Set α), m (t ∩ s) + m (t \ s) ≤ m t
t : Set α
f : ℕ → Set α
hf : t ⊆ ⋃ (i : ℕ), f i
⊢ t \ s ⊆ (⋃ (i : ℕ), f i) \ s

tactic: rw [← ENNReal.tsum_add]
state_before: case refine'_3
α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
h₀ : m ∅ = 0
hs : ∀ (t : Set α), m (t ∩ s) + m (t \ s) ≤ m t
t : Set α
f : ℕ → Set α
hf : t ⊆ ⋃ (i : ℕ), f i
⊢ ((∑' (i : ℕ), m ((fun i => f i ∩ s) i)) + ∑' (i : ℕ), m ((fun i => f i \ s) i)) ≤ ∑' (i : ℕ), m (f i)

tactic: exact ENNReal.tsum_le_tsum fun i => hs _
state_before: case refine'_3
α : Type u_1
m : Set α → ℝ≥0∞
s : Set α
h₀ : m ∅ = 0
hs : ∀ (t : Set α), m (t ∩ s) + m (t \ s) ≤ m t
t : Set α
f : ℕ → Set α
hf : t ⊆ ⋃ (i : ℕ), f i
⊢ (∑' (a : ℕ), m ((fun i => f i ∩ s) a) + m ((fun i => f i \ s) a)) ≤ ∑' (i : ℕ), m (f i)