tasksource/leandojo huggingface dataset:
Theorem: IsCompl.prod_mul_prod
File: Mathlib/Algebra/BigOperators/Basic.lean

tactic: classical rw [Finset.disjUnion_eq_union, ← Finset.sup_eq_union, h.sup_eq_top]; rfl
state_before: ι : Type ?u.302040
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝¹ : Fintype α
inst✝ : CommMonoid β
s t : Finset α
h : IsCompl s t
f : α → β
⊢ ∏ x in disjUnion s t (_ : Disjoint s t), f x = ∏ i : α, f i

tactic: rw [Finset.disjUnion_eq_union, ← Finset.sup_eq_union, h.sup_eq_top]
state_before: ι : Type ?u.302040
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝¹ : Fintype α
inst✝ : CommMonoid β
s t : Finset α
h : IsCompl s t
f : α → β
⊢ ∏ x in disjUnion s t (_ : Disjoint s t), f x = ∏ i : α, f i

tactic: rfl
state_before: ι : Type ?u.302040
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝¹ : Fintype α
inst✝ : CommMonoid β
s t : Finset α
h : IsCompl s t
f : α → β
⊢ ∏ x in ⊤, f x = ∏ i : α, f i
Theorem: List.all₂_iff_forall
File: Mathlib/Data/List/Basic.lean

tactic: rw [forall_mem_cons, all₂_cons, all₂_iff_forall]
state_before: ι : Type ?u.480230
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p q : α → Prop
l✝ : List α
x : α
l : List α
⊢ All₂ p (x :: l) ↔ ∀ (x_1 : α), x_1 ∈ x :: l → p x_1
Theorem: Equiv.Perm.isCycleOn_singleton
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

tactic: simp [IsCycleOn, SameCycle.rfl]
state_before: ι : Type ?u.1641196
α : Type u_1
β : Type ?u.1641202
f g : Perm α
s t : Set α
a b x y : α
⊢ IsCycleOn f {a} ↔ ↑f a = a
Theorem: Nat.add_sub_cancel_left
File: src/lean/Init/Data/Nat/Basic.lean

tactic: rw [Nat.add_sub_add_left, Nat.sub_zero]
state_before: n m : Nat
⊢ n + m - (n + 0) = m
Theorem: Int.card_fintype_Icc
File: Mathlib/Data/Int/Interval.lean

tactic: rw [← card_Icc, Fintype.card_ofFinset]
state_before: a b : ℤ
⊢ Fintype.card ↑(Set.Icc a b) = toNat (b + 1 - a)
Theorem: MeasureTheory.Measure.haar.index_mono
File: Mathlib/MeasureTheory/Measure/Haar/Basic.lean

tactic: rcases index_elim hK' hV with ⟨s, h1s, h2s⟩
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K K' V : Set G
hK' : IsCompact K'
h : K ⊆ K'
hV : Set.Nonempty (interior V)
⊢ index K V ≤ index K' V

tactic: apply Nat.sInf_le
state_before: case intro.intro
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K K' V : Set G
hK' : IsCompact K'
h : K ⊆ K'
hV : Set.Nonempty (interior V)
s : Finset G
h1s : K' ⊆ ⋃ (g : G) (_ : g ∈ s), (fun h => g * h) ⁻¹' V
h2s : Finset.card s = index K' V
⊢ index K V ≤ index K' V

tactic: rw [mem_image]
state_before: case intro.intro.hm
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K K' V : Set G
hK' : IsCompact K'
h : K ⊆ K'
hV : Set.Nonempty (interior V)
s : Finset G
h1s : K' ⊆ ⋃ (g : G) (_ : g ∈ s), (fun h => g * h) ⁻¹' V
h2s : Finset.card s = index K' V
⊢ index K' V ∈ Finset.card '' {t | K ⊆ ⋃ (g : G) (_ : g ∈ t), (fun h => g * h) ⁻¹' V}

