tasksource/leandojo huggingface dataset:
Theorem: ENNReal.add_lt_add
File: Mathlib/Data/Real/ENNReal.lean

tactic: lift a to ℝ≥0 using ac.ne_top
state_before: α : Type ?u.138661
β : Type ?u.138664
a b c d : ℝ≥0∞
r p q : ℝ≥0
ac : a < c
bd : b < d
⊢ a + b < c + d

tactic: lift b to ℝ≥0 using bd.ne_top
state_before: case intro
α : Type ?u.138661
β : Type ?u.138664
b c d : ℝ≥0∞
r p q : ℝ≥0
bd : b < d
a : ℝ≥0
ac : ↑a < c
⊢ ↑a + b < c + d

tactic: cases c
state_before: case intro.intro
α : Type ?u.138661
β : Type ?u.138664
c d : ℝ≥0∞
r p q a : ℝ≥0
ac : ↑a < c
b : ℝ≥0
bd : ↑b < d
⊢ ↑a + ↑b < c + d

tactic: cases d
state_before: case intro.intro.some
α : Type ?u.138661
β : Type ?u.138664
d : ℝ≥0∞
r p q a b : ℝ≥0
bd : ↑b < d
val✝ : ℝ≥0
ac : ↑a < Option.some val✝
⊢ ↑a + ↑b < Option.some val✝ + d

tactic: simp only [← coe_add, some_eq_coe, coe_lt_coe] at *
state_before: case intro.intro.some.some
α : Type ?u.138661
β : Type ?u.138664
r p q a b val✝¹ : ℝ≥0
ac : ↑a < Option.some val✝¹
val✝ : ℝ≥0
bd : ↑b < Option.some val✝
⊢ ↑a + ↑b < Option.some val✝¹ + Option.some val✝

tactic: exact add_lt_add ac bd
state_before: case intro.intro.some.some
α : Type ?u.138661
β : Type ?u.138664
r p q a b val✝¹ val✝ : ℝ≥0
ac : a < val✝¹
bd : b < val✝
⊢ a + b < val✝¹ + val✝

tactic: simp
state_before: case intro.intro.none
α : Type ?u.138661
β : Type ?u.138664
d : ℝ≥0∞
r p q a b : ℝ≥0
bd : ↑b < d
ac : ↑a < none
⊢ ↑a + ↑b < none + d

tactic: simp
state_before: case intro.intro.some.none
α : Type ?u.138661
β : Type ?u.138664
r p q a b val✝ : ℝ≥0
ac : ↑a < Option.some val✝
bd : ↑b < none
⊢ ↑a + ↑b < Option.some val✝ + none
Theorem: OrderIso.image_Icc
File: Mathlib/Data/Set/Intervals/OrderIso.lean

tactic: rw [e.image_eq_preimage, e.symm.preimage_Icc, e.symm_symm]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : Preorder β
e : α ≃o β
a b : α
⊢ ↑e '' Icc a b = Icc (↑e a) (↑e b)
Theorem: SimpleGraph.Walk.support_copy
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: subst_vars
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v u' v' : V
p : Walk G u v
hu : u = u'
hv : v = v'
⊢ support (Walk.copy p hu hv) = support p

tactic: rfl
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u' v' : V
p : Walk G u' v'
⊢ support (Walk.copy p (_ : u' = u') (_ : v' = v')) = support p
Theorem: dot_cross_self
File: Mathlib/LinearAlgebra/CrossProduct.lean

tactic: rw [← cross_anticomm, Matrix.dotProduct_neg, dot_self_cross, neg_zero]
state_before: R : Type u_1
inst✝ : CommRing R
v w : Fin 3 → R
⊢ w ⬝ᵥ ↑(↑crossProduct v) w = 0
Theorem: ofMul_multiset_prod
File: Mathlib/Algebra/BigOperators/Basic.lean

tactic: simp [ofMul]
state_before: ι : Type ?u.997044
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : CommMonoid α
s : Multiset α
⊢ ↑ofMul (Multiset.prod s) = Multiset.sum (Multiset.map (↑ofMul) s)

