tasksource/leandojo huggingface dataset:
Theorem: FractionalIdeal.canonicalEquiv_flip
File: Mathlib/RingTheory/FractionalIdeal.lean

tactic: rw [← canonicalEquiv_symm, RingEquiv.apply_symm_apply]
state_before: R : Type u_1
inst✝⁶ : CommRing R
S : Submonoid R
P : Type u_3
inst✝⁵ : CommRing P
inst✝⁴ : Algebra R P
loc : IsLocalization S P
P' : Type u_2
inst✝³ : CommRing P'
inst✝² : Algebra R P'
loc' : IsLocalization S P'
P'' : Type ?u.880849
inst✝¹ : CommRing P''
inst✝ : Algebra R P''
loc'' : IsLocalization S P''
I✝ J : FractionalIdeal S P
g : P →ₐ[R] P'
I : FractionalIdeal S P'
⊢ ↑(canonicalEquiv S P P') (↑(canonicalEquiv S P' P) I) = I
Theorem: top_bihimp
File: Mathlib/Order/SymmDiff.lean

tactic: rw [bihimp_comm, bihimp_top]
state_before: ι : Type ?u.37634
α : Type u_1
β : Type ?u.37640
π : ι → Type ?u.37645
inst✝ : GeneralizedHeytingAlgebra α
a b c d : α
⊢ ⊤ ⇔ a = a
Theorem: Submodule.fst_inf_snd
File: Mathlib/LinearAlgebra/Prod.lean

tactic: rw [eq_bot_iff]
state_before: R : Type u
K : Type u'
M : Type v
V : Type v'
M₂ : Type w
V₂ : Type w'
M₃ : Type y
V₃ : Type y'
M₄ : Type z
ι : Type x
M₅ : Type ?u.372051
M₆ : Type ?u.372054
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : AddCommMonoid M₂
inst✝¹ : Module R M
inst✝ : Module R M₂
p : Submodule R M
q : Submodule R M₂
⊢ fst R M M₂ ⊓ snd R M M₂ = ⊥

tactic: rintro ⟨x, y⟩
state_before: R : Type u
K : Type u'
M : Type v
V : Type v'
M₂ : Type w
V₂ : Type w'
M₃ : Type y
V₃ : Type y'
M₄ : Type z
ι : Type x
M₅ : Type ?u.372051
M₆ : Type ?u.372054
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : AddCommMonoid M₂
inst✝¹ : Module R M
inst✝ : Module R M₂
p : Submodule R M
q : Submodule R M₂
⊢ fst R M M₂ ⊓ snd R M M₂ ≤ ⊥

tactic: simp only [fst, comap_bot, snd, ge_iff_le, mem_inf, mem_ker, snd_apply, fst_apply, mem_bot,
  Prod.mk_eq_zero, and_comm, imp_self]
state_before: case mk
R : Type u
K : Type u'
M : Type v
V : Type v'
M₂ : Type w
V₂ : Type w'
M₃ : Type y
V₃ : Type y'
M₄ : Type z
ι : Type x
M₅ : Type ?u.372051
M₆ : Type ?u.372054
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : AddCommMonoid M₂
inst✝¹ : Module R M
inst✝ : Module R M₂
p : Submodule R M
q : Submodule R M₂
x : M
y : M₂
⊢ (x, y) ∈ fst R M M₂ ⊓ snd R M M₂ → (x, y) ∈ ⊥
Theorem: WithTop.coe_iSup
File: Mathlib/Order/ConditionallyCompleteLattice/Basic.lean