tactic: refine' ⟨s, Subset.trans h h1s, h2s⟩
state_before: case intro.intro.hm
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K K' V : Set G
hK' : IsCompact K'
h : K ⊆ K'
hV : Set.Nonempty (interior V)
s : Finset G
h1s : K' ⊆ ⋃ (g : G) (_ : g ∈ s), (fun h => g * h) ⁻¹' V
h2s : Finset.card s = index K' V
⊢ ∃ x, x ∈ {t | K ⊆ ⋃ (g : G) (_ : g ∈ t), (fun h => g * h) ⁻¹' V} ∧ Finset.card x = index K' V
Theorem: Algebra.TensorProduct.lid_tmul
File: Mathlib/RingTheory/TensorProduct.lean

tactic: simp [TensorProduct.lid]
state_before: R : Type u
inst✝⁸ : CommSemiring R
A : Type v₁
inst✝⁷ : Semiring A
inst✝⁶ : Algebra R A
B : Type v₂
inst✝⁵ : Semiring B
inst✝⁴ : Algebra R B
C : Type v₃
inst✝³ : Semiring C
inst✝² : Algebra R C
D : Type v₄
inst✝¹ : Semiring D
inst✝ : Algebra R D
r : R
a : A
⊢ ↑(TensorProduct.lid R A) (r ⊗ₜ[R] a) = r • a
Theorem: Equiv.Perm.Disjoint.extendDomain
File: Mathlib/GroupTheory/Perm/Sign.lean

tactic: intro b
state_before: α✝ : Type u
β : Type v
α : Type u_1
p : β → Prop
inst✝ : DecidablePred p
f : α ≃ Subtype p
σ τ : Perm α
h : Disjoint σ τ
⊢ Disjoint (Perm.extendDomain σ f) (Perm.extendDomain τ f)

tactic: by_cases pb : p b
state_before: α✝ : Type u
β : Type v
α : Type u_1
p : β → Prop
inst✝ : DecidablePred p
f : α ≃ Subtype p
σ τ : Perm α
h : Disjoint σ τ
b : β
⊢ ↑(Perm.extendDomain σ f) b = b ∨ ↑(Perm.extendDomain τ f) b = b

tactic: intro h
state_before: case pos.refine'_2
α✝ : Type u
β : Type v
α : Type u_1
p : β → Prop
inst✝ : DecidablePred p
f : α ≃ Subtype p
σ τ : Perm α
h : Disjoint σ τ
b : β
pb : p b
⊢ ↑τ (↑f.symm { val := b, property := pb }) = ↑f.symm { val := b, property := pb } → ↑(Perm.extendDomain τ f) b = b

tactic: rw [extendDomain_apply_subtype _ _ pb, h, apply_symm_apply, Subtype.coe_mk]
state_before: case pos.refine'_2
α✝ : Type u
β : Type v
α : Type u_1
p : β → Prop
inst✝ : DecidablePred p
f : α ≃ Subtype p
σ τ : Perm α
h✝ : Disjoint σ τ
b : β
pb : p b
h : ↑τ (↑f.symm { val := b, property := pb }) = ↑f.symm { val := b, property := pb }
⊢ ↑(Perm.extendDomain τ f) b = b

tactic: left
state_before: case neg
α✝ : Type u
β : Type v
α : Type u_1
p : β → Prop
inst✝ : DecidablePred p
f : α ≃ Subtype p
σ τ : Perm α
h : Disjoint σ τ
b : β
pb : ¬p b
⊢ ↑(Perm.extendDomain σ f) b = b ∨ ↑(Perm.extendDomain τ f) b = b

tactic: rw [extendDomain_apply_not_subtype _ _ pb]
state_before: case neg.h
α✝ : Type u
β : Type v
α : Type u_1
p : β → Prop
inst✝ : DecidablePred p
f : α ≃ Subtype p
σ τ : Perm α
h : Disjoint σ τ
b : β
pb : ¬p b
⊢ ↑(Perm.extendDomain σ f) b = b
Theorem: GaloisConnection.l_eq
File: Mathlib/Order/GaloisConnection.lean

tactic: constructor
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
κ : ι → Sort ?u.14243
a a₁ a₂ : α
b b₁ b₂ : β
inst✝¹ : Preorder α
inst✝ : PartialOrder β
l : α → β
u : β → α
gc : GaloisConnection l u
x : α
z : β
⊢ l x = z ↔ ∀ (y : β), z ≤ y ↔ x ≤ u y

tactic: rintro rfl y
state_before: case mp
α : Type u
β : Type v
γ : Type w
ι : Sort x
κ : ι → Sort ?u.14243
a a₁ a₂ : α
b b₁ b₂ : β
inst✝¹ : Preorder α
inst✝ : PartialOrder β
l : α → β
u : β → α
gc : GaloisConnection l u
x : α
z : β
⊢ l x = z → ∀ (y : β), z ≤ y ↔ x ≤ u y

tactic: exact gc x y
state_before: case mp
α : Type u
β : Type v
γ : Type w
ι : Sort x
κ : ι → Sort ?u.14243
a a₁ a₂ : α
b b₁ b₂ : β
inst✝¹ : Preorder α
inst✝ : PartialOrder β
l : α → β
u : β → α
gc : GaloisConnection l u
x : α
y : β
⊢ l x ≤ y ↔ x ≤ u y

tactic: intro H
state_before: case mpr
α : Type u
β : Type v
γ : Type w
ι : Sort x
κ : ι → Sort ?u.14243
a a₁ a₂ : α
b b₁ b₂ : β
inst✝¹ : Preorder α
inst✝ : PartialOrder β
l : α → β
u : β → α
gc : GaloisConnection l u
x : α
z : β
⊢ (∀ (y : β), z ≤ y ↔ x ≤ u y) → l x = z

tactic: exact ((gc _ _).mpr <| (H z).mp le_rfl).antisymm ((H <| l x).mpr (gc.le_u_l x))
state_before: case mpr
α : Type u
β : Type v
γ : Type w
ι : Sort x
κ : ι → Sort ?u.14243
a a₁ a₂ : α
b b₁ b₂ : β
inst✝¹ : Preorder α
inst✝ : PartialOrder β
l : α → β
u : β → α
gc : GaloisConnection l u
x : α
z : β
H : ∀ (y : β), z ≤ y ↔ x ≤ u y
⊢ l x = z
Theorem: Cycle.map_eq_nil
File: Mathlib/Data/List/Cycle.lean

tactic: simp
state_before: α : Type u_2
β : Type u_1
f : α → β
s : Cycle α
⊢ ∀ (a : List α), map f (Quotient.mk'' a) = nil ↔ Quotient.mk'' a = nil
Theorem: MvPolynomial.weightedTotalDegree_zero
File: Mathlib/RingTheory/MvPolynomial/WeightedHomogeneous.lean

tactic: simp only [weightedTotalDegree, support_zero, Finset.sup_empty]
state_before: R : Type u_2
M : Type u_1
inst✝³ : CommSemiring R
σ : Type u_3
inst✝² : AddCommMonoid M
inst✝¹ : SemilatticeSup M
inst✝ : OrderBot M
w : σ → M
⊢ weightedTotalDegree w 0 = ⊥
Theorem: Quaternion.coe_real_complex_mul
File: Mathlib/Analysis/Quaternion.lean

tactic: ext <;> simp
state_before: r : ℝ
z : ℂ
⊢ ↑(r • z) = ↑r * ↑z
Theorem: GroupCat.surjective_of_epi
File: Mathlib/Algebra/Category/GroupCat/EpiMono.lean

tactic: by_contra r
state_before: A B : GroupCat
f : A ⟶ B
inst✝ : Epi f
⊢ Function.Surjective ↑f

tactic: dsimp [Function.Surjective] at r
state_before: A B : GroupCat
f : A ⟶ B
inst✝ : Epi f
r : ¬Function.Surjective ↑f
⊢ False

tactic: push_neg at r
state_before: A B : GroupCat
f : A ⟶ B
inst✝ : Epi f
r : ¬∀ (b : ↑B), ∃ a, ↑f a = b
⊢ False

tactic: rcases r with ⟨b, hb⟩
state_before: A B : GroupCat
f : A ⟶ B
inst✝ : Epi f
r : ∃ b, ∀ (a : ↑A), ↑f a ≠ b
⊢ False

tactic: exact
  SurjectiveOfEpiAuxs.g_ne_h f b (fun ⟨c, hc⟩ => hb _ hc)
    ((cancel_epi f).1 (SurjectiveOfEpiAuxs.comp_eq f))
state_before: case intro
A B : GroupCat
f : A ⟶ B
inst✝ : Epi f
b : ↑B
hb : ∀ (a : ↑A), ↑f a ≠ b
⊢ False
Theorem: MeasureTheory.measurable_measure_mul_right
File: Mathlib/MeasureTheory/Group/Prod.lean

tactic: suffices
  Measurable fun y =>
    μ ((fun x => (x, y)) ⁻¹' ((fun z : G × G => ((1 : G), z.1 * z.2)) ⁻¹' univ ×ˢ s))
  by convert this using 1; ext1 x; congr 1 with y : 1; simp