tactic: rfl
state_before: ι : Type ?u.997044
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : CommMonoid α
s : Multiset α
⊢ Multiset.prod s = Multiset.sum s
Theorem: TypeVec.prod_snd_mk
File: Mathlib/Data/TypeVec.lean

tactic: induction' i with _ _ _ i_ih
state_before: n : ℕ
α β : TypeVec n
i : Fin2 n
a : α i
b : β i
⊢ prod.snd i (prod.mk i a b) = b

tactic: simp_all [prod.snd, prod.mk]
state_before: case fz
n : ℕ
α✝ β✝ : TypeVec n
i : Fin2 n
a✝ : α✝ i
b✝ : β✝ i
n✝ : ℕ
α β : TypeVec (succ n✝)
a : α Fin2.fz
b : β Fin2.fz
⊢ prod.snd Fin2.fz (prod.mk Fin2.fz a b) = b

case fs
n : ℕ
α✝ β✝ : TypeVec n
i : Fin2 n
a✝¹ : α✝ i
b✝ : β✝ i
n✝ : ℕ
a✝ : Fin2 n✝
i_ih : ∀ {α β : TypeVec n✝} (a : α a✝) (b : β a✝), prod.snd a✝ (prod.mk a✝ a b) = b
α β : TypeVec (succ n✝)
a : α (Fin2.fs a✝)
b : β (Fin2.fs a✝)
⊢ prod.snd (Fin2.fs a✝) (prod.mk (Fin2.fs a✝) a b) = b

tactic: apply i_ih
state_before: case fs
n : ℕ
α✝ β✝ : TypeVec n
i : Fin2 n
a✝¹ : α✝ i
b✝ : β✝ i
n✝ : ℕ
a✝ : Fin2 n✝
i_ih : ∀ {α β : TypeVec n✝} (a : α a✝) (b : β a✝), prod.snd a✝ (prod.mk a✝ a b) = b
α β : TypeVec (succ n✝)
a : α (Fin2.fs a✝)
b : β (Fin2.fs a✝)
⊢ prod.snd (Fin2.fs a✝) (prod.mk (Fin2.fs a✝) a b) = b
Theorem: Set.toFinset_congr
File: Mathlib/Data/Fintype/Basic.lean

tactic: subst h
state_before: α : Type u_1
β : Type ?u.77478
γ : Type ?u.77481
s✝ t✝ s t : Set α
inst✝¹ : Fintype ↑s
inst✝ : Fintype ↑t
h : s = t
⊢ toFinset s = toFinset t

tactic: congr
state_before: α : Type u_1
β : Type ?u.77478
γ : Type ?u.77481
s✝ t s : Set α
inst✝¹ inst✝ : Fintype ↑s
⊢ toFinset s = toFinset s