tactic: rw [iSup, iSup, WithTop.coe_sSup' h, ← range_comp]
state_before: α : Type u_1
β : Type ?u.5450
γ : Type ?u.5453
ι : Sort u_2
inst✝¹ : Preorder α
inst✝ : SupSet α
f : ι → α
h : BddAbove (range f)
⊢ ↑(⨆ (i : ι), f i) = ⨆ (i : ι), ↑(f i)

tactic: rfl
state_before: α : Type u_1
β : Type ?u.5450
γ : Type ?u.5453
ι : Sort u_2
inst✝¹ : Preorder α
inst✝ : SupSet α
f : ι → α
h : BddAbove (range f)
⊢ sSup (range ((fun a => ↑a) ∘ f)) = sSup (range fun i => ↑(f i))
Theorem: Algebra.leftMulMatrix_injective
File: Mathlib/LinearAlgebra/Matrix/ToLin.lean

tactic: rw [(LinearMap.toMatrix b b).injective h]
state_before: R : Type u_2
S : Type u_1
inst✝⁴ : CommRing R
inst✝³ : Ring S
inst✝² : Algebra R S
m : Type u_3
inst✝¹ : Fintype m
inst✝ : DecidableEq m
b : Basis m R S
x x' : S
h : ↑(leftMulMatrix b) x = ↑(leftMulMatrix b) x'
⊢ ↑(↑(lmul R S) x) 1 = ↑(↑(lmul R S) x') 1
Theorem: mul_mul_inv_cancel'_right
File: Mathlib/Algebra/Group/Basic.lean

tactic: rw [← div_eq_mul_inv, mul_div_cancel'_right a b]
state_before: α : Type ?u.72561
β : Type ?u.72564
G : Type u_1
inst✝ : CommGroup G
a✝ b✝ c d a b : G
⊢ a * (b * a⁻¹) = b
Theorem: Finset.piecewise_insert_of_ne
File: Mathlib/Data/Finset/Basic.lean

tactic: simp [piecewise, h]
state_before: α : Type u_1
β : Type ?u.297377
γ : Type ?u.297380
δ : α → Sort u_2
s : Finset α
f g : (i : α) → δ i
inst✝² : (j : α) → Decidable (j ∈ s)
inst✝¹ : DecidableEq α
i j : α
inst✝ : (i : α) → Decidable (i ∈ insert j s)
h : i ≠ j
⊢ piecewise (insert j s) f g i = piecewise s f g i
Theorem: LinearPMap.closure_def'
File: Mathlib/Topology/Algebra/Module/LinearPMap.lean

tactic: simp [closure, hf]
state_before: R : Type u_1
E : Type u_2
F : Type u_3
inst✝¹¹ : CommRing R
inst✝¹⁰ : AddCommGroup E
inst✝⁹ : AddCommGroup F
inst✝⁸ : Module R E
inst✝⁷ : Module R F
inst✝⁶ : TopologicalSpace E
inst✝⁵ : TopologicalSpace F
inst✝⁴ : ContinuousAdd E
inst✝³ : ContinuousAdd F
inst✝² : TopologicalSpace R
inst✝¹ : ContinuousSMul R E
inst✝ : ContinuousSMul R F
f : E →ₗ.[R] F
hf : ¬IsClosable f
⊢ closure f = f
Theorem: isSquare_of_charTwo'
File: Mathlib/Algebra/CharP/Basic.lean

tactic: cases nonempty_fintype R
state_before: R✝ : Type ?u.925715
R : Type u_1
inst✝³ : Finite R
inst✝² : CommRing R
inst✝¹ : IsReduced R
inst✝ : CharP R 2
a : R
⊢ IsSquare a

tactic: exact
  Exists.imp (fun b h => pow_two b ▸ Eq.symm h)
    (((Fintype.bijective_iff_injective_and_card _).mpr ⟨frobenius_inj R 2, rfl⟩).surjective a)
state_before: case intro
R✝ : Type ?u.925715
R : Type u_1
inst✝³ : Finite R
inst✝² : CommRing R
inst✝¹ : IsReduced R
inst✝ : CharP R 2
a : R
val✝ : Fintype R
⊢ IsSquare a
Theorem: Int.exists_sq_add_sq_add_one_eq_k
File: Mathlib/NumberTheory/SumFourSquares.lean

tactic: exact_mod_cast hk
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
a b k : ℕ
left✝ : 0 < k
hkp : k < p
hk : a ^ 2 + b ^ 2 + 1 = k * p
⊢ ↑a ^ 2 + ↑b ^ 2 + 1 = ↑k * ↑p
Theorem: PartENat.get_natCast'
File: Mathlib/Data/Nat/PartENat.lean

tactic: rw [← natCast_inj, natCast_get]
state_before: x : ℕ
h : (↑x).Dom
⊢ Part.get (↑x) h = x
Theorem: CategoryTheory.indecomposable_of_simple
File: Mathlib/CategoryTheory/Simple.lean

tactic: refine' or_iff_not_imp_left.mpr fun h => _
state_before: C : Type u
inst✝³ : Category C
inst✝² : Preadditive C
inst✝¹ : HasBinaryBiproducts C
X : C
inst✝ : Simple X
Y Z : C
i : X ≅ Y ⊞ Z
⊢ IsZero Y ∨ IsZero Z

tactic: rw [IsZero.iff_isSplitMono_eq_zero (biprod.inl : Y ⟶ Y ⊞ Z)] at h
state_before: C : Type u
inst✝³ : Category C
inst✝² : Preadditive C
inst✝¹ : HasBinaryBiproducts C
X : C
inst✝ : Simple X
Y Z : C
i : X ≅ Y ⊞ Z
h : ¬IsZero Y
⊢ IsZero Z

tactic: change biprod.inl ≠ 0 at h
state_before: C : Type u
inst✝³ : Category C
inst✝² : Preadditive C
inst✝¹ : HasBinaryBiproducts C
X : C
inst✝ : Simple X
Y Z : C
i : X ≅ Y ⊞ Z
h : ¬biprod.inl = 0
⊢ IsZero Z

tactic: have : Simple (Y ⊞ Z) := Simple.of_iso i.symm
state_before: C : Type u
inst✝³ : Category C
inst✝² : Preadditive C
inst✝¹ : HasBinaryBiproducts C
X : C
inst✝ : Simple X
Y Z : C
i : X ≅ Y ⊞ Z
h : biprod.inl ≠ 0
⊢ IsZero Z

tactic: rw [← Simple.mono_isIso_iff_nonzero biprod.inl] at h
state_before: C : Type u
inst✝³ : Category C
inst✝² : Preadditive C
inst✝¹ : HasBinaryBiproducts C
X : C
inst✝ : Simple X
Y Z : C
i : X ≅ Y ⊞ Z
h : biprod.inl ≠ 0
this : Simple (Y ⊞ Z)
⊢ IsZero Z

tactic: rwa [Biprod.isIso_inl_iff_isZero] at h
state_before: C : Type u
inst✝³ : Category C
inst✝² : Preadditive C
inst✝¹ : HasBinaryBiproducts C
X : C
inst✝ : Simple X
Y Z : C
i : X ≅ Y ⊞ Z
h : IsIso biprod.inl
this : Simple (Y ⊞ Z)
⊢ IsZero Z
Theorem: Filter.mem_coclosed_compact'
File: Mathlib/Topology/SubsetProperties.lean

tactic: simp only [mem_coclosedCompact, compl_subset_comm]
state_before: α : Type u
β : Type v
ι : Type ?u.52679
π : ι → Type ?u.52684
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
⊢ s ∈ coclosedCompact α ↔ ∃ t, IsClosed t ∧ IsCompact t ∧ sᶜ ⊆ t
Theorem: UniformSpace.SeparationQuotient.map_comp
File: Mathlib/Topology/UniformSpace/Separation.lean

tactic: simp only [Function.comp, map_mk, hf, hg]
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
f : α → β
g : β → γ
hf : UniformContinuous f
hg : UniformContinuous g
⊢ Quotient.mk (separationSetoid γ) ∘ g ∘ f = (map g ∘ map f) ∘ Quotient.mk (separationSetoid α)
Theorem: exists_dvd_and_dvd_of_dvd_mul
File: Mathlib/Algebra/GCDMonoid/Basic.lean

tactic: by_cases h0 : gcd k m = 0
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
m n k : α
H : k ∣ m * n
⊢ ∃ d₁ d₂, d₁ ∣ m ∧ d₂ ∣ n ∧ k = d₁ * d₂

tactic: rw [gcd_eq_zero_iff] at h0
state_before: case pos
α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
m n k : α
H : k ∣ m * n
h0 : gcd k m = 0
⊢ ∃ d₁ d₂, d₁ ∣ m ∧ d₂ ∣ n ∧ k = d₁ * d₂

tactic: rcases h0 with ⟨rfl, rfl⟩
state_before: case pos
α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
m n k : α
H : k ∣ m * n
h0 : k = 0 ∧ m = 0
⊢ ∃ d₁ d₂, d₁ ∣ m ∧ d₂ ∣ n ∧ k = d₁ * d₂

tactic: refine' ⟨0, n, dvd_refl 0, dvd_refl n, _⟩
state_before: case pos.intro
α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
n : α
H : 0 ∣ 0 * n
⊢ ∃ d₁ d₂, d₁ ∣ 0 ∧ d₂ ∣ n ∧ 0 = d₁ * d₂

tactic: simp
state_before: case pos.intro
α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
n : α
H : 0 ∣ 0 * n
⊢ 0 = 0 * n

tactic: obtain ⟨a, ha⟩ := gcd_dvd_left k m
state_before: case neg
α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
m n k : α
H : k ∣ m * n
h0 : ¬gcd k m = 0
⊢ ∃ d₁ d₂, d₁ ∣ m ∧ d₂ ∣ n ∧ k = d₁ * d₂

tactic: refine' ⟨gcd k m, a, gcd_dvd_right _ _, _, ha⟩
state_before: case neg.intro
α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
m n k : α
H : k ∣ m * n
h0 : ¬gcd k m = 0
a : α
ha : k = gcd k m * a
⊢ ∃ d₁ d₂, d₁ ∣ m ∧ d₂ ∣ n ∧ k = d₁ * d₂

tactic: suffices h : gcd k m * a ∣ gcd k m * n
state_before: case neg.intro
α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
m n k : α
H : k ∣ m * n
h0 : ¬gcd k m = 0
a : α
ha : k = gcd k m * a
⊢ a ∣ n

tactic: rw [← ha]
state_before: case h
α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
m n k : α
H : k ∣ m * n
h0 : ¬gcd k m = 0
a : α
ha : k = gcd k m * a
⊢ gcd k m * a ∣ gcd k m * n

tactic: exact dvd_gcd_mul_of_dvd_mul H
state_before: case h
α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
m n k : α
H : k ∣ m * n
h0 : ¬gcd k m = 0
a : α
ha : k = gcd k m * a
⊢ k ∣ gcd k m * n

tactic: cases' h with b hb
state_before: case neg.intro
α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
m n k : α
H : k ∣ m * n
h0 : ¬gcd k m = 0
a : α
ha : k = gcd k m * a
h : gcd k m * a ∣ gcd k m * n
⊢ a ∣ n

tactic: use b
state_before: case neg.intro.intro
α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
m n k : α
H : k ∣ m * n
h0 : ¬gcd k m = 0
a : α
ha : k = gcd k m * a
b : α
hb : gcd k m * n = gcd k m * a * b
⊢ a ∣ n

tactic: rw [mul_assoc] at hb
state_before: case neg.intro.intro
α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
m n k : α
H : k ∣ m * n
h0 : ¬gcd k m = 0
a : α
ha : k = gcd k m * a
b : α
hb : gcd k m * n = gcd k m * a * b
⊢ n = a * b

tactic: apply mul_left_cancel₀ h0 hb
state_before: case neg.intro.intro
α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
m n k : α
H : k ∣ m * n
h0 : ¬gcd k m = 0
a : α
ha : k = gcd k m * a
b : α
hb : gcd k m * n = gcd k m * (a * b)
⊢ n = a * b
Theorem: Nat.succ_ascFactorial
File: Mathlib/Data/Nat/Factorial/Basic.lean

tactic: rw [add_zero, ascFactorial_zero, ascFactorial_zero]
state_before: n : ℕ
⊢ (n + 1) * ascFactorial (succ n) 0 = (n + 0 + 1) * ascFactorial n 0

tactic: rw [ascFactorial, mul_left_comm, succ_ascFactorial n k, ascFactorial,
  succ_add, ← add_assoc, succ_eq_add_one]
state_before: n k : ℕ
⊢ (n + 1) * ascFactorial (succ n) (k + 1) = (n + (k + 1) + 1) * ascFactorial n (k + 1)
Theorem: LieAlgebra.ad_eq_lmul_left_sub_lmul_right
File: Mathlib/Algebra/Lie/OfAssociative.lean

tactic: ext (a b)
state_before: R : Type u
L : Type v
M : Type w
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
A : Type v
inst✝¹ : Ring A
inst✝ : Algebra R A
⊢ ↑(ad R A) = LinearMap.mulLeft R - LinearMap.mulRight R

tactic: simp [LieRing.of_associative_ring_bracket]
state_before: case h.h
R : Type u
L : Type v
M : Type w
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
A : Type v
inst✝¹ : Ring A
inst✝ : Algebra R A
a b : A
⊢ ↑(↑(ad R A) a) b = ↑((LinearMap.mulLeft R - LinearMap.mulRight R) a) b
Theorem: Cubic.map_roots
File: Mathlib/Algebra/CubicDiscriminant.lean

tactic: rw [roots, map_toPoly]
state_before: R : Type u_2
S : Type u_1
F : Type ?u.681619
K : Type ?u.681622
P : Cubic R
inst✝² : CommRing R
inst✝¹ : CommRing S
φ : R →+* S
inst✝ : IsDomain S
⊢ roots (map φ P) = Polynomial.roots (Polynomial.map φ (toPoly P))
Theorem: Metric.hausdorffDist_zero_iff_closure_eq_closure
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: simp [← hausdorffEdist_zero_iff_closure_eq_closure, hausdorffDist,
  ENNReal.toReal_eq_zero_iff, fin]
state_before: ι : Sort ?u.87629
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
fin : hausdorffEdist s t ≠ ⊤
⊢ hausdorffDist s t = 0 ↔ closure s = closure t
Theorem: ContinuousLinearEquiv.comp_right_hasFDerivWithinAt_iff'
File: Mathlib/Analysis/Calculus/FDeriv/Equiv.lean

tactic: rw [← iso.comp_right_hasFDerivWithinAt_iff, ContinuousLinearMap.comp_assoc,
  iso.coe_symm_comp_coe, ContinuousLinearMap.comp_id]
state_before: 𝕜 : Type u_2
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_1
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type ?u.211011
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
iso : E ≃L[𝕜] F
f : F → G
s : Set F
x : E
f' : E →L[𝕜] G
⊢ HasFDerivWithinAt (f ∘ ↑iso) f' (↑iso ⁻¹' s) x ↔
    HasFDerivWithinAt f (comp f' ↑(ContinuousLinearEquiv.symm iso)) s (↑iso x)
Theorem: RatFunc.liftMonoidWithZeroHom_apply_div
File: Mathlib/FieldTheory/RatFunc.lean

tactic: rcases eq_or_ne q 0 with (rfl | hq)
state_before: K : Type u
inst✝² : CommRing K
inst✝¹ : IsDomain K
L : Type u_1
inst✝ : CommGroupWithZero L
φ : K[X] →*₀ L
hφ : K[X]⁰ ≤ Submonoid.comap φ L⁰
p q : K[X]
⊢ ↑(liftMonoidWithZeroHom φ hφ) (↑(algebraMap K[X] (RatFunc K)) p / ↑(algebraMap K[X] (RatFunc K)) q) = ↑φ p / ↑φ q

tactic: simp only [← mk_eq_div, mk_eq_localization_mk _ hq,
  liftMonoidWithZeroHom_apply_ofFractionRing_mk]
state_before: case inr
K : Type u
inst✝² : CommRing K
inst✝¹ : IsDomain K
L : Type u_1
inst✝ : CommGroupWithZero L
φ : K[X] →*₀ L
hφ : K[X]⁰ ≤ Submonoid.comap φ L⁰
p q : K[X]
hq : q ≠ 0
⊢ ↑(liftMonoidWithZeroHom φ hφ) (↑(algebraMap K[X] (RatFunc K)) p / ↑(algebraMap K[X] (RatFunc K)) q) = ↑φ p / ↑φ q

tactic: simp only [div_zero, map_zero]
state_before: case inl
K : Type u
inst✝² : CommRing K
inst✝¹ : IsDomain K
L : Type u_1
inst✝ : CommGroupWithZero L
φ : K[X] →*₀ L
hφ : K[X]⁰ ≤ Submonoid.comap φ L⁰
p : K[X]
⊢ ↑(liftMonoidWithZeroHom φ hφ) (↑(algebraMap K[X] (RatFunc K)) p / ↑(algebraMap K[X] (RatFunc K)) 0) = ↑φ p / ↑φ 0
Theorem: Units.mul_inv_cancel_right
File: Mathlib/Algebra/Group/Units.lean

tactic: rw [mul_assoc, mul_inv, mul_one]
state_before: α : Type u
inst✝ : Monoid α
a✝ b✝ c u : αˣ
a : α
b : αˣ
⊢ a * ↑b * ↑b⁻¹ = a
Theorem: Metric.tendstoUniformlyOn_iff
File: Mathlib/Topology/MetricSpace/Basic.lean

tactic: refine' ⟨fun H ε hε => H _ (dist_mem_uniformity hε), fun H u hu => _⟩
state_before: α : Type u
β : Type v
X : Type ?u.80494
ι✝ : Type ?u.80497
inst✝ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s✝ : Set α
ι : Type u_1
F : ι → β → α
f : β → α
p : Filter ι
s : Set β
⊢ TendstoUniformlyOn F f p s ↔ ∀ (ε : ℝ), ε > 0 → ∀ᶠ (n : ι) in p, ∀ (x : β), x ∈ s → dist (f x) (F n x) < ε

tactic: rcases mem_uniformity_dist.1 hu with ⟨ε, εpos, hε⟩
state_before: α : Type u
β : Type v
X : Type ?u.80494
ι✝ : Type ?u.80497
inst✝ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s✝ : Set α
ι : Type u_1
F : ι → β → α
f : β → α
p : Filter ι
s : Set β
H : ∀ (ε : ℝ), ε > 0 → ∀ᶠ (n : ι) in p, ∀ (x : β), x ∈ s → dist (f x) (F n x) < ε
u : Set (α × α)
hu : u ∈ 𝓤 α
⊢ ∀ᶠ (n : ι) in p, ∀ (x : β), x ∈ s → (f x, F n x) ∈ u

tactic: exact (H ε εpos).mono fun n hs x hx => hε (hs x hx)
state_before: case intro.intro
α : Type u
β : Type v
X : Type ?u.80494
ι✝ : Type ?u.80497
inst✝ : PseudoMetricSpace α
x y z : α
δ ε✝ ε₁ ε₂ : ℝ
s✝ : Set α
ι : Type u_1
F : ι → β → α
f : β → α
p : Filter ι
s : Set β
H : ∀ (ε : ℝ), ε > 0 → ∀ᶠ (n : ι) in p, ∀ (x : β), x ∈ s → dist (f x) (F n x) < ε
u : Set (α × α)
hu : u ∈ 𝓤 α
ε : ℝ
εpos : ε > 0
hε : ∀ {a b : α}, dist a b < ε → (a, b) ∈ u
⊢ ∀ᶠ (n : ι) in p, ∀ (x : β), x ∈ s → (f x, F n x) ∈ u
Theorem: Function.Periodic.sub_eq
File: Mathlib/Algebra/Periodic.lean

tactic: simpa only [sub_add_cancel] using (h (x - c)).symm
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.77999
f g : α → β
c c₁ c₂ x✝ : α
inst✝ : AddGroup α
h : Periodic f c
x : α
⊢ f (x - c) = f x
Theorem: Int.dvd_add_right
File: Std/Data/Int/DivMod.lean

tactic: rw [Int.add_comm, Int.dvd_add_left H]
state_before: a b c : Int
H : a ∣ b
⊢ a ∣ b + c ↔ a ∣ c
Theorem: LinearMap.det_toMatrix'
File: Mathlib/LinearAlgebra/Determinant.lean

tactic: simp [← toMatrix_eq_toMatrix']
state_before: R : Type ?u.466824
inst✝¹¹ : CommRing R
M : Type ?u.466830
inst✝¹⁰ : AddCommGroup M
inst✝⁹ : Module R M
M' : Type ?u.467415
inst✝⁸ : AddCommGroup M'
inst✝⁷ : Module R M'
ι✝ : Type ?u.467957
inst✝⁶ : DecidableEq ι✝
inst✝⁵ : Fintype ι✝
e : Basis ι✝ R M
A : Type u_2
inst✝⁴ : CommRing A
inst✝³ : Module A M
κ : Type ?u.468933
inst✝² : Fintype κ
ι : Type u_1
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
f : (ι → A) →ₗ[A] ι → A
⊢ det (↑toMatrix' f) = ↑LinearMap.det f
Theorem: Associates.mul_mono
File: Mathlib/Algebra/Associated.lean

tactic: simp [hx, hy, mul_comm, mul_assoc, mul_left_comm]
state_before: α : Type u_1
β : Type ?u.297556
γ : Type ?u.297559
δ : Type ?u.297562
inst✝ : CommMonoid α
a b c d : Associates α
h₁ : a ≤ b
h₂ : c ≤ d
x : Associates α
hx : b = a * x
y : Associates α
hy : d = c * y
⊢ b * d = a * c * (x * y)
Theorem: matPolyEquiv_charmatrix
File: Mathlib/LinearAlgebra/Matrix/Charpoly/Basic.lean

tactic: ext (k i j)
state_before: R : Type u
inst✝² : CommRing R
n : Type w
inst✝¹ : DecidableEq n
inst✝ : Fintype n
M : Matrix n n R
⊢ ↑matPolyEquiv (charmatrix M) = X - ↑C M

tactic: simp only [matPolyEquiv_coeff_apply, coeff_sub, Pi.sub_apply]
state_before: case a.a.h
R : Type u
inst✝² : CommRing R
n : Type w
inst✝¹ : DecidableEq n
inst✝ : Fintype n
M : Matrix n n R
k : ℕ
i j : n
⊢ coeff (↑matPolyEquiv (charmatrix M)) k i j = coeff (X - ↑C M) k i j

tactic: by_cases h : i = j
state_before: case a.a.h
R : Type u
inst✝² : CommRing R
n : Type w
inst✝¹ : DecidableEq n
inst✝ : Fintype n
M : Matrix n n R
k : ℕ
i j : n
⊢ coeff (charmatrix M i j) k = (coeff X k - coeff (↑C M) k) i j

tactic: subst h
state_before: case pos
R : Type u
inst✝² : CommRing R
n : Type w
inst✝¹ : DecidableEq n
inst✝ : Fintype n
M : Matrix n n R
k : ℕ
i j : n
h : i = j
⊢ coeff (charmatrix M i j) k = (coeff X k - coeff (↑C M) k) i j

tactic: rw [charmatrix_apply_eq, coeff_sub]
state_before: case pos
R : Type u
inst✝² : CommRing R
n : Type w
inst✝¹ : DecidableEq n
inst✝ : Fintype n
M : Matrix n n R
k : ℕ
i : n
⊢ coeff (charmatrix M i i) k = (coeff X k - coeff (↑C M) k) i i

tactic: simp only [coeff_X, coeff_C]
state_before: case pos
R : Type u
inst✝² : CommRing R
n : Type w
inst✝¹ : DecidableEq n
inst✝ : Fintype n
M : Matrix n n R
k : ℕ
i : n
⊢ coeff X k - coeff (↑C (M i i)) k = (coeff X k - coeff (↑C M) k) i i

tactic: split_ifs <;> simp
state_before: case pos
R : Type u
inst✝² : CommRing R
n : Type w
inst✝¹ : DecidableEq n
inst✝ : Fintype n
M : Matrix n n R
k : ℕ
i : n
⊢ ((if 1 = k then 1 else 0) - if k = 0 then M i i else 0) = ((if 1 = k then 1 else 0) - if k = 0 then M else 0) i i

tactic: rw [charmatrix_apply_ne _ _ _ h, coeff_X, coeff_neg, coeff_C, coeff_C]
state_before: case neg
R : Type u
inst✝² : CommRing R
n : Type w
inst✝¹ : DecidableEq n
inst✝ : Fintype n
M : Matrix n n R
k : ℕ
i j : n
h : ¬i = j
⊢ coeff (charmatrix M i j) k = (coeff X k - coeff (↑C M) k) i j

tactic: split_ifs <;> simp [h]
state_before: case neg
R : Type u
inst✝² : CommRing R
n : Type w
inst✝¹ : DecidableEq n
inst✝ : Fintype n
M : Matrix n n R
k : ℕ
i j : n
h : ¬i = j
⊢ (-if k = 0 then M i j else 0) = ((if 1 = k then 1 else 0) - if k = 0 then M else 0) i j
Theorem: finprod_mem_mul_distrib'
File: Mathlib/Algebra/BigOperators/Finprod.lean

tactic: rw [← mulSupport_mulIndicator] at hf hg
state_before: α : Type u_1
β : Type ?u.217456
ι : Type ?u.217459
G : Type ?u.217462
M : Type u_2
N : Type ?u.217468
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f g : α → M
a b : α
s t : Set α
hf : Set.Finite (s ∩ mulSupport f)
hg : Set.Finite (s ∩ mulSupport g)
⊢ (∏ᶠ (i : α) (_ : i ∈ s), f i * g i) = (∏ᶠ (i : α) (_ : i ∈ s), f i) * ∏ᶠ (i : α) (_ : i ∈ s), g i

tactic: simp only [finprod_mem_def, mulIndicator_mul, finprod_mul_distrib hf hg]
state_before: α : Type u_1
β : Type ?u.217456
ι : Type ?u.217459
G : Type ?u.217462
M : Type u_2
N : Type ?u.217468
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f g : α → M
a b : α
s t : Set α
hf : Set.Finite (mulSupport (mulIndicator s f))
hg : Set.Finite (mulSupport (mulIndicator s g))
⊢ (∏ᶠ (i : α) (_ : i ∈ s), f i * g i) = (∏ᶠ (i : α) (_ : i ∈ s), f i) * ∏ᶠ (i : α) (_ : i ∈ s), g i
Theorem: ContinuousLinearEquiv.coord_norm
File: Mathlib/Analysis/NormedSpace/OperatorNorm.lean

tactic: have hx : 0 < ‖x‖ := norm_pos_iff.mpr h
state_before: 𝕜 : Type u_2
𝕜₂ : Type ?u.3824025
𝕜₃ : Type ?u.3824028
E : Type u_1
Eₗ : Type ?u.3824034
F : Type ?u.3824037
Fₗ : Type ?u.3824040
G : Type ?u.3824043
Gₗ : Type ?u.3824046
𝓕 : Type ?u.3824049
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedAddCommGroup Fₗ
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NontriviallyNormedField 𝕜₂
inst✝⁵ : NontriviallyNormedField 𝕜₃
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedSpace 𝕜₂ F
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₁ : 𝕜₂ →+* 𝕜
inst✝² : RingHomInvPair σ₁₂ σ₂₁
inst✝¹ : RingHomInvPair σ₂₁ σ₁₂
inst✝ : RingHomIsometric σ₂₁
x : E
h : x ≠ 0
⊢ ‖coord 𝕜 x h‖ = ‖x‖⁻¹

tactic: haveI : Nontrivial (𝕜 ∙ x) := Submodule.nontrivial_span_singleton h
state_before: 𝕜 : Type u_2
𝕜₂ : Type ?u.3824025
𝕜₃ : Type ?u.3824028
E : Type u_1
Eₗ : Type ?u.3824034
F : Type ?u.3824037
Fₗ : Type ?u.3824040
G : Type ?u.3824043
Gₗ : Type ?u.3824046
𝓕 : Type ?u.3824049
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedAddCommGroup Fₗ
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NontriviallyNormedField 𝕜₂
inst✝⁵ : NontriviallyNormedField 𝕜₃
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedSpace 𝕜₂ F
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₁ : 𝕜₂ →+* 𝕜
inst✝² : RingHomInvPair σ₁₂ σ₂₁
inst✝¹ : RingHomInvPair σ₂₁ σ₁₂
inst✝ : RingHomIsometric σ₂₁
x : E
h : x ≠ 0
hx : 0 < ‖x‖
⊢ ‖coord 𝕜 x h‖ = ‖x‖⁻¹

tactic: exact ContinuousLinearMap.homothety_norm _ fun y =>
  homothety_inverse _ hx _ (toSpanNonzeroSingleton_homothety 𝕜 x h) _
state_before: 𝕜 : Type u_2
𝕜₂ : Type ?u.3824025
𝕜₃ : Type ?u.3824028
E : Type u_1
Eₗ : Type ?u.3824034
F : Type ?u.3824037
Fₗ : Type ?u.3824040
G : Type ?u.3824043
Gₗ : Type ?u.3824046
𝓕 : Type ?u.3824049
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedAddCommGroup Fₗ
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NontriviallyNormedField 𝕜₂
inst✝⁵ : NontriviallyNormedField 𝕜₃
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedSpace 𝕜₂ F
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₁ : 𝕜₂ →+* 𝕜
inst✝² : RingHomInvPair σ₁₂ σ₂₁
inst✝¹ : RingHomInvPair σ₂₁ σ₁₂
inst✝ : RingHomIsometric σ₂₁
x : E
h : x ≠ 0
hx : 0 < ‖x‖
this : Nontrivial { x_1 // x_1 ∈ Submodule.span 𝕜 {x} }
⊢ ‖coord 𝕜 x h‖ = ‖x‖⁻¹
Theorem: kstar_eq_one
File: Mathlib/Algebra/Order/Kleene.lean

tactic: rwa [one_mul]
state_before: α : Type u_1
β : Type ?u.43608
ι : Type ?u.43611
π : ι → Type ?u.43616
inst✝ : KleeneAlgebra α
a b c : α
h : a ≤ 1
⊢ 1 * a ≤ 1
Theorem: Metric.continuousWithinAt_iff'
File: Mathlib/Topology/MetricSpace/Basic.lean

tactic: rw [ContinuousWithinAt, tendsto_nhds]
state_before: α : Type u
β : Type v
X : Type ?u.128381
ι : Type ?u.128384
inst✝¹ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s✝ : Set α
inst✝ : TopologicalSpace β
f : β → α
b : β
s : Set β
⊢ ContinuousWithinAt f s b ↔ ∀ (ε : ℝ), ε > 0 → ∀ᶠ (x : β) in 𝓝[s] b, dist (f x) (f b) < ε