state_before: G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SigmaFinite ν
inst✝ : SigmaFinite μ
s : Set G
hs : MeasurableSet s
⊢ Measurable fun x => ↑↑μ ((fun y => y * x) ⁻¹' s)

tactic: apply measurable_measure_prod_mk_right
state_before: G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SigmaFinite ν
inst✝ : SigmaFinite μ
s : Set G
hs : MeasurableSet s
⊢ Measurable fun y => ↑↑μ ((fun x => (x, y)) ⁻¹' ((fun z => (1, z.fst * z.snd)) ⁻¹' univ ×ˢ s))

tactic: apply measurable_const.prod_mk measurable_mul (MeasurableSet.univ.prod hs)
state_before: case hs
G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SigmaFinite ν
inst✝ : SigmaFinite μ
s : Set G
hs : MeasurableSet s
⊢ MeasurableSet ((fun z => (1, z.fst * z.snd)) ⁻¹' univ ×ˢ s)

tactic: infer_instance
state_before: G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SigmaFinite ν
inst✝ : SigmaFinite μ
s : Set G
hs : MeasurableSet s
⊢ MeasurableSpace G

tactic: convert this using 1
state_before: G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SigmaFinite ν
inst✝ : SigmaFinite μ
s : Set G
hs : MeasurableSet s
this : Measurable fun y => ↑↑μ ((fun x => (x, y)) ⁻¹' ((fun z => (1, z.fst * z.snd)) ⁻¹' univ ×ˢ s))
⊢ Measurable fun x => ↑↑μ ((fun y => y * x) ⁻¹' s)

tactic: ext1 x
state_before: case h.e'_5
G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SigmaFinite ν
inst✝ : SigmaFinite μ
s : Set G
hs : MeasurableSet s
this : Measurable fun y => ↑↑μ ((fun x => (x, y)) ⁻¹' ((fun z => (1, z.fst * z.snd)) ⁻¹' univ ×ˢ s))
⊢ (fun x => ↑↑μ ((fun y => y * x) ⁻¹' s)) = fun y =>
    ↑↑μ ((fun x => (x, y)) ⁻¹' ((fun z => (1, z.fst * z.snd)) ⁻¹' univ ×ˢ s))

tactic: congr 1 with y : 1
state_before: case h.e'_5.h
G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SigmaFinite ν
inst✝ : SigmaFinite μ
s : Set G
hs : MeasurableSet s
this : Measurable fun y => ↑↑μ ((fun x => (x, y)) ⁻¹' ((fun z => (1, z.fst * z.snd)) ⁻¹' univ ×ˢ s))
x : G
⊢ ↑↑μ ((fun y => y * x) ⁻¹' s) = ↑↑μ ((fun x_1 => (x_1, x)) ⁻¹' ((fun z => (1, z.fst * z.snd)) ⁻¹' univ ×ˢ s))

tactic: simp
state_before: case h.e'_5.h.e_a.h
G : Type u_1
inst✝⁴ : MeasurableSpace G
inst✝³ : Group G
inst✝² : MeasurableMul₂ G
μ ν : Measure G
inst✝¹ : SigmaFinite ν
inst✝ : SigmaFinite μ
s : Set G
hs : MeasurableSet s
this : Measurable fun y => ↑↑μ ((fun x => (x, y)) ⁻¹' ((fun z => (1, z.fst * z.snd)) ⁻¹' univ ×ˢ s))
x y : G
⊢ y ∈ (fun y => y * x) ⁻¹' s ↔ y ∈ (fun x_1 => (x_1, x)) ⁻¹' ((fun z => (1, z.fst * z.snd)) ⁻¹' univ ×ˢ s)
Theorem: MeasureTheory.Measure.ae_smul_measure_iff
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: simp only [ae_iff, Algebra.id.smul_eq_mul, smul_apply, or_iff_right_iff_imp, mul_eq_zero]
state_before: α : Type u_1
β : Type ?u.134378
γ : Type ?u.134381
δ : Type ?u.134384
ι : Type ?u.134387
R : Type ?u.134390
R' : Type ?u.134393
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
p : α → Prop
c : ℝ≥0∞
hc : c ≠ 0
⊢ (∀ᵐ (x : α) ∂c • μ, p x) ↔ ∀ᵐ (x : α) ∂μ, p x

tactic: simp only [IsEmpty.forall_iff, hc]
state_before: α : Type u_1
β : Type ?u.134378
γ : Type ?u.134381
δ : Type ?u.134384
ι : Type ?u.134387
R : Type ?u.134390
R' : Type ?u.134393
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
p : α → Prop
c : ℝ≥0∞
hc : c ≠ 0
⊢ c = 0 → ↑↑μ {a | ¬p a} = 0
Theorem: Filter.Tendsto.atTop_add
File: Mathlib/Topology/Order/Basic.lean

tactic: conv in _ + _ => rw [add_comm]
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrderedAddCommGroup α
inst✝ : OrderTopology α
l : Filter β
f g : β → α
C : α
hf : Tendsto f l atTop
hg : Tendsto g l (𝓝 C)
⊢ Tendsto (fun x => f x + g x) l atTop

tactic: exact hg.add_atTop hf
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrderedAddCommGroup α
inst✝ : OrderTopology α
l : Filter β
f g : β → α
C : α
hf : Tendsto f l atTop
hg : Tendsto g l (𝓝 C)
⊢ Tendsto (fun x => g x + f x) l atTop
Theorem: Rat.mul_num
File: Mathlib/Data/Rat/Lemmas.lean

tactic: rw [mul_def, normalize_eq]
state_before: q₁ q₂ : ℚ
⊢ (q₁ * q₂).num = q₁.num * q₂.num / ↑(Nat.gcd (Int.natAbs (q₁.num * q₂.num)) (q₁.den * q₂.den))
Theorem: CategoryTheory.IsPullback.isoPullback_inv_fst
File: Mathlib/CategoryTheory/Limits/Shapes/CommSq.lean

tactic: simp [Iso.inv_comp_eq]
state_before: C : Type u₁
inst✝¹ : Category C
P X Y Z : C
fst : P ⟶ X
snd : P ⟶ Y
f : X ⟶ Z
g : Y ⟶ Z
h : IsPullback fst snd f g
inst✝ : HasPullback f g
⊢ (isoPullback h).inv ≫ fst = pullback.fst
Theorem: QuotientGroup.subsingleton_quotient_top
File: Mathlib/GroupTheory/QuotientGroup.lean

tactic: dsimp [HasQuotient.Quotient, QuotientGroup.instHasQuotientSubgroup, Quotient]
state_before: G : Type u
inst✝¹ : Group G
N : Subgroup G
nN : Subgroup.Normal N
H : Type v
inst✝ : Group H
φ : G →* H
⊢ Subsingleton (G ⧸ ⊤)

tactic: rw [leftRel_eq]
state_before: G : Type u
inst✝¹ : Group G
N : Subgroup G
nN : Subgroup.Normal N
H : Type v
inst✝ : Group H
φ : G →* H
⊢ Subsingleton (Quot Setoid.r)

tactic: exact Trunc.instSubsingletonTrunc
state_before: G : Type u
inst✝¹ : Group G
N : Subgroup G
nN : Subgroup.Normal N
H : Type v
inst✝ : Group H
φ : G →* H
⊢ Subsingleton (Quot fun x y => x⁻¹ * y ∈ ⊤)
Theorem: isOpen_iff_open_ball_subset
File: Mathlib/Topology/UniformSpace/Basic.lean

tactic: rw [isOpen_iff_ball_subset]
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.91712
inst✝ : UniformSpace α
s : Set α
⊢ IsOpen s ↔ ∀ (x : α), x ∈ s → ∃ V, V ∈ 𝓤 α ∧ IsOpen V ∧ ball x V ⊆ s

tactic: constructor <;> intro h x hx
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.91712
inst✝ : UniformSpace α
s : Set α
⊢ (∀ (x : α), x ∈ s → ∃ V, V ∈ 𝓤 α ∧ ball x V ⊆ s) ↔ ∀ (x : α), x ∈ s → ∃ V, V ∈ 𝓤 α ∧ IsOpen V ∧ ball x V ⊆ s

tactic: obtain ⟨V, hV, hV'⟩ := h x hx
state_before: case mp
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.91712
inst✝ : UniformSpace α
s : Set α
h : ∀ (x : α), x ∈ s → ∃ V, V ∈ 𝓤 α ∧ ball x V ⊆ s
x : α
hx : x ∈ s
⊢ ∃ V, V ∈ 𝓤 α ∧ IsOpen V ∧ ball x V ⊆ s

tactic: exact
  ⟨interior V, interior_mem_uniformity hV, isOpen_interior,
    (ball_mono interior_subset x).trans hV'⟩
state_before: case mp.intro.intro
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.91712
inst✝ : UniformSpace α
s : Set α
h : ∀ (x : α), x ∈ s → ∃ V, V ∈ 𝓤 α ∧ ball x V ⊆ s
x : α
hx : x ∈ s
V : Set (α × α)
hV : V ∈ 𝓤 α
hV' : ball x V ⊆ s
⊢ ∃ V, V ∈ 𝓤 α ∧ IsOpen V ∧ ball x V ⊆ s

tactic: obtain ⟨V, hV, -, hV'⟩ := h x hx
state_before: case mpr
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.91712
inst✝ : UniformSpace α
s : Set α
h : ∀ (x : α), x ∈ s → ∃ V, V ∈ 𝓤 α ∧ IsOpen V ∧ ball x V ⊆ s
x : α
hx : x ∈ s
⊢ ∃ V, V ∈ 𝓤 α ∧ ball x V ⊆ s

tactic: exact ⟨V, hV, hV'⟩
state_before: case mpr.intro.intro.intro
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.91712
inst✝ : UniformSpace α
s : Set α
h : ∀ (x : α), x ∈ s → ∃ V, V ∈ 𝓤 α ∧ IsOpen V ∧ ball x V ⊆ s
x : α
hx : x ∈ s
V : Set (α × α)
hV : V ∈ 𝓤 α
hV' : ball x V ⊆ s
⊢ ∃ V, V ∈ 𝓤 α ∧ ball x V ⊆ s
Theorem: CategoryTheory.isIso_of_mono_of_isSplitEpi
File: Mathlib/CategoryTheory/EpiMono.lean

tactic: simp [← cancel_mono f]
state_before: C : Type u₁
inst✝² : Category C
X Y : C
f : X ⟶ Y
inst✝¹ : Mono f
inst✝ : IsSplitEpi f
⊢ f ≫ section_ f = 𝟙 X

tactic: simp
state_before: C : Type u₁
inst✝² : Category C
X Y : C
f : X ⟶ Y
inst✝¹ : Mono f
inst✝ : IsSplitEpi f
⊢ section_ f ≫ f = 𝟙 Y
Theorem: nhds_ne_subtype_eq_bot_iff
File: Mathlib/Topology/Constructions.lean

tactic: rw [← nhdsWithin_subtype_eq_bot_iff, preimage_compl, ← image_singleton,
  Subtype.coe_injective.preimage_image]
state_before: α : Type u
β : Type v
γ : Type ?u.12421
δ : Type ?u.12424
ε : Type ?u.12427
ζ : Type ?u.12430
inst✝ : TopologicalSpace α
S : Set α
x : ↑S
⊢ 𝓝[{x}ᶜ] x = ⊥ ↔ 𝓝[{↑x}ᶜ] ↑x ⊓ 𝓟 S = ⊥
Theorem: LinearMap.dualMap_injective_of_surjective
File: Mathlib/LinearAlgebra/Dual.lean

tactic: intro φ ψ h
state_before: R : Type u
inst✝⁴ : CommSemiring R
M₁ : Type v
M₂ : Type v'
inst✝³ : AddCommMonoid M₁
inst✝² : Module R M₁
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
f : M₁ →ₗ[R] M₂
hf : Function.Surjective ↑f
⊢ Function.Injective ↑(dualMap f)

tactic: ext x
state_before: R : Type u
inst✝⁴ : CommSemiring R
M₁ : Type v
M₂ : Type v'
inst✝³ : AddCommMonoid M₁
inst✝² : Module R M₁
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
f : M₁ →ₗ[R] M₂
hf : Function.Surjective ↑f
φ ψ : Dual R M₂
h : ↑(dualMap f) φ = ↑(dualMap f) ψ
⊢ φ = ψ

tactic: obtain ⟨y, rfl⟩ := hf x
state_before: case h
R : Type u
inst✝⁴ : CommSemiring R
M₁ : Type v
M₂ : Type v'
inst✝³ : AddCommMonoid M₁
inst✝² : Module R M₁
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
f : M₁ →ₗ[R] M₂
hf : Function.Surjective ↑f
φ ψ : Dual R M₂
h : ↑(dualMap f) φ = ↑(dualMap f) ψ
x : M₂
⊢ ↑φ x = ↑ψ x

tactic: exact congr_arg (fun g : Module.Dual R M₁ => g y) h
state_before: case h.intro
R : Type u
inst✝⁴ : CommSemiring R
M₁ : Type v
M₂ : Type v'
inst✝³ : AddCommMonoid M₁
inst✝² : Module R M₁
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
f : M₁ →ₗ[R] M₂
hf : Function.Surjective ↑f
φ ψ : Dual R M₂
h : ↑(dualMap f) φ = ↑(dualMap f) ψ
y : M₁
⊢ ↑φ (↑f y) = ↑ψ (↑f y)
Theorem: PowerSeries.order_eq_nat
File: Mathlib/RingTheory/PowerSeries/Basic.lean

tactic: rcases eq_or_ne φ 0 with (rfl | hφ)
state_before: R : Type u_1
inst✝ : Semiring R
φ✝ φ : PowerSeries R
n : ℕ
⊢ order φ = ↑n ↔ ↑(coeff R n) φ ≠ 0 ∧ ∀ (i : ℕ), i < n → ↑(coeff R i) φ = 0

tactic: simp [order, dif_neg hφ, Nat.find_eq_iff]
state_before: case inr
R : Type u_1
inst✝ : Semiring R
φ✝ φ : PowerSeries R
n : ℕ
hφ : φ ≠ 0
⊢ order φ = ↑n ↔ ↑(coeff R n) φ ≠ 0 ∧ ∀ (i : ℕ), i < n → ↑(coeff R i) φ = 0

tactic: simpa using (PartENat.natCast_ne_top _).symm
state_before: case inl
R : Type u_1
inst✝ : Semiring R
φ : PowerSeries R
n : ℕ
⊢ order 0 = ↑n ↔ ↑(coeff R n) 0 ≠ 0 ∧ ∀ (i : ℕ), i < n → ↑(coeff R i) 0 = 0
Theorem: norm_image_sub_le_of_norm_deriv_le_segment'
File: Mathlib/Analysis/Calculus/MeanValue.lean

tactic: refine'
  norm_image_sub_le_of_norm_deriv_right_le_segment (fun x hx => (hf x hx).continuousWithinAt)
    (fun x hx => _) bound
state_before: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.39172
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : ℝ → E
a b : ℝ
f' : ℝ → E
C : ℝ
hf : ∀ (x : ℝ), x ∈ Icc a b → HasDerivWithinAt f (f' x) (Icc a b) x
bound : ∀ (x : ℝ), x ∈ Ico a b → ‖f' x‖ ≤ C
⊢ ∀ (x : ℝ), x ∈ Icc a b → ‖f x - f a‖ ≤ C * (x - a)

tactic: exact (hf x <| Ico_subset_Icc_self hx).nhdsWithin (Icc_mem_nhdsWithin_Ici hx)
state_before: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type ?u.39172
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : ℝ → E
a b : ℝ
f' : ℝ → E
C : ℝ
hf : ∀ (x : ℝ), x ∈ Icc a b → HasDerivWithinAt f (f' x) (Icc a b) x
bound : ∀ (x : ℝ), x ∈ Ico a b → ‖f' x‖ ≤ C
x : ℝ
hx : x ∈ Ico a b
⊢ HasDerivWithinAt (fun x => f x) (f' x) (Ici x) x
Theorem: MeasureTheory.snorm_trim_ae
File: Mathlib/MeasureTheory/Function/LpSeminorm.lean

tactic: rw [snorm_congr_ae hf.ae_eq_mk, snorm_congr_ae (ae_eq_of_ae_eq_trim hf.ae_eq_mk)]
state_before: α : Type u_1
E : Type u_2
F : Type ?u.3174269
G : Type ?u.3174272
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
hm : m ≤ m0
f : α → E
hf : AEStronglyMeasurable f (Measure.trim ν hm)
⊢ snorm f p (Measure.trim ν hm) = snorm f p ν

tactic: exact snorm_trim hm hf.stronglyMeasurable_mk
state_before: α : Type u_1
E : Type u_2
F : Type ?u.3174269
G : Type ?u.3174272
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
hm : m ≤ m0
f : α → E
hf : AEStronglyMeasurable f (Measure.trim ν hm)
⊢ snorm (AEStronglyMeasurable.mk f hf) p (Measure.trim ν hm) = snorm (AEStronglyMeasurable.mk f hf) p ν
Theorem: Real.log_eq_zero
File: Mathlib/Analysis/SpecialFunctions/Log/Basic.lean

tactic: constructor
state_before: x✝ y x : ℝ
⊢ log x = 0 ↔ x = 0 ∨ x = 1 ∨ x = -1

tactic: intro h
state_before: case mp
x✝ y x : ℝ
⊢ log x = 0 → x = 0 ∨ x = 1 ∨ x = -1

tactic: rcases lt_trichotomy x 0 with (x_lt_zero | rfl | x_gt_zero)
state_before: case mp
x✝ y x : ℝ
h : log x = 0
⊢ x = 0 ∨ x = 1 ∨ x = -1

tactic: refine' Or.inr (Or.inr (neg_eq_iff_eq_neg.mp _))
state_before: case mp.inl
x✝ y x : ℝ
h : log x = 0
x_lt_zero : x < 0
⊢ x = 0 ∨ x = 1 ∨ x = -1

tactic: rw [← log_neg_eq_log x] at h
state_before: case mp.inl
x✝ y x : ℝ
h : log x = 0
x_lt_zero : x < 0
⊢ -x = 1

tactic: exact eq_one_of_pos_of_log_eq_zero (neg_pos.mpr x_lt_zero) h
state_before: case mp.inl
x✝ y x : ℝ
h : log (-x) = 0
x_lt_zero : x < 0
⊢ -x = 1

tactic: exact Or.inl rfl
state_before: case mp.inr.inl
x y : ℝ
h : log 0 = 0
⊢ 0 = 0 ∨ 0 = 1 ∨ 0 = -1

tactic: exact Or.inr (Or.inl (eq_one_of_pos_of_log_eq_zero x_gt_zero h))
state_before: case mp.inr.inr
x✝ y x : ℝ
h : log x = 0
x_gt_zero : 0 < x
⊢ x = 0 ∨ x = 1 ∨ x = -1

tactic: rintro (rfl | rfl | rfl) <;> simp only [log_one, log_zero, log_neg_eq_log]
state_before: case mpr
x✝ y x : ℝ
⊢ x = 0 ∨ x = 1 ∨ x = -1 → log x = 0
Theorem: Turing.BlankExtends.refl
File: Mathlib/Computability/TuringMachine.lean

tactic: simp
state_before: Γ : Type u_1
inst✝ : Inhabited Γ
l : List Γ
⊢ l = l ++ List.replicate 0 default
Theorem: CategoryTheory.SimplicialObject.δ_comp_δ_self'
File: Mathlib/AlgebraicTopology/SimplicialObject.lean

tactic: subst H
state_before: C : Type u
inst✝ : Category C
X : SimplicialObject C
n : ℕ
j : Fin (n + 3)
i : Fin (n + 2)
H : j = ↑Fin.castSucc i
⊢ δ X j ≫ δ X i = δ X (Fin.succ i) ≫ δ X i

tactic: rw [δ_comp_δ_self]
state_before: C : Type u
inst✝ : Category C
X : SimplicialObject C
n : ℕ
i : Fin (n + 2)
⊢ δ X (↑Fin.castSucc i) ≫ δ X i = δ X (Fin.succ i) ≫ δ X i
Theorem: Filter.nhds_inf
File: Mathlib/Topology/Filter.lean

tactic: simpa only [iInf_bool_eq] using nhds_iInf fun b => cond b l₁ l₂
state_before: ι : Sort ?u.12737
α : Type u_1
β : Type ?u.12743
X : Type ?u.12746
Y : Type ?u.12749
l₁ l₂ : Filter α
⊢ 𝓝 (l₁ ⊓ l₂) = 𝓝 l₁ ⊓ 𝓝 l₂
Theorem: OrderIso.preimage_Ioo
File: Mathlib/Data/Set/Intervals/OrderIso.lean

tactic: simp [← Ioi_inter_Iio]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : Preorder β
e : α ≃o β
a b : β
⊢ ↑e ⁻¹' Ioo a b = Ioo (↑(symm e) a) (↑(symm e) b)