tactic: exact Subsingleton.elim _ _
state_before: case h.e_3.h
α : Type u_1
β : Type ?u.77478
γ : Type ?u.77481
s✝ t s : Set α
inst✝¹ inst✝ : Fintype ↑s
⊢ inst✝¹ = inst✝
Theorem: Cardinal.mk_compl_eq_mk_compl_infinite
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: rw [mk_compl_of_infinite s hs, mk_compl_of_infinite t ht]
state_before: α : Type u_1
inst✝ : Infinite α
s t : Set α
hs : (#↑s) < (#α)
ht : (#↑t) < (#α)
⊢ (#↑(sᶜ)) = (#↑(tᶜ))
Theorem: ENNReal.tendsto_nat_tsum
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: rw [← hasSum_iff_tendsto_nat]
state_before: α : Type ?u.259758
β : Type ?u.259761
γ : Type ?u.259764
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f✝ g : α → ℝ≥0∞
f : ℕ → ℝ≥0∞
⊢ Tendsto (fun n => ∑ i in Finset.range n, f i) atTop (𝓝 (∑' (n : ℕ), f n))

tactic: exact ENNReal.summable.hasSum
state_before: α : Type ?u.259758
β : Type ?u.259761
γ : Type ?u.259764
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f✝ g : α → ℝ≥0∞
f : ℕ → ℝ≥0∞
⊢ HasSum (fun i => f i) (∑' (n : ℕ), f n)
Theorem: LocalHomeomorph.extend_symm_preimage_inter_range_eventuallyEq
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

tactic: rw [← f.extend_source I] at hs
state_before: 𝕜 : Type u_4
E : Type u_3
M : Type u_1
H : Type u_2
E' : Type ?u.164976
M' : Type ?u.164979
H' : Type ?u.164982
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
f f' : LocalHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
inst✝¹ : TopologicalSpace H'
inst✝ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
x✝ : M
s✝ t s : Set M
x : M
hs : s ⊆ f.source
hx : x ∈ f.source
⊢ ↑(LocalEquiv.symm (extend f I)) ⁻¹' s ∩ range ↑I =ᶠ[𝓝 (↑(extend f I) x)] ↑(extend f I) '' s

tactic: rw [(f.extend I).image_eq_target_inter_inv_preimage hs]
state_before: 𝕜 : Type u_4
E : Type u_3
M : Type u_1
H : Type u_2
E' : Type ?u.164976
M' : Type ?u.164979
H' : Type ?u.164982
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
f f' : LocalHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
inst✝¹ : TopologicalSpace H'
inst✝ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
x✝ : M
s✝ t s : Set M
x : M
hs : s ⊆ (extend f I).source
hx : x ∈ f.source
⊢ ↑(LocalEquiv.symm (extend f I)) ⁻¹' s ∩ range ↑I =ᶠ[𝓝 (↑(extend f I) x)] ↑(extend f I) '' s

tactic: exact f.extend_symm_preimage_inter_range_eventuallyEq_aux I hx
state_before: 𝕜 : Type u_4
E : Type u_3
M : Type u_1
H : Type u_2
E' : Type ?u.164976
M' : Type ?u.164979
H' : Type ?u.164982
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
f f' : LocalHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
inst✝¹ : TopologicalSpace H'
inst✝ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
x✝ : M
s✝ t s : Set M
x : M
hs : s ⊆ (extend f I).source
hx : x ∈ f.source
⊢ ↑(LocalEquiv.symm (extend f I)) ⁻¹' s ∩ range ↑I =ᶠ[𝓝 (↑(extend f I) x)]
    (extend f I).target ∩ ↑(LocalEquiv.symm (extend f I)) ⁻¹' s
Theorem: Polynomial.coeff_zero_reverse
File: Mathlib/Data/Polynomial/Reverse.lean

tactic: rw [coeff_reverse, revAt_le (zero_le f.natDegree), tsub_zero, leadingCoeff]
state_before: R : Type u_1
inst✝ : Semiring R
f✝ f : R[X]
⊢ coeff (reverse f) 0 = leadingCoeff f
Theorem: LowerTopology.isOpen_iff_generate_Ici_compl
File: Mathlib/Topology/Order/LowerTopology.lean

tactic: rw [topology_eq α]
state_before: α : Type u_1
β : Type ?u.3811
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s : Set α
⊢ IsOpen s ↔ GenerateOpen {t | ∃ a, Ici aᶜ = t} s

tactic: rfl
state_before: α : Type u_1
β : Type ?u.3811
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s : Set α
⊢ IsOpen s ↔ GenerateOpen {t | ∃ a, Ici aᶜ = t} s
Theorem: Filter.HasBasis.exists_inter_eq_singleton_of_mem_discrete
File: Mathlib/Topology/Separation.lean

tactic: rcases (nhdsWithin_hasBasis hb s).mem_iff.1 (singleton_mem_nhdsWithin_of_mem_discrete hx) with
  ⟨i, hi, hix⟩
state_before: α : Type u
β : Type v
inst✝¹ : TopologicalSpace α
ι : Type u_1
p : ι → Prop
t : ι → Set α
s : Set α
inst✝ : DiscreteTopology ↑s
x : α
hb : HasBasis (𝓝 x) p t
hx : x ∈ s
⊢ ∃ i, p i ∧ t i ∩ s = {x}

tactic: exact ⟨i, hi, hix.antisymm <| singleton_subset_iff.2 ⟨mem_of_mem_nhds <| hb.mem_of_mem hi, hx⟩⟩
state_before: case intro.intro
α : Type u
β : Type v
inst✝¹ : TopologicalSpace α
ι : Type u_1
p : ι → Prop
t : ι → Set α
s : Set α
inst✝ : DiscreteTopology ↑s
x : α
hb : HasBasis (𝓝 x) p t
hx : x ∈ s
i : ι
hi : p i
hix : t i ∩ s ⊆ {x}
⊢ ∃ i, p i ∧ t i ∩ s = {x}
Theorem: Filter.frequently_or_distrib_right
File: Mathlib/Order/Filter/Basic.lean

tactic: simp
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.164816
ι : Sort x
f : Filter α
inst✝ : NeBot f
p : α → Prop
q : Prop
⊢ (∃ᶠ (x : α) in f, p x ∨ q) ↔ (∃ᶠ (x : α) in f, p x) ∨ q
Theorem: PrimeSpectrum.isClosed_iff_zeroLocus
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/Basic.lean

tactic: rw [← isOpen_compl_iff, isOpen_iff, compl_compl]
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
Z : Set (PrimeSpectrum R)
⊢ IsClosed Z ↔ ∃ s, Z = zeroLocus s
Theorem: AddMonoidAlgebra.modOf_apply_of_exists_add
File: Mathlib/Algebra/MonoidAlgebra/Division.lean

tactic: rwa [Classical.not_not]
state_before: k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
x : AddMonoidAlgebra k G
g g' : G
h : ∃ d, g' = g + d
⊢ ¬¬∃ g₂, g' = g + g₂
Theorem: Matrix.mul_mul_invOf_self_cancel
File: Mathlib/LinearAlgebra/Matrix/NonsingularInverse.lean

tactic: rw [Matrix.mul_assoc, Matrix.mul_invOf_self, Matrix.mul_one]
state_before: l : Type ?u.16996
m : Type u
n : Type u'
α : Type v
inst✝³ : Fintype n
inst✝² : DecidableEq n
inst✝¹ : CommRing α
A : Matrix m n α
B : Matrix n n α
inst✝ : Invertible B
⊢ A ⬝ B ⬝ ⅟B = A
Theorem: isNoetherian_top_iff
File: Mathlib/RingTheory/Noetherian.lean

tactic: constructor <;> intro h
state_before: R : Type u_1
M : Type u_2
P : Type ?u.20594
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : AddCommMonoid P
inst✝¹ : Module R M
inst✝ : Module R P
⊢ IsNoetherian R { x // x ∈ ⊤ } ↔ IsNoetherian R M

tactic: exact isNoetherian_of_linearEquiv (LinearEquiv.ofTop (⊤ : Submodule R M) rfl)
state_before: case mp
R : Type u_1
M : Type u_2
P : Type ?u.20594
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : AddCommMonoid P
inst✝¹ : Module R M
inst✝ : Module R P
h : IsNoetherian R { x // x ∈ ⊤ }
⊢ IsNoetherian R M

tactic: exact isNoetherian_of_linearEquiv (LinearEquiv.ofTop (⊤ : Submodule R M) rfl).symm
state_before: case mpr
R : Type u_1
M : Type u_2
P : Type ?u.20594
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : AddCommMonoid P
inst✝¹ : Module R M
inst✝ : Module R P
h : IsNoetherian R M
⊢ IsNoetherian R { x // x ∈ ⊤ }
Theorem: Dfinsupp.mem_neLocus
File: Mathlib/Data/Dfinsupp/NeLocus.lean

tactic: simpa only [neLocus, Finset.mem_filter, Finset.mem_union, mem_support_iff,
  and_iff_right_iff_imp] using Ne.ne_or_ne _
state_before: α : Type u_1
N : α → Type u_2
inst✝² : DecidableEq α
inst✝¹ : (a : α) → DecidableEq (N a)
inst✝ : (a : α) → Zero (N a)
f✝ g✝ f g : Π₀ (a : α), N a
a : α
⊢ a ∈ neLocus f g ↔ ↑f a ≠ ↑g a
Theorem: Polynomial.Monic.eq_one_of_isUnit
File: Mathlib/Data/Polynomial/Monic.lean

tactic: nontriviality R
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q r : R[X]
hm : Monic p
hpu : IsUnit p
⊢ p = 1

tactic: obtain ⟨q, h⟩ := hpu.exists_right_inv
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q r : R[X]
hm : Monic p
hpu : IsUnit p
✝ : Nontrivial R
⊢ p = 1

tactic: have := hm.natDegree_mul' (right_ne_zero_of_mul_eq_one h)
state_before: case intro
R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q✝ r : R[X]
hm : Monic p
hpu : IsUnit p
✝ : Nontrivial R
q : R[X]
h : p * q = 1
⊢ p = 1

tactic: rw [h, natDegree_one, eq_comm, add_eq_zero_iff] at this
state_before: case intro
R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q✝ r : R[X]
hm : Monic p
hpu : IsUnit p
✝ : Nontrivial R
q : R[X]
h : p * q = 1
this : natDegree (p * q) = natDegree p + natDegree q
⊢ p = 1

tactic: exact hm.natDegree_eq_zero_iff_eq_one.mp this.1
state_before: case intro
R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q✝ r : R[X]
hm : Monic p
hpu : IsUnit p
✝ : Nontrivial R
q : R[X]
h : p * q = 1
this : natDegree p = 0 ∧ natDegree q = 0
⊢ p = 1
Theorem: RatFunc.num_eq_zero_iff
File: Mathlib/FieldTheory/RatFunc.lean

tactic: rw [← num_div_denom x, h, RingHom.map_zero, zero_div]
state_before: K : Type u
inst✝ : Field K
x : RatFunc K
h : num x = 0
⊢ x = 0
Theorem: CategoryTheory.Limits.HasLimit.isoOfEquivalence_hom_π
File: Mathlib/CategoryTheory/Limits/HasLimits.lean

tactic: simp only [HasLimit.isoOfEquivalence, IsLimit.conePointsIsoOfEquivalence_hom]
state_before: J : Type u₁
inst✝⁴ : Category J
K : Type u₂
inst✝³ : Category K
C : Type u
inst✝² : Category C
F✝ F : J ⥤ C
inst✝¹ : HasLimit F
G : K ⥤ C
inst✝ : HasLimit G
e : J ≌ K
w : e.functor ⋙ G ≅ F
k : K
⊢ (isoOfEquivalence e w).hom ≫ limit.π G k =
    limit.π F (e.inverse.obj k) ≫ w.inv.app (e.inverse.obj k) ≫ G.map ((Equivalence.counit e).app k)

tactic: dsimp
state_before: J : Type u₁
inst✝⁴ : Category J
K : Type u₂
inst✝³ : Category K
C : Type u
inst✝² : Category C
F✝ F : J ⥤ C
inst✝¹ : HasLimit F
G : K ⥤ C
inst✝ : HasLimit G
e : J ≌ K
w : e.functor ⋙ G ≅ F
k : K
⊢ IsLimit.lift (limit.isLimit G)
        ((Cones.equivalenceOfReindexing (Equivalence.symm e)
                ((isoWhiskerLeft e.inverse w).symm ≪≫ Equivalence.invFunIdAssoc e G)).functor.obj
          (limit.cone F)) ≫
      limit.π G k =
    limit.π F (e.inverse.obj k) ≫ w.inv.app (e.inverse.obj k) ≫ G.map ((Equivalence.counit e).app k)

tactic: simp
state_before: J : Type u₁
inst✝⁴ : Category J
K : Type u₂
inst✝³ : Category K
C : Type u
inst✝² : Category C
F✝ F : J ⥤ C
inst✝¹ : HasLimit F
G : K ⥤ C
inst✝ : HasLimit G
e : J ≌ K
w : e.functor ⋙ G ≅ F
k : K
⊢ limit.lift G
        ((Cones.postcompose (whiskerLeft e.inverse w.inv ≫ (Equivalence.invFunIdAssoc e G).hom)).obj
          (Cone.whisker e.inverse (limit.cone F))) ≫
      limit.π G k =
    limit.π F (e.inverse.obj k) ≫ w.inv.app (e.inverse.obj k) ≫ G.map ((Equivalence.counit e).app k)
Theorem: sup_sdiff_cancel'
File: Mathlib/Order/Heyting/Basic.lean

tactic: rw [sup_sdiff_eq_sup hab, sup_of_le_right hbc]
state_before: ι : Type ?u.92580
α : Type u_1
β : Type ?u.92586
inst✝ : GeneralizedCoheytingAlgebra α
a b c d : α
hab : a ≤ b
hbc : b ≤ c
⊢ b ⊔ c \ a = c
Theorem: eq_iff_eq_of_cmp_eq_cmp
File: Mathlib/Order/Compare.lean

tactic: rw [le_antisymm_iff, le_antisymm_iff, le_iff_le_of_cmp_eq_cmp h,
    le_iff_le_of_cmp_eq_cmp (cmp_eq_cmp_symm.1 h)]
state_before: α : Type u_1
β✝ : Type ?u.20888
inst✝¹ : LinearOrder α
x y : α
β : Type u_2
inst✝ : LinearOrder β
x' y' : β
h : cmp x y = cmp x' y'
⊢ x = y ↔ x' = y'
Theorem: Submodule.comap_zero
File: Mathlib/LinearAlgebra/Basic.lean

tactic: simp
state_before: R : Type u_2
R₁ : Type ?u.631576
R₂ : Type u_3
R₃ : Type ?u.631582
R₄ : Type ?u.631585
S : Type ?u.631588
K : Type ?u.631591
K₂ : Type ?u.631594
M : Type u_1
M' : Type ?u.631600
M₁ : Type ?u.631603
M₂ : Type u_4
M₃ : Type ?u.631609
M₄ : Type ?u.631612
N : Type ?u.631615
N₂ : Type ?u.631618
ι : Type ?u.631621
V : Type ?u.631624
V₂ : Type ?u.631627
inst✝¹³ : Semiring R
inst✝¹² : Semiring R₂
inst✝¹¹ : Semiring R₃
inst✝¹⁰ : AddCommMonoid M
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : AddCommMonoid M₃
inst✝⁷ : AddCommMonoid M'
inst✝⁶ : Module R M
inst✝⁵ : Module R M'
inst✝⁴ : Module R₂ M₂
inst✝³ : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
σ₂₁ : R₂ →+* R
inst✝² : RingHomInvPair σ₁₂ σ₂₁
inst✝¹ : RingHomInvPair σ₂₁ σ₁₂
inst✝ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
p p' : Submodule R M
q q' : Submodule R₂ M₂
q₁ q₁' : Submodule R M'
r : R
x y : M
F : Type ?u.632164
sc : SemilinearMapClass F σ₁₂ M M₂
⊢ ∀ (x : M), x ∈ comap 0 q ↔ x ∈ ⊤
Theorem: Associates.le_singleton_iff
File: Mathlib/RingTheory/DedekindDomain/Ideal.lean

tactic: simp_rw [← Associates.dvd_eq_le, ← Associates.mk_pow, Associates.mk_dvd_mk,
  Ideal.dvd_span_singleton]
state_before: R : Type ?u.817526
A : Type u_1
K : Type ?u.817532
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
inst✝² : IsDedekindDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
x : A
n : ℕ
I : Ideal A
⊢ Associates.mk I ^ n ≤ Associates.mk (span {x}) ↔ x ∈ I ^ n
Theorem: closure_smul₀
File: Mathlib/Topology/Algebra/ConstMulAction.lean

tactic: rcases eq_or_ne c 0 with (rfl | hc)
state_before: M : Type ?u.97023
α : Type ?u.97026
β : Type ?u.97029
G₀ : Type u_2
inst✝⁹ : TopologicalSpace α
inst✝⁸ : GroupWithZero G₀
inst✝⁷ : MulAction G₀ α
inst✝⁶ : ContinuousConstSMul G₀ α
inst✝⁵ : TopologicalSpace β
f : β → α
b : β
c✝ : G₀
s✝ : Set β
E : Type u_1
inst✝⁴ : Zero E
inst✝³ : MulActionWithZero G₀ E
inst✝² : TopologicalSpace E
inst✝¹ : T1Space E
inst✝ : ContinuousConstSMul G₀ E
c : G₀
s : Set E
⊢ closure (c • s) = c • closure s

tactic: rcases eq_empty_or_nonempty s with (rfl | hs)
state_before: case inl
M : Type ?u.97023
α : Type ?u.97026
β : Type ?u.97029
G₀ : Type u_2
inst✝⁹ : TopologicalSpace α
inst✝⁸ : GroupWithZero G₀
inst✝⁷ : MulAction G₀ α
inst✝⁶ : ContinuousConstSMul G₀ α
inst✝⁵ : TopologicalSpace β
f : β → α
b : β
c : G₀
s✝ : Set β
E : Type u_1
inst✝⁴ : Zero E
inst✝³ : MulActionWithZero G₀ E
inst✝² : TopologicalSpace E
inst✝¹ : T1Space E
inst✝ : ContinuousConstSMul G₀ E
s : Set E
⊢ closure (0 • s) = 0 • closure s

tactic: simp
state_before: case inl.inl
M : Type ?u.97023
α : Type ?u.97026
β : Type ?u.97029
G₀ : Type u_2
inst✝⁹ : TopologicalSpace α
inst✝⁸ : GroupWithZero G₀
inst✝⁷ : MulAction G₀ α
inst✝⁶ : ContinuousConstSMul G₀ α
inst✝⁵ : TopologicalSpace β
f : β → α
b : β
c : G₀
s : Set β
E : Type u_1
inst✝⁴ : Zero E
inst✝³ : MulActionWithZero G₀ E
inst✝² : TopologicalSpace E
inst✝¹ : T1Space E
inst✝ : ContinuousConstSMul G₀ E
⊢ closure (0 • ∅) = 0 • closure ∅

tactic: rw [zero_smul_set hs, zero_smul_set hs.closure]
state_before: case inl.inr
M : Type ?u.97023
α : Type ?u.97026
β : Type ?u.97029
G₀ : Type u_2
inst✝⁹ : TopologicalSpace α
inst✝⁸ : GroupWithZero G₀
inst✝⁷ : MulAction G₀ α
inst✝⁶ : ContinuousConstSMul G₀ α
inst✝⁵ : TopologicalSpace β
f : β → α
b : β
c : G₀
s✝ : Set β
E : Type u_1
inst✝⁴ : Zero E
inst✝³ : MulActionWithZero G₀ E
inst✝² : TopologicalSpace E
inst✝¹ : T1Space E
inst✝ : ContinuousConstSMul G₀ E
s : Set E
hs : Set.Nonempty s
⊢ closure (0 • s) = 0 • closure s

tactic: exact closure_singleton
state_before: case inl.inr
M : Type ?u.97023
α : Type ?u.97026
β : Type ?u.97029
G₀ : Type u_2
inst✝⁹ : TopologicalSpace α
inst✝⁸ : GroupWithZero G₀
inst✝⁷ : MulAction G₀ α
inst✝⁶ : ContinuousConstSMul G₀ α
inst✝⁵ : TopologicalSpace β
f : β → α
b : β
c : G₀
s✝ : Set β
E : Type u_1
inst✝⁴ : Zero E
inst✝³ : MulActionWithZero G₀ E
inst✝² : TopologicalSpace E
inst✝¹ : T1Space E
inst✝ : ContinuousConstSMul G₀ E
s : Set E
hs : Set.Nonempty s
⊢ closure 0 = 0

tactic: exact ((Homeomorph.smulOfNeZero c hc).image_closure s).symm
state_before: case inr
M : Type ?u.97023
α : Type ?u.97026
β : Type ?u.97029
G₀ : Type u_2
inst✝⁹ : TopologicalSpace α
inst✝⁸ : GroupWithZero G₀
inst✝⁷ : MulAction G₀ α
inst✝⁶ : ContinuousConstSMul G₀ α
inst✝⁵ : TopologicalSpace β
f : β → α
b : β
c✝ : G₀
s✝ : Set β
E : Type u_1
inst✝⁴ : Zero E
inst✝³ : MulActionWithZero G₀ E
inst✝² : TopologicalSpace E
inst✝¹ : T1Space E
inst✝ : ContinuousConstSMul G₀ E
c : G₀
s : Set E
hc : c ≠ 0
⊢ closure (c • s) = c • closure s
Theorem: MeasureTheory.snorm_zero
File: Mathlib/MeasureTheory/Function/LpSeminorm.lean

tactic: by_cases h0 : p = 0
state_before: α : Type u_1
E : Type ?u.922031
F : Type u_2
G : Type ?u.922037
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
⊢ snorm 0 p μ = 0

tactic: by_cases h_top : p = ∞
state_before: case neg
α : Type u_1
E : Type ?u.922031
F : Type u_2
G : Type ?u.922037
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
h0 : ¬p = 0
⊢ snorm 0 p μ = 0

tactic: rw [← Ne.def] at h0
state_before: case neg
α : Type u_1
E : Type ?u.922031
F : Type u_2
G : Type ?u.922037
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
h0 : ¬p = 0
h_top : ¬p = ⊤
⊢ snorm 0 p μ = 0

tactic: simp [snorm_eq_snorm' h0 h_top, ENNReal.toReal_pos h0 h_top]
state_before: case neg
α : Type u_1
E : Type ?u.922031
F : Type u_2
G : Type ?u.922037
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
h0 : p ≠ 0
h_top : ¬p = ⊤
⊢ snorm 0 p μ = 0

tactic: simp [h0]
state_before: case pos
α : Type u_1
E : Type ?u.922031
F : Type u_2
G : Type ?u.922037
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
h0 : p = 0
⊢ snorm 0 p μ = 0

tactic: simp only [h_top, snorm_exponent_top, snormEssSup_zero]
state_before: case pos
α : Type u_1
E : Type ?u.922031
F : Type u_2
G : Type ?u.922037
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
h0 : ¬p = 0
h_top : p = ⊤
⊢ snorm 0 p μ = 0
Theorem: ENNReal.tsum_coe_ne_top_iff_summable_coe
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: rw [NNReal.summable_coe]
state_before: α : Type u_1
β : Type ?u.306594
γ : Type ?u.306597
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f : α → ℝ≥0
⊢ (∑' (a : α), ↑(f a)) ≠ ⊤ ↔ Summable fun a => ↑(f a)

tactic: exact tsum_coe_ne_top_iff_summable
state_before: α : Type u_1
β : Type ?u.306594
γ : Type ?u.306597
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f : α → ℝ≥0
⊢ (∑' (a : α), ↑(f a)) ≠ ⊤ ↔ Summable fun a => f a
Theorem: CategoryTheory.Limits.CompleteLattice.coprod_eq_sup
File: Mathlib/CategoryTheory/Limits/Lattice.lean

tactic: rw [finite_colimit_eq_finset_univ_sup (pair x y)]
state_before: α : Type u
J : Type w
inst✝³ : SmallCategory J
inst✝² : FinCategory J
inst✝¹ : SemilatticeSup α
inst✝ : OrderBot α
x y : α
⊢ colimit (pair x y) = Finset.sup Finset.univ (pair x y).toPrefunctor.obj

tactic: rw [sup_bot_eq]
state_before: α : Type u
J : Type w
inst✝³ : SmallCategory J
inst✝² : FinCategory J
inst✝¹ : SemilatticeSup α
inst✝ : OrderBot α
x y : α
⊢ x ⊔ (y ⊔ ⊥) = x ⊔ y
Theorem: PrimeSpectrum.le_iff_mem_closure
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/Basic.lean

tactic: rw [← asIdeal_le_asIdeal, ← zeroLocus_vanishingIdeal_eq_closure, mem_zeroLocus,
  vanishingIdeal_singleton, SetLike.coe_subset_coe]
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
x y : PrimeSpectrum R
⊢ x ≤ y ↔ y ∈ closure {x}