tasksource/leandojo huggingface dataset:
Theorem: DenseInducing.tendsto_comap_nhds_nhds
File: Mathlib/Topology/DenseEmbedding.lean

tactic: have lim1 : map g (comap g (𝓝 d)) ≤ 𝓝 d := map_comap_le
state_before: α : Type u_1
β : Type u_2
γ : Type u_4
δ : Type u_3
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
i : α → β
di✝ : DenseInducing i
inst✝ : TopologicalSpace δ
f : γ → α
g : γ → δ
h : δ → β
d : δ
a : α
di : DenseInducing i
H : Tendsto h (𝓝 d) (𝓝 (i a))
comm : h ∘ g = i ∘ f
⊢ Tendsto f (comap g (𝓝 d)) (𝓝 a)

tactic: replace lim1 : map h (map g (comap g (𝓝 d))) ≤ map h (𝓝 d) := map_mono lim1
state_before: α : Type u_1
β : Type u_2
γ : Type u_4
δ : Type u_3
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
i : α → β
di✝ : DenseInducing i
inst✝ : TopologicalSpace δ
f : γ → α
g : γ → δ
h : δ → β
d : δ
a : α
di : DenseInducing i
H : Tendsto h (𝓝 d) (𝓝 (i a))
comm : h ∘ g = i ∘ f
lim1 : map g (comap g (𝓝 d)) ≤ 𝓝 d
⊢ Tendsto f (comap g (𝓝 d)) (𝓝 a)

tactic: rw [Filter.map_map, comm, ← Filter.map_map, map_le_iff_le_comap] at lim1
state_before: α : Type u_1
β : Type u_2
γ : Type u_4
δ : Type u_3
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
i : α → β
di✝ : DenseInducing i
inst✝ : TopologicalSpace δ
f : γ → α
g : γ → δ
h : δ → β
d : δ
a : α
di : DenseInducing i
H : Tendsto h (𝓝 d) (𝓝 (i a))
comm : h ∘ g = i ∘ f
lim1 : map h (map g (comap g (𝓝 d))) ≤ map h (𝓝 d)
⊢ Tendsto f (comap g (𝓝 d)) (𝓝 a)

tactic: have lim2 : comap i (map h (𝓝 d)) ≤ comap i (𝓝 (i a)) := comap_mono H
state_before: α : Type u_1
β : Type u_2
γ : Type u_4
δ : Type u_3
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
i : α → β
di✝ : DenseInducing i
inst✝ : TopologicalSpace δ
f : γ → α
g : γ → δ
h : δ → β
d : δ
a : α
di : DenseInducing i
H : Tendsto h (𝓝 d) (𝓝 (i a))
comm : h ∘ g = i ∘ f
lim1 : map f (comap g (𝓝 d)) ≤ comap i (map h (𝓝 d))
⊢ Tendsto f (comap g (𝓝 d)) (𝓝 a)

tactic: rw [← di.nhds_eq_comap] at lim2
state_before: α : Type u_1
β : Type u_2
γ : Type u_4
δ : Type u_3
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
i : α → β
di✝ : DenseInducing i
inst✝ : TopologicalSpace δ
f : γ → α
g : γ → δ
h : δ → β
d : δ
a : α
di : DenseInducing i
H : Tendsto h (𝓝 d) (𝓝 (i a))
comm : h ∘ g = i ∘ f
lim1 : map f (comap g (𝓝 d)) ≤ comap i (map h (𝓝 d))
lim2 : comap i (map h (𝓝 d)) ≤ comap i (𝓝 (i a))
⊢ Tendsto f (comap g (𝓝 d)) (𝓝 a)

tactic: exact le_trans lim1 lim2
state_before: α : Type u_1
β : Type u_2
γ : Type u_4
δ : Type u_3
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
i : α → β
di✝ : DenseInducing i
inst✝ : TopologicalSpace δ
f : γ → α
g : γ → δ
h : δ → β
d : δ
a : α
di : DenseInducing i
H : Tendsto h (𝓝 d) (𝓝 (i a))
comm : h ∘ g = i ∘ f
lim1 : map f (comap g (𝓝 d)) ≤ comap i (map h (𝓝 d))
lim2 : comap i (map h (𝓝 d)) ≤ 𝓝 a
⊢ Tendsto f (comap g (𝓝 d)) (𝓝 a)
Theorem: Nat.choose_symm
File: Mathlib/Data/Nat/Choose/Basic.lean

