tasksource/leandojo huggingface dataset:
Theorem: DenseRange.topologicalClosure_map_subgroup
File: Mathlib/Topology/Algebra/Group/Basic.lean

tactic: rw [SetLike.ext'_iff] at hs⊢
state_before: α : Type u
β : Type v
G : Type w
H : Type x
inst✝⁶ : TopologicalSpace G
inst✝⁵ : Group G
inst✝⁴ : TopologicalGroup G
inst✝³ : TopologicalSpace α
f✝ : α → G
s✝ : Set α
x : α
inst✝² : Group H
inst✝¹ : TopologicalSpace H
inst✝ : TopologicalGroup H
f : G →* H
hf : Continuous ↑f
hf' : DenseRange ↑f
s : Subgroup G
hs : Subgroup.topologicalClosure s = ⊤
⊢ Subgroup.topologicalClosure (Subgroup.map f s) = ⊤

tactic: simp only [Subgroup.topologicalClosure_coe, Subgroup.coe_top, ← dense_iff_closure_eq] at hs⊢
state_before: α : Type u
β : Type v
G : Type w
H : Type x
inst✝⁶ : TopologicalSpace G
inst✝⁵ : Group G
inst✝⁴ : TopologicalGroup G
inst✝³ : TopologicalSpace α
f✝ : α → G
s✝ : Set α
x : α
inst✝² : Group H
inst✝¹ : TopologicalSpace H
inst✝ : TopologicalGroup H
f : G →* H
hf : Continuous ↑f
hf' : DenseRange ↑f
s : Subgroup G
hs✝ : Subgroup.topologicalClosure s = ⊤
hs : ↑(Subgroup.topologicalClosure s) = ↑⊤
⊢ ↑(Subgroup.topologicalClosure (Subgroup.map f s)) = ↑⊤

tactic: exact hf'.dense_image hf hs
state_before: α : Type u
β : Type v
G : Type w
H : Type x
inst✝⁶ : TopologicalSpace G
inst✝⁵ : Group G
inst✝⁴ : TopologicalGroup G
inst✝³ : TopologicalSpace α
f✝ : α → G
s✝ : Set α
x : α
inst✝² : Group H
inst✝¹ : TopologicalSpace H
inst✝ : TopologicalGroup H
f : G →* H
hf : Continuous ↑f
hf' : DenseRange ↑f
s : Subgroup G
hs✝ : Subgroup.topologicalClosure s = ⊤
hs : Dense ↑s
⊢ Dense ↑(Subgroup.map f s)
Theorem: Filter.tendsto_atTop'
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: simp only [tendsto_def, mem_atTop_sets]
state_before: ι : Type ?u.254167
ι' : Type ?u.254170
α : Type u_1
β : Type u_2
γ : Type ?u.254179
inst✝¹ : Nonempty α
inst✝ : SemilatticeSup α
f : α → β
l : Filter β
⊢ Tendsto f atTop l ↔ ∀ (s : Set β), s ∈ l → ∃ a, ∀ (b : α), b ≥ a → f b ∈ s

tactic: rfl
state_before: ι : Type ?u.254167
ι' : Type ?u.254170
α : Type u_1
β : Type u_2
γ : Type ?u.254179
inst✝¹ : Nonempty α
inst✝ : SemilatticeSup α
f : α → β
l : Filter β
⊢ (∀ (s : Set β), s ∈ l → ∃ a, ∀ (b : α), b ≥ a → b ∈ f ⁻¹' s) ↔ ∀ (s : Set β), s ∈ l → ∃ a, ∀ (b : α), b ≥ a → f b ∈ s
Theorem: Multiset.toFinsupp_apply
File: Mathlib/Data/Finsupp/Multiset.lean

tactic: exact Finsupp.toMultiset_symm_apply s a
state_before: α : Type u_1
β : Type ?u.59318
ι : Type ?u.59321
inst✝ : DecidableEq α
s : Multiset α
a : α
⊢ ↑(↑toFinsupp s) a = count a s
Theorem: Polynomial.degree_linear
File: Mathlib/Data/Polynomial/Degree/Definitions.lean

tactic: rw [degree_add_eq_left_of_degree_lt <| degree_C_lt_degree_C_mul_X ha, degree_C_mul_X ha]
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p q : R[X]
ι : Type ?u.832444
ha : a ≠ 0
⊢ degree (↑C a * X + ↑C b) = 1
Theorem: Zsqrtd.ext
File: Mathlib/NumberTheory/Zsqrtd/Basic.lean

tactic: injection h
state_before: d x y x' y' : ℤ
h : { re := x, im := y } = { re := x', im := y' }
⊢ { re := x, im := y }.re = { re := x', im := y' }.re ∧ { re := x, im := y }.im = { re := x', im := y' }.im

tactic: constructor <;> assumption
state_before: d x y x' y' : ℤ
re_eq✝ : x = x'
im_eq✝ : y = y'
⊢ { re := x, im := y }.re = { re := x', im := y' }.re ∧ { re := x, im := y }.im = { re := x', im := y' }.im

tactic: congr
state_before: d x y x' y' : ℤ
x✝ : { re := x, im := y }.re = { re := x', im := y' }.re ∧ { re := x, im := y }.im = { re := x', im := y' }.im
h₁ : { re := x, im := y }.re = { re := x', im := y' }.re
h₂ : { re := x, im := y }.im = { re := x', im := y' }.im
⊢ { re := x, im := y } = { re := x', im := y' }
Theorem: Mathlib.Tactic.Ring.sub_congr
File: Mathlib/Tactic/Ring/Basic.lean

tactic: subst_vars
state_before: u : Lean.Level
R✝ : Type ?u.398461
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝¹ : CommSemiring R✝
R : Type u_1
inst✝ : Ring R
a a' b b' c : R
x✝² : a = a'
x✝¹ : b = b'
x✝ : a' - b' = c
⊢ a - b = c

tactic: rfl
state_before: u : Lean.Level
R✝ : Type ?u.398461
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝¹ : CommSemiring R✝
R : Type u_1
inst✝ : Ring R
a' b' : R
⊢ a' - b' = a' - b'
Theorem: List.injective_permutations'Aux
File: Mathlib/Data/List/Perm.lean

tactic: intro s t h
state_before: α : Type uu
β : Type vv
l₁ l₂ : List α
x : α
⊢ Function.Injective (permutations'Aux x)

tactic: apply insertNth_injective s.length x
state_before: α : Type uu
β : Type vv
l₁ l₂ : List α
x : α
s t : List α
h : permutations'Aux x s = permutations'Aux x t
⊢ s = t

tactic: have hl : s.length = t.length := by simpa using congr_arg length h
state_before: case a
α : Type uu
β : Type vv
l₁ l₂ : List α
x : α
s t : List α
h : permutations'Aux x s = permutations'Aux x t
⊢ insertNth (length s) x s = insertNth (length s) x t

tactic: rw [← nthLe_permutations'Aux s x s.length (by simp), ←
  nthLe_permutations'Aux t x s.length (by simp [hl])]
state_before: case a
α : Type uu
β : Type vv
l₁ l₂ : List α
x : α
s t : List α
h : permutations'Aux x s = permutations'Aux x t
hl : length s = length t
⊢ insertNth (length s) x s = insertNth (length s) x t

tactic: simp [h, hl]
state_before: case a
α : Type uu
β : Type vv
l₁ l₂ : List α
x : α
s t : List α
h : permutations'Aux x s = permutations'Aux x t
hl : length s = length t
⊢ nthLe (permutations'Aux x s) (length s) (_ : length s < length (permutations'Aux x s)) =
    nthLe (permutations'Aux x t) (length s) (_ : length s < length (permutations'Aux x t))

tactic: simpa using congr_arg length h
state_before: α : Type uu
β : Type vv
l₁ l₂ : List α
x : α
s t : List α
h : permutations'Aux x s = permutations'Aux x t
⊢ length s = length t

tactic: simp
state_before: α : Type uu
β : Type vv
l₁ l₂ : List α
x : α
s t : List α
h : permutations'Aux x s = permutations'Aux x t
hl : length s = length t
⊢ length s < length (permutations'Aux x s)

tactic: simp [hl]
state_before: α : Type uu
β : Type vv
l₁ l₂ : List α
x : α
s t : List α
h : permutations'Aux x s = permutations'Aux x t
hl : length s = length t
⊢ length s < length (permutations'Aux x t)
Theorem: Filter.frequently_imp_distrib_left
File: Mathlib/Order/Filter/Basic.lean

tactic: simp
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.166652
ι : Sort x
f : Filter α
inst✝ : NeBot f
p : Prop
q : α → Prop
⊢ (∃ᶠ (x : α) in f, p → q x) ↔ p → ∃ᶠ (x : α) in f, q x
Theorem: Polynomial.natDegree_prod'
File: Mathlib/Algebra/Polynomial/BigOperators.lean

tactic: simpa using natDegree_multiset_prod' (s.1.map f) (by simpa using h)
state_before: R : Type u
ι : Type w
s : Finset ι
inst✝ : CommSemiring R
f : ι → R[X]
t : Multiset R[X]
h : ∏ i in s, leadingCoeff (f i) ≠ 0
⊢ natDegree (∏ i in s, f i) = ∑ i in s, natDegree (f i)

tactic: simpa using h
state_before: R : Type u
ι : Type w
s : Finset ι
inst✝ : CommSemiring R
f : ι → R[X]
t : Multiset R[X]
h : ∏ i in s, leadingCoeff (f i) ≠ 0
⊢ prod (Multiset.map (fun f => leadingCoeff f) (Multiset.map f s.val)) ≠ 0
Theorem: toIocDiv_sub_eq_toIocDiv_add
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: apply toIocDiv_eq_of_sub_zsmul_mem_Ioc
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c✝ : α
n : ℤ
a b c : α
⊢ toIocDiv hp a (b - c) = toIocDiv hp (a + c) b

tactic: rw [← sub_right_comm, Set.sub_mem_Ioc_iff_left, add_right_comm]
state_before: case h
α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c✝ : α
n : ℤ
a b c : α
⊢ b - c - toIocDiv hp (a + c) b • p ∈ Set.Ioc a (a + p)

tactic: exact sub_toIocDiv_zsmul_mem_Ioc hp (a + c) b
state_before: case h
α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c✝ : α
n : ℤ
a b c : α
⊢ b - toIocDiv hp (a + c) b • p ∈ Set.Ioc (a + c) (a + c + p)
Theorem: Algebra.FiniteType.of_finitePresentation
File: Mathlib/RingTheory/FinitePresentation.lean

tactic: rintro ⟨n, f, hf⟩
state_before: R : Type w₁
A : Type w₂
B : Type w₃
inst✝⁴ : CommRing R
inst✝³ : CommRing A
inst✝² : Algebra R A
inst✝¹ : CommRing B
inst✝ : Algebra R B
⊢ FinitePresentation R A → FiniteType R A

tactic: apply FiniteType.iff_quotient_mvPolynomial''.2
state_before: case intro.intro
R : Type w₁
A : Type w₂
B : Type w₃
inst✝⁴ : CommRing R
inst✝³ : CommRing A
inst✝² : Algebra R A
inst✝¹ : CommRing B
inst✝ : Algebra R B
n : ℕ
f : MvPolynomial (Fin n) R →ₐ[R] A
hf : Surjective ↑f ∧ Ideal.FG (RingHom.ker ↑f)
⊢ FiniteType R A

tactic: exact ⟨n, f, hf.1⟩
state_before: case intro.intro
R : Type w₁
A : Type w₂
B : Type w₃
inst✝⁴ : CommRing R
inst✝³ : CommRing A
inst✝² : Algebra R A
inst✝¹ : CommRing B
inst✝ : Algebra R B
n : ℕ
f : MvPolynomial (Fin n) R →ₐ[R] A
hf : Surjective ↑f ∧ Ideal.FG (RingHom.ker ↑f)
⊢ ∃ n f, Surjective ↑f
Theorem: ZMod.χ₈_int_mod_eight
File: Mathlib/NumberTheory/LegendreSymbol/ZModChar.lean

tactic: rw [← ZMod.int_cast_mod n 8]
state_before: n : ℤ
⊢ ↑χ₈ ↑n = ↑χ₈ ↑(n % 8)

tactic: norm_cast
state_before: n : ℤ
⊢ ↑χ₈ ↑(n % ↑8) = ↑χ₈ ↑(n % 8)
Theorem: IntermediateField.coe_bot
File: Mathlib/FieldTheory/Adjoin.lean

tactic: change ↑(Subfield.closure (Set.range (algebraMap F E) ∪ ∅)) = Set.range (algebraMap F E)
state_before: F : Type u_2
inst✝² : Field F
E : Type u_1
inst✝¹ : Field E
inst✝ : Algebra F E
⊢ ↑⊥ = Set.range ↑(algebraMap F E)

tactic: rw [Set.union_empty, ← Set.image_univ, ← RingHom.map_field_closure]
state_before: F : Type u_2
inst✝² : Field F
E : Type u_1
inst✝¹ : Field E
inst✝ : Algebra F E
⊢ ↑(Subfield.closure (Set.range ↑(algebraMap F E) ∪ ∅)) = Set.range ↑(algebraMap F E)

tactic: simp
state_before: F : Type u_2
inst✝² : Field F
E : Type u_1
inst✝¹ : Field E
inst✝ : Algebra F E
⊢ ↑(Subfield.map (algebraMap F E) (Subfield.closure Set.univ)) = ↑(algebraMap F E) '' Set.univ
Theorem: iteratedDeriv_eq_equiv_comp
File: Mathlib/Analysis/Calculus/IteratedDeriv.lean

tactic: ext x
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type ?u.90629
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
n : ℕ
f : 𝕜 → F
s : Set 𝕜
x : 𝕜
⊢ iteratedDeriv n f =
    ↑(LinearIsometryEquiv.symm (ContinuousMultilinearMap.piFieldEquiv 𝕜 (Fin n) F)) ∘ iteratedFDeriv 𝕜 n f

tactic: rfl
state_before: case h
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type ?u.90629
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
n : ℕ
f : 𝕜 → F
s : Set 𝕜
x✝ x : 𝕜
⊢ iteratedDeriv n f x =
    (↑(LinearIsometryEquiv.symm (ContinuousMultilinearMap.piFieldEquiv 𝕜 (Fin n) F)) ∘ iteratedFDeriv 𝕜 n f) x
Theorem: Multiset.map_replicate
File: Mathlib/Data/Multiset/Basic.lean

tactic: simp only [← coe_replicate, coe_map, List.map_replicate]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.114762
f : α → β
k : ℕ
a : α
⊢ map f (replicate k a) = replicate k (f a)
Theorem: Nat.log_pos_iff
File: Mathlib/Data/Nat/Log.lean

tactic: rw [pos_iff_ne_zero, Ne.def, log_eq_zero_iff, not_or, not_lt, not_le]
state_before: b n : ℕ
⊢ 0 < log b n ↔ b ≤ n ∧ 1 < b
Theorem: LipschitzWith.prod_mk_right
File: Mathlib/Topology/MetricSpace/Lipschitz.lean

tactic: simpa only [max_eq_left zero_le_one] using LipschitzWith.id.prod (LipschitzWith.const b)
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
K : ℝ≥0
f : α → β
x y : α
r : ℝ≥0∞
b : β
⊢ LipschitzWith 1 fun a => (a, b)
Theorem: List.toFinsupp_singleton
File: Mathlib/Data/List/ToFinsupp.lean

tactic: ext ⟨_ | i⟩ <;> simp [Finsupp.single_apply, (Nat.zero_lt_succ _).ne]
state_before: M : Type u_1
inst✝² : Zero M
l : List M
inst✝¹ : DecidablePred fun x => getD l x 0 ≠ 0
n : ℕ
x : M
inst✝ : DecidablePred fun x_1 => getD [x] x_1 0 ≠ 0
⊢ toFinsupp [x] = Finsupp.single 0 x
Theorem: LinearIsometry.norm_toContinuousLinearMap_le
File: Mathlib/Analysis/NormedSpace/OperatorNorm.lean

tactic: simp
state_before: 𝕜 : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type ?u.973181
E : Type u_3
Eₗ : Type ?u.973187
F : Type u_4
Fₗ : Type ?u.973193
G : Type ?u.973196
Gₗ : Type ?u.973199
𝓕 : Type ?u.973202
inst✝¹⁵ : SeminormedAddCommGroup E
inst✝¹⁴ : SeminormedAddCommGroup Eₗ
inst✝¹³ : SeminormedAddCommGroup F
inst✝¹² : SeminormedAddCommGroup Fₗ
inst✝¹¹ : SeminormedAddCommGroup G
inst✝¹⁰ : SeminormedAddCommGroup Gₗ
inst✝⁹ : NontriviallyNormedField 𝕜
inst✝⁸ : NontriviallyNormedField 𝕜₂
inst✝⁷ : NontriviallyNormedField 𝕜₃
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : NormedSpace 𝕜 Eₗ
inst✝⁴ : NormedSpace 𝕜₂ F
inst✝³ : NormedSpace 𝕜 Fₗ
inst✝² : NormedSpace 𝕜₃ G
inst✝¹ : NormedSpace 𝕜 Gₗ
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₃ : 𝕜₂ →+* 𝕜₃
σ₁₃ : 𝕜 →+* 𝕜₃
inst✝ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
f : E →ₛₗᵢ[σ₁₂] F
x : E
⊢ ‖↑(toContinuousLinearMap f) x‖ ≤ 1 * ‖x‖
Theorem: sign_zero
File: Mathlib/Data/Sign.lean

tactic: simp [sign_apply]
state_before: α : Type u_1
inst✝² : Zero α
inst✝¹ : Preorder α
inst✝ : DecidableRel fun x x_1 => x < x_1
a : α
⊢ ↑sign 0 = 0
Theorem: uniformInducing_of_compose
File: Mathlib/Topology/UniformSpace/UniformEmbedding.lean

tactic: refine' ⟨le_antisymm _ hf.le_comap⟩
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
f : α → β
g : β → γ
hf : UniformContinuous f
hg : UniformContinuous g
hgf : UniformInducing (g ∘ f)
⊢ UniformInducing f

tactic: rw [← hgf.1, ← Prod.map_def, ← Prod.map_def, ← Prod.map_comp_map f f g g, ← comap_comap]
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
f : α → β
g : β → γ
hf : UniformContinuous f
hg : UniformContinuous g
hgf : UniformInducing (g ∘ f)
⊢ comap (fun x => (f x.fst, f x.snd)) (𝓤 β) ≤ 𝓤 α

tactic: exact comap_mono hg.le_comap
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
f : α → β
g : β → γ
hf : UniformContinuous f
hg : UniformContinuous g
hgf : UniformInducing (g ∘ f)
⊢ comap (Prod.map f f) (𝓤 β) ≤ comap (Prod.map f f) (comap (Prod.map g g) (𝓤 γ))
Theorem: Trivialization.symm_coordChangeL
File: Mathlib/Topology/VectorBundle/Basic.lean

tactic: apply ContinuousLinearEquiv.toLinearEquiv_injective
state_before: R : Type u_4
B : Type u_1
F : Type u_2
E : B → Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : TopologicalSpace F
inst✝⁷ : TopologicalSpace B
inst✝⁶ : TopologicalSpace (TotalSpace E)
e✝ : Trivialization F TotalSpace.proj
x : TotalSpace E
b✝ : B
y : E b✝
inst✝⁵ : AddCommMonoid F
inst✝⁴ : Module R F
inst✝³ : (x : B) → AddCommMonoid (E x)
inst✝² : (x : B) → Module R (E x)
e e' : Trivialization F TotalSpace.proj
inst✝¹ : Trivialization.IsLinear R e
inst✝ : Trivialization.IsLinear R e'
b : B
hb : b ∈ e'.baseSet ∩ e.baseSet
⊢ ContinuousLinearEquiv.symm (coordChangeL R e e' b) = coordChangeL R e' e b

tactic: rw [coe_coordChangeL' e' e hb, (coordChangeL R e e' b).symm_toLinearEquiv,
  coe_coordChangeL' e e' hb.symm, LinearEquiv.trans_symm, LinearEquiv.symm_symm]
state_before: case a
R : Type u_4
B : Type u_1
F : Type u_2
E : B → Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : TopologicalSpace F
inst✝⁷ : TopologicalSpace B
inst✝⁶ : TopologicalSpace (TotalSpace E)
e✝ : Trivialization F TotalSpace.proj
x : TotalSpace E
b✝ : B
y : E b✝
inst✝⁵ : AddCommMonoid F
inst✝⁴ : Module R F
inst✝³ : (x : B) → AddCommMonoid (E x)
inst✝² : (x : B) → Module R (E x)
e e' : Trivialization F TotalSpace.proj
inst✝¹ : Trivialization.IsLinear R e
inst✝ : Trivialization.IsLinear R e'
b : B
hb : b ∈ e'.baseSet ∩ e.baseSet
⊢ (ContinuousLinearEquiv.symm (coordChangeL R e e' b)).toLinearEquiv = (coordChangeL R e' e b).toLinearEquiv
Theorem: Polynomial.coe_C
File: Mathlib/RingTheory/PowerSeries/Basic.lean

tactic: have := coe_monomial 0 a
state_before: σ : Type ?u.4313394
R : Type u_1
inst✝ : CommSemiring R
φ ψ : R[X]
a : R
⊢ ↑(↑C a) = ↑(PowerSeries.C R) a

tactic: rwa [PowerSeries.monomial_zero_eq_C_apply] at this
state_before: σ : Type ?u.4313394
R : Type u_1
inst✝ : CommSemiring R
φ ψ : R[X]
a : R
this : ↑(↑(monomial 0) a) = ↑(PowerSeries.monomial R 0) a
⊢ ↑(↑C a) = ↑(PowerSeries.C R) a
Theorem: Int.le_add_of_sub_right_le
File: Std/Data/Int/Lemmas.lean

tactic: have h := Int.add_le_add_right h c
state_before: a b c : Int
h : a - c ≤ b
⊢ a ≤ b + c

tactic: rwa [Int.sub_add_cancel] at h
state_before: a b c : Int
h✝ : a - c ≤ b
h : a - c + c ≤ b + c
⊢ a ≤ b + c
Theorem: Metric.emetric_closedBall
File: Mathlib/Topology/MetricSpace/Basic.lean

tactic: ext y
state_before: α : Type u
β : Type v
X : Type ?u.164899
ι : Type ?u.164902
inst✝ : PseudoMetricSpace α
x : α
ε : ℝ
h : 0 ≤ ε
⊢ EMetric.closedBall x (ENNReal.ofReal ε) = closedBall x ε

tactic: simp [edist_le_ofReal h]
state_before: case h
α : Type u
β : Type v
X : Type ?u.164899
ι : Type ?u.164902
inst✝ : PseudoMetricSpace α
x : α
ε : ℝ
h : 0 ≤ ε
y : α
⊢ y ∈ EMetric.closedBall x (ENNReal.ofReal ε) ↔ y ∈ closedBall x ε
Theorem: Group.covariant_swap_iff_contravariant_swap
File: Mathlib/Algebra/CovariantAndContravariant.lean

tactic: refine ⟨fun h a b c bc ↦ ?_, fun h a b c bc ↦ ?_⟩
state_before: M : Type ?u.1645
N : Type u_1
μ : M → N → N
r : N → N → Prop
inst✝¹ : CovariantClass M N μ r
inst✝ : Group N
⊢ Covariant N N (swap fun x x_1 => x * x_1) r ↔ Contravariant N N (swap fun x x_1 => x * x_1) r

tactic: rw [← mul_inv_cancel_right b a, ← mul_inv_cancel_right c a]
state_before: case refine_1
M : Type ?u.1645
N : Type u_1
μ : M → N → N
r : N → N → Prop
inst✝¹ : CovariantClass M N μ r
inst✝ : Group N
h : Covariant N N (swap fun x x_1 => x * x_1) r
a b c : N
bc : r (swap (fun x x_1 => x * x_1) a b) (swap (fun x x_1 => x * x_1) a c)
⊢ r b c

tactic: exact h a⁻¹ bc
state_before: case refine_1
M : Type ?u.1645
N : Type u_1
μ : M → N → N
r : N → N → Prop
inst✝¹ : CovariantClass M N μ r
inst✝ : Group N
h : Covariant N N (swap fun x x_1 => x * x_1) r
a b c : N
bc : r (swap (fun x x_1 => x * x_1) a b) (swap (fun x x_1 => x * x_1) a c)
⊢ r (b * a * a⁻¹) (c * a * a⁻¹)

tactic: rw [← mul_inv_cancel_right b a, ← mul_inv_cancel_right c a] at bc
state_before: case refine_2
M : Type ?u.1645
N : Type u_1
μ : M → N → N
r : N → N → Prop
inst✝¹ : CovariantClass M N μ r
inst✝ : Group N
h : Contravariant N N (swap fun x x_1 => x * x_1) r
a b c : N
bc : r b c
⊢ r (swap (fun x x_1 => x * x_1) a b) (swap (fun x x_1 => x * x_1) a c)

tactic: exact h a⁻¹ bc
state_before: case refine_2
M : Type ?u.1645
N : Type u_1
μ : M → N → N
r : N → N → Prop
inst✝¹ : CovariantClass M N μ r
inst✝ : Group N
h : Contravariant N N (swap fun x x_1 => x * x_1) r
a b c : N
bc : r (b * a * a⁻¹) (c * a * a⁻¹)
⊢ r (swap (fun x x_1 => x * x_1) a b) (swap (fun x x_1 => x * x_1) a c)
Theorem: Function.Semiconj₂.isAssociative_right
File: Mathlib/Logic/Function/Conjugate.lean

tactic: simp only [← h.eq, @IsAssociative.assoc _ ga]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.3206
f : α → β
ga : α → α → α
gb : β → β → β
inst✝ : IsAssociative α ga
h : Semiconj₂ f ga gb
h_surj : Surjective f
x₁ x₂ x₃ : α
⊢ gb (gb (f x₁) (f x₂)) (f x₃) = gb (f x₁) (gb (f x₂) (f x₃))
Theorem: sup_eq_iff_inf_eq
File: Mathlib/Order/Lattice.lean

tactic: rw [sup_eq_right, ← inf_eq_left]
state_before: α : Type u
β : Type v
inst✝ : Lattice α
a b c d : α
⊢ a ⊔ b = b ↔ a ⊓ b = a
Theorem: Equiv.Perm.swap_mul_swap_same_mem_closure_three_cycles
File: Mathlib/GroupTheory/Perm/Cycle/Type.lean

tactic: by_cases bc : b = c
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
a b c : α
ab : a ≠ b
ac : a ≠ c
⊢ swap a b * swap a c ∈ closure {σ | IsThreeCycle σ}

tactic: exact subset_closure (isThreeCycle_swap_mul_swap_same ab ac bc)
state_before: case neg
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
a b c : α
ab : a ≠ b
ac : a ≠ c
bc : ¬b = c
⊢ swap a b * swap a c ∈ closure {σ | IsThreeCycle σ}

tactic: subst bc
state_before: case pos
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
a b c : α
ab : a ≠ b
ac : a ≠ c
bc : b = c
⊢ swap a b * swap a c ∈ closure {σ | IsThreeCycle σ}

tactic: simp [one_mem]
state_before: case pos
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
a b : α
ab ac : a ≠ b
⊢ swap a b * swap a b ∈ closure {σ | IsThreeCycle σ}
Theorem: TensorAlgebra.ι_eq_algebraMap_iff
File: Mathlib/LinearAlgebra/TensorAlgebra/Basic.lean

tactic: refine' ⟨fun h => _, _⟩
state_before: R : Type u_1
inst✝² : CommSemiring R
M : Type u_2
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
x : M
r : R
⊢ ↑(ι R) x = ↑(algebraMap R (TensorAlgebra R M)) r ↔ x = 0 ∧ r = 0

tactic: letI : Module Rᵐᵒᵖ M := Module.compHom _ ((RingHom.id R).fromOpposite mul_comm)
state_before: case refine'_1
R : Type u_1
inst✝² : CommSemiring R
M : Type u_2
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
x : M
r : R
h : ↑(ι R) x = ↑(algebraMap R (TensorAlgebra R M)) r
⊢ x = 0 ∧ r = 0

tactic: haveI : IsCentralScalar R M := ⟨fun r m => rfl⟩
state_before: case refine'_1
R : Type u_1
inst✝² : CommSemiring R
M : Type u_2
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
x : M
r : R
h : ↑(ι R) x = ↑(algebraMap R (TensorAlgebra R M)) r
this : Module Rᵐᵒᵖ M := Module.compHom M (RingHom.fromOpposite (RingHom.id R) (_ : ∀ (a b : R), a * b = b * a))
⊢ x = 0 ∧ r = 0

tactic: have hf0 : toTrivSqZeroExt (ι R x) = (0, x) := lift_ι_apply _ _
state_before: case refine'_1
R : Type u_1
inst✝² : CommSemiring R
M : Type u_2
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
x : M
r : R
h : ↑(ι R) x = ↑(algebraMap R (TensorAlgebra R M)) r
this✝ : Module Rᵐᵒᵖ M := Module.compHom M (RingHom.fromOpposite (RingHom.id R) (_ : ∀ (a b : R), a * b = b * a))
this : IsCentralScalar R M
⊢ x = 0 ∧ r = 0

tactic: rw [h, AlgHom.commutes] at hf0
state_before: case refine'_1
R : Type u_1
inst✝² : CommSemiring R
M : Type u_2
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
x : M
r : R
h : ↑(ι R) x = ↑(algebraMap R (TensorAlgebra R M)) r
this✝ : Module Rᵐᵒᵖ M := Module.compHom M (RingHom.fromOpposite (RingHom.id R) (_ : ∀ (a b : R), a * b = b * a))
this : IsCentralScalar R M
hf0 : ↑toTrivSqZeroExt (↑(ι R) x) = (0, x)
⊢ x = 0 ∧ r = 0

tactic: have : r = 0 ∧ 0 = x := Prod.ext_iff.1 hf0
state_before: case refine'_1
R : Type u_1
inst✝² : CommSemiring R
M : Type u_2
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
x : M
r : R
h : ↑(ι R) x = ↑(algebraMap R (TensorAlgebra R M)) r
this✝ : Module Rᵐᵒᵖ M := Module.compHom M (RingHom.fromOpposite (RingHom.id R) (_ : ∀ (a b : R), a * b = b * a))
this : IsCentralScalar R M
hf0 : ↑(algebraMap R (TrivSqZeroExt R M)) r = (0, x)
⊢ x = 0 ∧ r = 0

tactic: exact this.symm.imp_left Eq.symm
state_before: case refine'_1
R : Type u_1
inst✝² : CommSemiring R
M : Type u_2
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
x : M
r : R
h : ↑(ι R) x = ↑(algebraMap R (TensorAlgebra R M)) r
this✝¹ : Module Rᵐᵒᵖ M := Module.compHom M (RingHom.fromOpposite (RingHom.id R) (_ : ∀ (a b : R), a * b = b * a))
this✝ : IsCentralScalar R M
hf0 : ↑(algebraMap R (TrivSqZeroExt R M)) r = (0, x)
this : r = 0 ∧ 0 = x
⊢ x = 0 ∧ r = 0

tactic: rintro ⟨rfl, rfl⟩
state_before: case refine'_2
R : Type u_1
inst✝² : CommSemiring R
M : Type u_2
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
x : M
r : R
⊢ x = 0 ∧ r = 0 → ↑(ι R) x = ↑(algebraMap R (TensorAlgebra R M)) r

tactic: rw [LinearMap.map_zero, RingHom.map_zero]
state_before: case refine'_2.intro
R : Type u_1
inst✝² : CommSemiring R
M : Type u_2
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
⊢ ↑(ι R) 0 = ↑(algebraMap R (TensorAlgebra R M)) 0