tactic: rw [choose_eq_factorial_div_factorial hk, choose_eq_factorial_div_factorial (Nat.sub_le _ _),
  tsub_tsub_cancel_of_le hk, mul_comm]
state_before: n k : ℕ
hk : k ≤ n
⊢ choose n (n - k) = choose n k
Theorem: Nat.Ioc_succ_singleton
File: Mathlib/Data/Nat/Interval.lean

tactic: rw [← Nat.Icc_succ_left, Icc_self]
state_before: a b c : ℕ
⊢ Ioc b (b + 1) = {b + 1}
Theorem: IsLocalizedModule.iso_symm_comp
File: Mathlib/Algebra/Module/LocalizedModule.lean

tactic: ext m
state_before: R : Type u_1
inst✝⁷ : CommRing R
S : Submonoid R
M : Type u_2
M' : Type u_3
M'' : Type ?u.700210
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : AddCommMonoid M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
f : M →ₗ[R] M'
g : M →ₗ[R] M''
inst✝ : IsLocalizedModule S f
⊢ LinearMap.comp (↑(LinearEquiv.symm (iso S f))) f = LocalizedModule.mkLinearMap S M

tactic: rw [LinearMap.comp_apply, LocalizedModule.mkLinearMap_apply]
state_before: case h
R : Type u_1
inst✝⁷ : CommRing R
S : Submonoid R
M : Type u_2
M' : Type u_3
M'' : Type ?u.700210
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : AddCommMonoid M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
f : M →ₗ[R] M'
g : M →ₗ[R] M''
inst✝ : IsLocalizedModule S f
m : M
⊢ ↑(LinearMap.comp (↑(LinearEquiv.symm (iso S f))) f) m = ↑(LocalizedModule.mkLinearMap S M) m

tactic: change (iso S f).symm _ = _
state_before: case h
R : Type u_1
inst✝⁷ : CommRing R
S : Submonoid R
M : Type u_2
M' : Type u_3
M'' : Type ?u.700210
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : AddCommMonoid M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
f : M →ₗ[R] M'
g : M →ₗ[R] M''
inst✝ : IsLocalizedModule S f
m : M
⊢ ↑↑(LinearEquiv.symm (iso S f)) (↑f m) = LocalizedModule.mk m 1

tactic: rw [iso_symm_apply']
state_before: case h
R : Type u_1
inst✝⁷ : CommRing R
S : Submonoid R
M : Type u_2
M' : Type u_3
M'' : Type ?u.700210
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : AddCommMonoid M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
f : M →ₗ[R] M'
g : M →ₗ[R] M''
inst✝ : IsLocalizedModule S f
m : M
⊢ ↑(LinearEquiv.symm (iso S f)) (↑f m) = LocalizedModule.mk m 1

tactic: exact one_smul _ _
state_before: case h.eq1
R : Type u_1
inst✝⁷ : CommRing R
S : Submonoid R
M : Type u_2
M' : Type u_3
M'' : Type ?u.700210
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : AddCommMonoid M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
f : M →ₗ[R] M'
g : M →ₗ[R] M''
inst✝ : IsLocalizedModule S f
m : M
⊢ 1 • ↑f m = ↑f m
Theorem: Bool.xor_not_not
File: Mathlib/Data/Bool/Basic.lean

tactic: decide
state_before: ⊢ ∀ (a b : Bool), (xor (!a) !b) = xor a b
Theorem: PartENat.coe_add_get
File: Mathlib/Data/Nat/PartENat.lean

tactic: rfl
state_before: x : ℕ
y : PartENat
h : (↑x + y).Dom
⊢ Part.get (↑x + y) h = x + Part.get y (_ : y.Dom)
Theorem: aestronglyMeasurable_add_measure_iff
File: Mathlib/MeasureTheory/Function/StronglyMeasurable/Basic.lean

tactic: rw [← sum_cond, aestronglyMeasurable_sum_measure_iff, Bool.forall_bool, and_comm]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.400090
ι : Type ?u.400093
inst✝³ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f g : α → β
inst✝ : PseudoMetrizableSpace β
ν : Measure α
⊢ AEStronglyMeasurable f (μ + ν) ↔ AEStronglyMeasurable f μ ∧ AEStronglyMeasurable f ν

tactic: rfl
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.400090
ι : Type ?u.400093
inst✝³ : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
f g : α → β
inst✝ : PseudoMetrizableSpace β
ν : Measure α
⊢ AEStronglyMeasurable f (bif true then μ else ν) ∧ AEStronglyMeasurable f (bif false then μ else ν) ↔
    AEStronglyMeasurable f μ ∧ AEStronglyMeasurable f ν
Theorem: Action.associator_inv_hom
File: Mathlib/RepresentationTheory/Action.lean

tactic: dsimp [Monoidal.transport_associator]
state_before: V : Type (u + 1)
inst✝¹ : LargeCategory V
G : MonCat
inst✝ : MonoidalCategory V
X Y Z : Action V G
⊢ (α_ X Y Z).inv.hom = (α_ X.V Y.V Z.V).inv

tactic: simp
state_before: V : Type (u + 1)
inst✝¹ : LargeCategory V
G : MonCat
inst✝ : MonoidalCategory V
X Y Z : Action V G
⊢ ((𝟙 X.V ⊗ 𝟙 (Y.V ⊗ Z.V)) ≫ (α_ X.V Y.V Z.V).inv) ≫ (𝟙 (X.V ⊗ Y.V) ⊗ 𝟙 Z.V) = (α_ X.V Y.V Z.V).inv
Theorem: integrableOn_Iic_iff_integrableOn_Iio'
File: Mathlib/MeasureTheory/Integral/IntegrableOn.lean

tactic: rw [← Iio_union_right, integrableOn_union,
  eq_true (integrableOn_singleton_iff.mpr <| Or.inr hb.lt_top), and_true_iff]
state_before: α : Type u_1
β : Type ?u.3764222
E : Type u_2
F : Type ?u.3764228
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : PartialOrder α
inst✝ : MeasurableSingletonClass α
f : α → E
μ : MeasureTheory.Measure α
a b : α
hb : ↑↑μ {b} ≠ ⊤
⊢ IntegrableOn f (Iic b) ↔ IntegrableOn f (Iio b)
Theorem: differentiableWithinAt_univ
File: Mathlib/Analysis/Calculus/FDeriv/Basic.lean

tactic: simp only [DifferentiableWithinAt, hasFDerivWithinAt_univ, DifferentiableAt]
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.301608
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type ?u.301703
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
⊢ DifferentiableWithinAt 𝕜 f univ x ↔ DifferentiableAt 𝕜 f x
Theorem: inf_sdiff
File: Mathlib/Order/BooleanAlgebra.lean

tactic: rw [sup_inf_left]
state_before: α : Type u
β : Type ?u.34896
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ x ⊓ y ⊓ z ⊔ x \ z ⊓ y \ z = (x ⊓ y ⊓ z ⊔ x \ z) ⊓ (x ⊓ y ⊓ z ⊔ y \ z)

tactic: rw [sup_inf_right, sup_sdiff_self_right, inf_sup_right, inf_sdiff_sup_right]
state_before: α : Type u
β : Type ?u.34896
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ (x ⊓ y ⊓ z ⊔ x \ z) ⊓ (x ⊓ y ⊓ z ⊔ y \ z) = (x ⊓ y ⊓ (z ⊔ x) ⊔ x \ z) ⊓ (x ⊓ y ⊓ z ⊔ y \ z)

tactic: ac_rfl
state_before: α : Type u
β : Type ?u.34896
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ (x ⊓ y ⊓ (z ⊔ x) ⊔ x \ z) ⊓ (x ⊓ y ⊓ z ⊔ y \ z) = (y ⊓ (x ⊓ (x ⊔ z)) ⊔ x \ z) ⊓ (x ⊓ y ⊓ z ⊔ y \ z)

tactic: rw [inf_sup_self, sup_inf_inf_sdiff]
state_before: α : Type u
β : Type ?u.34896
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ (y ⊓ (x ⊓ (x ⊔ z)) ⊔ x \ z) ⊓ (x ⊓ y ⊓ z ⊔ y \ z) = (y ⊓ x ⊔ x \ z) ⊓ (x ⊓ y ⊔ y \ z)

tactic: rw [@inf_comm _ _ y, sup_inf_left]
state_before: α : Type u
β : Type ?u.34896
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ (y ⊓ x ⊔ x \ z) ⊓ (x ⊓ y ⊔ y \ z) = x ⊓ y ⊔ x \ z ⊓ y \ z

tactic: ac_rfl
state_before: α : Type u
β : Type ?u.34896
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ x ⊓ y ⊓ z ⊓ (x \ z ⊓ y \ z) = x ⊓ y ⊓ (z ⊓ x \ z) ⊓ y \ z

tactic: rw [inf_sdiff_self_right, inf_bot_eq, bot_inf_eq]
state_before: α : Type u
β : Type ?u.34896
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ x ⊓ y ⊓ (z ⊓ x \ z) ⊓ y \ z = ⊥
Theorem: CategoryTheory.Bicategory.leftUnitor_whiskerRight
File: Mathlib/CategoryTheory/Bicategory/Basic.lean

tactic: rw [← whiskerLeft_iff, whiskerLeft_comp, ← cancel_epi (α_ _ _ _).hom, ←
    cancel_epi ((α_ _ _ _).hom ▷ _), pentagon_assoc, triangle, ← associator_naturality_middle, ←
    comp_whiskerRight_assoc, triangle, associator_naturality_left]
state_before: B : Type u
inst✝ : Bicategory B
a b c d e : B
f : a ⟶ b
g : b ⟶ c
⊢ (λ_ f).hom ▷ g = (α_ (𝟙 a) f g).hom ≫ (λ_ (f ≫ g)).hom
Theorem: le_inv_smul_iff
File: Mathlib/Algebra/Order/SMul.lean

tactic: rw [← smul_le_smul_iff_of_pos h, smul_inv_smul₀ h.ne']
state_before: ι : Type ?u.113737
𝕜 : Type u_1
R : Type ?u.113743
M : Type u_2
N : Type ?u.113749
inst✝⁵ : LinearOrderedSemifield 𝕜
inst✝⁴ : OrderedAddCommMonoid M
inst✝³ : OrderedAddCommMonoid N
inst✝² : MulActionWithZero 𝕜 M
inst✝¹ : MulActionWithZero 𝕜 N
inst✝ : OrderedSMul 𝕜 M
s : Set M
a b : M
c : 𝕜
h : 0 < c
⊢ a ≤ c⁻¹ • b ↔ c • a ≤ b
Theorem: Matrix.smul_eq_mul_diagonal
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext
state_before: l : Type ?u.482923
m : Type u_2
n : Type u_1
o : Type ?u.482932
m' : o → Type ?u.482937
n' : o → Type ?u.482942
R : Type ?u.482945
S : Type ?u.482948
α : Type v
β : Type w
γ : Type ?u.482955
inst✝² : CommSemiring α
inst✝¹ : Fintype n
inst✝ : DecidableEq n
M : Matrix m n α
a : α
⊢ a • M = M ⬝ diagonal fun x => a

tactic: simp [mul_comm]
state_before: case a.h
l : Type ?u.482923
m : Type u_2
n : Type u_1
o : Type ?u.482932
m' : o → Type ?u.482937
n' : o → Type ?u.482942
R : Type ?u.482945
S : Type ?u.482948
α : Type v
β : Type w
γ : Type ?u.482955
inst✝² : CommSemiring α
inst✝¹ : Fintype n
inst✝ : DecidableEq n
M : Matrix m n α
a : α
i✝ : m
x✝ : n
⊢ (a • M) i✝ x✝ = (M ⬝ diagonal fun x => a) i✝ x✝
Theorem: List.zip_of_prod
File: Mathlib/Data/List/Zip.lean

tactic: rw [← hl, ← hr, ← zip_unzip lp, ← unzip_left, ← unzip_right, zip_unzip, zip_unzip]
state_before: α : Type u
β : Type u_1
γ : Type ?u.87473
δ : Type ?u.87476
ε : Type ?u.87479
l : List α
l' : List β
lp : List (α × β)
hl : map Prod.fst lp = l
hr : map Prod.snd lp = l'
⊢ lp = zip l l'
Theorem: PartENat.ne_top_iff
File: Mathlib/Data/Nat/PartENat.lean

tactic: simpa only [← some_eq_natCast] using Part.ne_none_iff
state_before: x : PartENat
⊢ x ≠ ⊤ ↔ ∃ n, x = ↑n
Theorem: List.rotate_perm
File: Mathlib/Data/List/Rotate.lean

tactic: rw [rotate_eq_rotate']
state_before: α : Type u
l : List α
n : ℕ
⊢ rotate l n ~ l

tactic: induction' n with n hn generalizing l
state_before: α : Type u
l : List α
n : ℕ
⊢ rotate' l n ~ l

tactic: simp
state_before: case zero
α : Type u
l✝ l : List α
⊢ rotate' l zero ~ l

tactic: cases' l with hd tl
state_before: case succ
α : Type u
l✝ : List α
n : ℕ
hn : ∀ (l : List α), rotate' l n ~ l
l : List α
⊢ rotate' l (succ n) ~ l

tactic: simp
state_before: case succ.nil
α : Type u
l : List α
n : ℕ
hn : ∀ (l : List α), rotate' l n ~ l
⊢ rotate' [] (succ n) ~ []

tactic: rw [rotate'_cons_succ]
state_before: case succ.cons
α : Type u
l : List α
n : ℕ
hn : ∀ (l : List α), rotate' l n ~ l
hd : α
tl : List α
⊢ rotate' (hd :: tl) (succ n) ~ hd :: tl

tactic: exact (hn _).trans (perm_append_singleton _ _)
state_before: case succ.cons
α : Type u
l : List α
n : ℕ
hn : ∀ (l : List α), rotate' l n ~ l
hd : α
tl : List α
⊢ rotate' (tl ++ [hd]) n ~ hd :: tl
Theorem: normal_of_eq_cosets
File: Mathlib/GroupTheory/Coset.lean

tactic: rw [← mem_rightCoset_iff, ← h]
state_before: α : Type u_1
inst✝ : Group α
s : Subgroup α
h : ∀ (g : α), g *l ↑s = ↑s *r g
a : α
ha : a ∈ s
g : α
⊢ g * a * g⁻¹ ∈ ↑s

tactic: exact mem_leftCoset g ha
state_before: α : Type u_1
inst✝ : Group α
s : Subgroup α
h : ∀ (g : α), g *l ↑s = ↑s *r g
a : α
ha : a ∈ s
g : α
⊢ g * a ∈ g *l ↑s
Theorem: alternatingGroup.nontrivial_of_three_le_card
File: Mathlib/GroupTheory/SpecificGroups/Alternating.lean

tactic: haveI := Fintype.one_lt_card_iff_nontrivial.1 (lt_trans (by decide) h3)
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h3 : 3 ≤ card α
⊢ Nontrivial { x // x ∈ alternatingGroup α }

tactic: rw [← Fintype.one_lt_card_iff_nontrivial]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h3 : 3 ≤ card α
this : Nontrivial α
⊢ Nontrivial { x // x ∈ alternatingGroup α }

tactic: refine' lt_of_mul_lt_mul_left _ (le_of_lt Nat.prime_two.pos)
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h3 : 3 ≤ card α
this : Nontrivial α
⊢ 1 < card { x // x ∈ alternatingGroup α }

tactic: rw [two_mul_card_alternatingGroup, card_perm, ← Nat.succ_le_iff]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h3 : 3 ≤ card α
this : Nontrivial α
⊢ 2 * 1 < 2 * card { x // x ∈ alternatingGroup α }

tactic: exact le_trans h3 (card α).self_le_factorial
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h3 : 3 ≤ card α
this : Nontrivial α
⊢ Nat.succ (2 * 1) ≤ Nat.factorial (card α)

tactic: decide
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h3 : 3 ≤ card α
⊢ 1 < 2
Theorem: RatFunc.mul_inv_cancel
File: Mathlib/FieldTheory/RatFunc.lean

tactic: have : p ≠ 0 := fun hp => h <| by rw [hp, ofFractionRing_zero]
state_before: K : Type u
inst✝¹ : CommRing K
inst✝ : IsDomain K
p : FractionRing K[X]
h : { toFractionRing := p } ≠ 0
⊢ { toFractionRing := p } * { toFractionRing := p }⁻¹ = 1

tactic: simpa only [← ofFractionRing_inv, ← ofFractionRing_mul, ← ofFractionRing_one,
  ofFractionRing.injEq] using  _root_.mul_inv_cancel this
state_before: K : Type u
inst✝¹ : CommRing K
inst✝ : IsDomain K
p : FractionRing K[X]
h : { toFractionRing := p } ≠ 0
this : p ≠ 0
⊢ { toFractionRing := p } * { toFractionRing := p }⁻¹ = 1

tactic: rw [hp, ofFractionRing_zero]
state_before: K : Type u
inst✝¹ : CommRing K
inst✝ : IsDomain K
p : FractionRing K[X]
h : { toFractionRing := p } ≠ 0
hp : p = 0
⊢ { toFractionRing := p } = 0
Theorem: ZNum.cast_to_int
File: Mathlib/Data/Num/Lemmas.lean

tactic: rw [cast_zero, cast_zero, Int.cast_zero]
state_before: α : Type u_1
inst✝ : AddGroupWithOne α
⊢ ↑↑0 = ↑0

tactic: rw [cast_pos, cast_pos, PosNum.cast_to_int]
state_before: α : Type u_1
inst✝ : AddGroupWithOne α
p : PosNum
⊢ ↑↑(pos p) = ↑(pos p)

tactic: rw [cast_neg, cast_neg, Int.cast_neg, PosNum.cast_to_int]
state_before: α : Type u_1
inst✝ : AddGroupWithOne α
p : PosNum
⊢ ↑↑(neg p) = ↑(neg p)
Theorem: Filter.mem_coprod_iff
File: Mathlib/Order/Filter/Prod.lean

tactic: simp [Filter.coprod]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.53677
δ : Type ?u.53680
ι : Sort ?u.53683
f✝ : Filter α
g✝ : Filter β
s : Set (α × β)
f : Filter α
g : Filter β
⊢ s ∈ Filter.coprod f g ↔ (∃ t₁, t₁ ∈ f ∧ Prod.fst ⁻¹' t₁ ⊆ s) ∧ ∃ t₂, t₂ ∈ g ∧ Prod.snd ⁻¹' t₂ ⊆ s
Theorem: List.Nodup.product
File: Mathlib/Data/List/Nodup.lean

tactic: rcases mem_map.1 h₁ with ⟨b₁, _, rfl⟩
state_before: α : Type u
β : Type v
l l₁ l₂✝ : List α
r : α → α → Prop
a b : α
l₂ : List β
d₁ : Nodup l₁
d₂ : Nodup l₂
a₁ a₂ : α
n : a₁ ≠ a₂
x : α × β
h₁ : x ∈ map (Prod.mk a₁) l₂
h₂ : x ∈ map (Prod.mk a₂) l₂
⊢ False

tactic: rcases mem_map.1 h₂ with ⟨b₂, mb₂, ⟨⟩⟩
state_before: case intro.intro
α : Type u
β : Type v
l l₁ l₂✝ : List α
r : α → α → Prop
a b : α
l₂ : List β
d₁ : Nodup l₁
d₂ : Nodup l₂
a₁ a₂ : α
n : a₁ ≠ a₂
b₁ : β
left✝ : b₁ ∈ l₂
h₁ : (a₁, b₁) ∈ map (Prod.mk a₁) l₂
h₂ : (a₁, b₁) ∈ map (Prod.mk a₂) l₂
⊢ False

tactic: exact n rfl
state_before: case intro.intro.intro.intro.refl
α : Type u
β : Type v
l l₁ l₂✝ : List α
r : α → α → Prop
a b : α
l₂ : List β
d₁ : Nodup l₁
d₂ : Nodup l₂
a₁ : α
b₁ : β
left✝ : b₁ ∈ l₂
h₁ : (a₁, b₁) ∈ map (Prod.mk a₁) l₂
n : a₁ ≠ a₁
h₂ : (a₁, b₁) ∈ map (Prod.mk a₁) l₂
mb₂ : b₁ ∈ l₂
⊢ False
Theorem: Finset.coe_sup_of_nonempty
File: Mathlib/Data/Finset/Lattice.lean

tactic: simp only [← sup'_eq_sup h, coe_sup' h]
state_before: F : Type ?u.291052
α : Type u_2
β : Type u_1
γ : Type ?u.291061
ι : Type ?u.291064
κ : Type ?u.291067
inst✝¹ : SemilatticeSup α
inst✝ : OrderBot α
s : Finset β
h : Finset.Nonempty s
f : β → α
⊢ ↑(sup s f) = sup s (WithBot.some ∘ f)
Theorem: Real.zero_rpow_eq_iff
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: constructor
state_before: x a : ℝ
⊢ 0 ^ x = a ↔ x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1

tactic: intro hyp
state_before: case mp
x a : ℝ
⊢ 0 ^ x = a → x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1

tactic: simp only [rpow_def, Complex.ofReal_zero] at hyp
state_before: case mp
x a : ℝ
hyp : 0 ^ x = a
⊢ x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1

tactic: by_cases x = 0
state_before: case mp
x a : ℝ
hyp : (0 ^ ↑x).re = a
⊢ x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1

tactic: subst h
state_before: case pos
x a : ℝ
hyp : (0 ^ ↑x).re = a
h : x = 0
⊢ x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1

tactic: simp only [Complex.one_re, Complex.ofReal_zero, Complex.cpow_zero] at hyp
state_before: case pos
a : ℝ
hyp : (0 ^ ↑0).re = a
⊢ 0 ≠ 0 ∧ a = 0 ∨ 0 = 0 ∧ a = 1

tactic: exact Or.inr ⟨rfl, hyp.symm⟩
state_before: case pos
a : ℝ
hyp : 1 = a
⊢ 0 ≠ 0 ∧ a = 0 ∨ 0 = 0 ∧ a = 1

tactic: rw [Complex.zero_cpow (Complex.ofReal_ne_zero.mpr h)] at hyp
state_before: case neg
x a : ℝ
hyp : (0 ^ ↑x).re = a
h : ¬x = 0
⊢ x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1

tactic: exact Or.inl ⟨h, hyp.symm⟩
state_before: case neg
x a : ℝ
hyp : 0.re = a
h : ¬x = 0
⊢ x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1

tactic: rintro (⟨h, rfl⟩ | ⟨rfl, rfl⟩)
state_before: case mpr
x a : ℝ
⊢ x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1 → 0 ^ x = a

tactic: exact zero_rpow h
state_before: case mpr.inl.intro
x : ℝ
h : x ≠ 0
⊢ 0 ^ x = 0

tactic: exact rpow_zero _
state_before: case mpr.inr.intro

⊢ 0 ^ 0 = 1
Theorem: Submodule.span_nat_eq_addSubmonoid_closure
File: Mathlib/LinearAlgebra/Span.lean

tactic: refine' Eq.symm (AddSubmonoid.closure_eq_of_le subset_span _)
state_before: R : Type ?u.32732
R₂ : Type ?u.32735
K : Type ?u.32738
M : Type u_1
M₂ : Type ?u.32744
V : Type ?u.32747
S : Type ?u.32750
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s✝ t s : Set M
⊢ (span ℕ s).toAddSubmonoid = AddSubmonoid.closure s

tactic: apply (OrderIso.to_galoisConnection (AddSubmonoid.toNatSubmodule (M := M)).symm).l_le
   (a := span ℕ s) (b := AddSubmonoid.closure s)
state_before: R : Type ?u.32732
R₂ : Type ?u.32735
K : Type ?u.32738
M : Type u_1
M₂ : Type ?u.32744
V : Type ?u.32747
S : Type ?u.32750
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s✝ t s : Set M
⊢ (span ℕ s).toAddSubmonoid ≤ AddSubmonoid.closure s

tactic: rw [span_le]
state_before: R : Type ?u.32732
R₂ : Type ?u.32735
K : Type ?u.32738
M : Type u_1
M₂ : Type ?u.32744
V : Type ?u.32747
S : Type ?u.32750
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s✝ t s : Set M
⊢ span ℕ s ≤ ↑(OrderIso.symm (OrderIso.symm AddSubmonoid.toNatSubmodule)) (AddSubmonoid.closure s)

tactic: exact AddSubmonoid.subset_closure
state_before: R : Type ?u.32732
R₂ : Type ?u.32735
K : Type ?u.32738
M : Type u_1
M₂ : Type ?u.32744
V : Type ?u.32747
S : Type ?u.32750
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s✝ t s : Set M
⊢ s ⊆ ↑(↑(OrderIso.symm (OrderIso.symm AddSubmonoid.toNatSubmodule)) (AddSubmonoid.closure s))
Theorem: LocalHomeomorph.eventually_nhds'
File: Mathlib/Topology/LocalHomeomorph.lean

tactic: rw [e.eventually_nhds _ hx]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.33714
δ : Type ?u.33717
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
e✝ : LocalHomeomorph α β
e' : LocalHomeomorph β γ
e : LocalHomeomorph α β
x : α
p : α → Prop
hx : x ∈ e.source
⊢ (∀ᶠ (y : β) in 𝓝 (↑e x), p (↑(LocalHomeomorph.symm e) y)) ↔ ∀ᶠ (x : α) in 𝓝 x, p x

tactic: refine' eventually_congr ((e.eventually_left_inverse hx).mono fun y hy => _)
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.33714
δ : Type ?u.33717
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
e✝ : LocalHomeomorph α β
e' : LocalHomeomorph β γ
e : LocalHomeomorph α β
x : α
p : α → Prop
hx : x ∈ e.source
⊢ (∀ᶠ (x : α) in 𝓝 x, p (↑(LocalHomeomorph.symm e) (↑e x))) ↔ ∀ᶠ (x : α) in 𝓝 x, p x

tactic: rw [hy]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.33714
δ : Type ?u.33717
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
e✝ : LocalHomeomorph α β
e' : LocalHomeomorph β γ
e : LocalHomeomorph α β
x : α
p : α → Prop
hx : x ∈ e.source
y : α
hy : ↑(LocalHomeomorph.symm e) (↑e y) = y
⊢ p (↑(LocalHomeomorph.symm e) (↑e y)) ↔ p y
Theorem: mul_right_eq_self
File: Mathlib/Algebra/Group/Basic.lean

tactic: rw [mul_one]
state_before: α : Type ?u.12442
β : Type ?u.12445
G : Type ?u.12448
M : Type u
inst✝ : LeftCancelMonoid M
a b : M
⊢ a * b = a ↔ a * b = a * 1
Theorem: Set.Countable.measurableSet
File: Mathlib/MeasureTheory/MeasurableSpaceDef.lean

tactic: rw [← biUnion_of_singleton s]
state_before: α : Type u_1
β : Type ?u.13908
γ : Type ?u.13911
δ : Type ?u.13914
δ' : Type ?u.13917
ι : Sort ?u.13920
s✝ t u : Set α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
s : Set α
hs : Set.Countable s
⊢ MeasurableSet s

tactic: exact .biUnion hs fun b _ => .singleton b
state_before: α : Type u_1
β : Type ?u.13908
γ : Type ?u.13911
δ : Type ?u.13914
δ' : Type ?u.13917
ι : Sort ?u.13920
s✝ t u : Set α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
s : Set α
hs : Set.Countable s
⊢ MeasurableSet (⋃ (x : α) (_ : x ∈ s), {x})
Theorem: IsFractionRing.eq_zero_of_num_eq_zero
File: Mathlib/RingTheory/Localization/NumDen.lean

tactic: rw [MulZeroClass.zero_mul, h, RingHom.map_zero]
state_before: R : Type ?u.150711
inst✝⁹ : CommRing R
M : Submonoid R
S : Type ?u.150917
inst✝⁸ : CommRing S
inst✝⁷ : Algebra R S
P : Type ?u.151171
inst✝⁶ : CommRing P
A : Type u_1
inst✝⁵ : CommRing A
inst✝⁴ : IsDomain A
inst✝³ : UniqueFactorizationMonoid A
K : Type u_2
inst✝² : Field K
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
x : K
h : num A x = 0
⊢ 0 * ↑(algebraMap (?m.152136 h) K) ↑(den (?m.152136 h) x) = ↑(algebraMap (?m.152136 h) K) (num (?m.152136 h) x)