1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: FiberBundle.chartedSpace_chartAt
File: Mathlib/Geometry/Manifold/VectorBundle/Basic.lean

tactic: dsimp only [chartAt_comp, prodChartedSpace_chartAt, FiberBundle.chartedSpace'_chartAt,
  chartAt_self_eq]
state_before: 𝕜 : Type u_1
B : Type u_2
B' : Type u_3
F : Type u_4
M : Type u_5
E : B → Type u_6
inst✝⁶ : TopologicalSpace F
inst✝⁵ : TopologicalSpace (TotalSpace F E)
inst✝⁴ : (x : B) → TopologicalSpace (E x)
HB : Type u_7
inst✝³ : TopologicalSpace HB
inst✝² : TopologicalSpace B
inst✝¹ : ChartedSpace HB B
inst✝ : FiberBundle F E
x : TotalSpace F E
⊢ chartAt (ModelProd HB F) x =
    (trivializationAt F E x.proj).toPartialHomeomorph ≫ₕ (chartAt HB x.proj).prod (PartialHomeomorph.refl F)
state_after: 𝕜 : Type u_1
B : Type u_2
B' : Type u_3
F : Type u_4
M : Type u_5
E : B → Type u_6
inst✝⁶ : TopologicalSpace F
inst✝⁵ : TopologicalSpace (TotalSpace F E)
inst✝⁴ : (x : B) → TopologicalSpace (E x)
HB : Type u_7
inst✝³ : TopologicalSpace HB
inst✝² : TopologicalSpace B
inst✝¹ : ChartedSpace HB B
inst✝ : FiberBundle F E
x : TotalSpace F E
⊢ (trivializationAt F E x.proj).toPartialHomeomorph ≫ₕ
      (chartAt HB (↑(trivializationAt F E x.proj).toPartialHomeomorph x).1).prod (PartialHomeomorph.refl F) =
    (trivializationAt F E x.proj).toPartialHomeomorph ≫ₕ (chartAt HB x.proj).prod (PartialHomeomorph.refl F)

tactic: rw [Trivialization.coe_coe, Trivialization.coe_fst' _ (mem_baseSet_trivializationAt F E x.proj)]
state_before: 𝕜 : Type u_1
B : Type u_2
B' : Type u_3
F : Type u_4
M : Type u_5
E : B → Type u_6
inst✝⁶ : TopologicalSpace F
inst✝⁵ : TopologicalSpace (TotalSpace F E)
inst✝⁴ : (x : B) → TopologicalSpace (E x)
HB : Type u_7
inst✝³ : TopologicalSpace HB
inst✝² : TopologicalSpace B
inst✝¹ : ChartedSpace HB B
inst✝ : FiberBundle F E
x : TotalSpace F E
⊢ (trivializationAt F E x.proj).toPartialHomeomorph ≫ₕ
      (chartAt HB (↑(trivializationAt F E x.proj).toPartialHomeomorph x).1).prod (PartialHomeomorph.refl F) =
    (trivializationAt F E x.proj).toPartialHomeomorph ≫ₕ (chartAt HB x.proj).prod (PartialHomeomorph.refl F)
state_after: no goals
Theorem: AlgebraicGeometry.Scheme.Pullback.pullbackP1Iso_hom_fst
File: Mathlib/AlgebraicGeometry/Pullbacks.lean

tactic: simp_rw [pullbackP1Iso, pullback.lift_fst]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : Scheme
𝒰 : X.OpenCover
f : X ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (i : 𝒰.J), HasPullback (𝒰.map i ≫ f) g
s : PullbackCone f g
i : 𝒰.J
⊢ (pullbackP1Iso 𝒰 f g i).hom ≫ pullback.fst = pullback.snd
state_after: no goals
Theorem: FormalMultilinearSeries.apply_eq_prod_smul_coeff
File: Mathlib/Analysis/Calculus/FormalMultilinearSeries.lean

tactic: convert (p n).toMultilinearMap.map_smul_univ y 1
state_before: 𝕜 : Type u
𝕜' : Type u'
E : Type v
F : Type w
G : Type x
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : E
p : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
n : ℕ
z z₀ : 𝕜
y : Fin n → 𝕜
⊢ (p n) y = (∏ i : Fin n, y i) • p.coeff n
state_after: case h.e'_2.h.e'_1.h
𝕜 : Type u
𝕜' : Type u'
E : Type v
F : Type w
G : Type x
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : E
p : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
n : ℕ
z z₀ : 𝕜
y : Fin n → 𝕜
x✝ : Fin n
⊢ y x✝ = y x✝ • 1 x✝

tactic: simp only [Pi.one_apply, Algebra.id.smul_eq_mul, mul_one]
state_before: case h.e'_2.h.e'_1.h
𝕜 : Type u
𝕜' : Type u'
E : Type v
F : Type w
G : Type x
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : E
p : FormalMultilinearSeries 𝕜 𝕜 E
f : 𝕜 → E
n : ℕ
z z₀ : 𝕜
y : Fin n → 𝕜
x✝ : Fin n
⊢ y x✝ = y x✝ • 1 x✝
state_after: no goals
Theorem: CochainComplex.HomComplex.Cochain.leftShift_zero
File: Mathlib/Algebra/Homology/HomotopyCategory/HomComplexShift.lean

tactic: change leftShiftAddEquiv K L n a n' hn' 0 = 0
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n : ℤ
γ γ₁ γ₂ : Cochain K L n
a n' : ℤ
hn' : n + a = n'
⊢ leftShift 0 a n' hn' = 0
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n : ℤ
γ γ₁ γ₂ : Cochain K L n
a n' : ℤ
hn' : n + a = n'
⊢ (leftShiftAddEquiv K L n a n' hn') 0 = 0

tactic: apply _root_.map_zero
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n : ℤ
γ γ₁ γ₂ : Cochain K L n
a n' : ℤ
hn' : n + a = n'
⊢ (leftShiftAddEquiv K L n a n' hn') 0 = 0
state_after: no goals
Theorem: SimplexCategory.δ_comp_δ_self'
File: Mathlib/AlgebraicTopology/SimplexCategory.lean

tactic: subst H
state_before: n : ℕ
i : Fin (n + 2)
j : Fin (n + 3)
H : j = i.castSucc
⊢ δ i ≫ δ j = δ i ≫ δ i.succ
state_after: n : ℕ
i : Fin (n + 2)
⊢ δ i ≫ δ i.castSucc = δ i ≫ δ i.succ

tactic: rw [δ_comp_δ_self]
state_before: n : ℕ
i : Fin (n + 2)
⊢ δ i ≫ δ i.castSucc = δ i ≫ δ i.succ
state_after: no goals
Theorem: CategoryTheory.ConcreteCategory.surjective_eq_epimorphisms
File: Mathlib/CategoryTheory/ConcreteCategory/EpiMono.lean

tactic: rw [surjective_eq_epimorphisms_iff]
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : ConcreteCategory C
inst✝ : (forget C).PreservesEpimorphisms
⊢ MorphismProperty.surjective C = epimorphisms C
state_after: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : ConcreteCategory C
inst✝ : (forget C).PreservesEpimorphisms
⊢ (forget C).PreservesEpimorphisms

tactic: infer_instance
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : ConcreteCategory C
inst✝ : (forget C).PreservesEpimorphisms
⊢ (forget C).PreservesEpimorphisms
state_after: no goals
Theorem: HasFTaylorSeriesUpTo.hasFDerivAt
File: Mathlib/Analysis/Calculus/ContDiff/Defs.lean

tactic: rw [← hasFDerivWithinAt_univ]
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type uX
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
h : HasFTaylorSeriesUpTo n f p
hn : 1 ≤ n
x : E
⊢ HasFDerivAt f ((continuousMultilinearCurryFin1 𝕜 E F) (p x 1)) x
state_after: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type uX
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
h : HasFTaylorSeriesUpTo n f p
hn : 1 ≤ n
x : E
⊢ HasFDerivWithinAt f ((continuousMultilinearCurryFin1 𝕜 E F) (p x 1)) univ x

tactic: exact (hasFTaylorSeriesUpToOn_univ_iff.2 h).hasFDerivWithinAt hn (mem_univ _)
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type uX
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
h : HasFTaylorSeriesUpTo n f p
hn : 1 ≤ n
x : E
⊢ HasFDerivWithinAt f ((continuousMultilinearCurryFin1 𝕜 E F) (p x 1)) univ x
state_after: no goals
Theorem: Complex.isTheta_cpow_const_rpow
File: Mathlib/Analysis/SpecialFunctions/Pow/Asymptotics.lean

tactic: convert hl
state_before: α : Type u_1
l : Filter α
f g : α → ℂ
b : ℂ
hl : b.re = 0 → b ≠ 0 → ∀ᶠ (x : α) in l, f x ≠ 0
⊢ ∀ᶠ (x : α) in l, f x = 0 → b.re = 0 → b = 0
state_after: case a
α : Type u_1
l : Filter α
f g : α → ℂ
b : ℂ
hl : b.re = 0 → b ≠ 0 → ∀ᶠ (x : α) in l, f x ≠ 0
⊢ (∀ᶠ (x : α) in l, f x = 0 → b.re = 0 → b = 0) ↔ b.re = 0 → b ≠ 0 → ∀ᶠ (x : α) in l, f x ≠ 0

tactic: rw [eventually_imp_distrib_right]
state_before: case a
α : Type u_1
l : Filter α
f g : α → ℂ
b : ℂ
hl : b.re = 0 → b ≠ 0 → ∀ᶠ (x : α) in l, f x ≠ 0
⊢ (∀ᶠ (x : α) in l, f x = 0 → b.re = 0 → b = 0) ↔ b.re = 0 → b ≠ 0 → ∀ᶠ (x : α) in l, f x ≠ 0
state_after: case a
α : Type u_1
l : Filter α
f g : α → ℂ
b : ℂ
hl : b.re = 0 → b ≠ 0 → ∀ᶠ (x : α) in l, f x ≠ 0
⊢ (∃ᶠ (x : α) in l, f x = 0) → b.re = 0 → b = 0 ↔ b.re = 0 → b ≠ 0 → ∀ᶠ (x : α) in l, f x ≠ 0

tactic: tauto
state_before: case a
α : Type u_1
l : Filter α
f g : α → ℂ
b : ℂ
hl : b.re = 0 → b ≠ 0 → ∀ᶠ (x : α) in l, f x ≠ 0
⊢ (∃ᶠ (x : α) in l, f x = 0) → b.re = 0 → b = 0 ↔ b.re = 0 → b ≠ 0 → ∀ᶠ (x : α) in l, f x ≠ 0
state_after: no goals
Theorem: MonoidHom.FixedPointFree.odd_card_of_involutive
File: Mathlib/GroupTheory/FixedPointFree.lean

tactic: have := Fintype.ofFinite G
state_before: G : Type u_1
inst✝¹ : Group G
φ : G →* G
hφ : FixedPointFree ⇑φ
inst✝ : Finite G
h2 : Function.Involutive ⇑φ
⊢ Odd (Nat.card G)
state_after: G : Type u_1
inst✝¹ : Group G
φ : G →* G
hφ : FixedPointFree ⇑φ
inst✝ : Finite G
h2 : Function.Involutive ⇑φ
this : Fintype G
⊢ Odd (Nat.card G)

tactic: by_contra h
state_before: G : Type u_1
inst✝¹ : Group G
φ : G →* G
hφ : FixedPointFree ⇑φ
inst✝ : Finite G
h2 : Function.Involutive ⇑φ
this : Fintype G
⊢ Odd (Nat.card G)
state_after: G : Type u_1
inst✝¹ : Group G
φ : G →* G
hφ : FixedPointFree ⇑φ
inst✝ : Finite G
h2 : Function.Involutive ⇑φ
this : Fintype G
h : ¬Odd (Nat.card G)
⊢ False

tactic: rw [← Nat.even_iff_not_odd, even_iff_two_dvd, Nat.card_eq_fintype_card] at h
state_before: G : Type u_1
inst✝¹ : Group G
φ : G →* G
hφ : FixedPointFree ⇑φ
inst✝ : Finite G
h2 : Function.Involutive ⇑φ
this : Fintype G
h : ¬Odd (Nat.card G)
⊢ False
state_after: G : Type u_1
inst✝¹ : Group G
φ : G →* G
hφ : FixedPointFree ⇑φ
inst✝ : Finite G
h2 : Function.Involutive ⇑φ
this : Fintype G
h : 2 ∣ Fintype.card G
⊢ False

tactic: obtain ⟨g, hg⟩ := exists_prime_orderOf_dvd_card 2 h
state_before: G : Type u_1
inst✝¹ : Group G
φ : G →* G
hφ : FixedPointFree ⇑φ
inst✝ : Finite G
h2 : Function.Involutive ⇑φ
this : Fintype G
h : 2 ∣ Fintype.card G
⊢ False
state_after: case intro
G : Type u_1
inst✝¹ : Group G
φ : G →* G
hφ : FixedPointFree ⇑φ
inst✝ : Finite G
h2 : Function.Involutive ⇑φ
this : Fintype G
h : 2 ∣ Fintype.card G
g : G
hg : orderOf g = 2
⊢ False

tactic: exact hφ.orderOf_ne_two_of_involutive h2 g hg
state_before: case intro
G : Type u_1
inst✝¹ : Group G
φ : G →* G
hφ : FixedPointFree ⇑φ
inst✝ : Finite G
h2 : Function.Involutive ⇑φ
this : Fintype G
h : 2 ∣ Fintype.card G
g : G
hg : orderOf g = 2
⊢ False
state_after: no goals
Theorem: IsCompact.locallyCompactSpace_of_mem_nhds_of_group
File: Mathlib/Topology/Algebra/Group/Basic.lean

tactic: suffices WeaklyLocallyCompactSpace G from inferInstance
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
x : G
h : K ∈ 𝓝 x
⊢ LocallyCompactSpace G
state_after: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
x : G
h : K ∈ 𝓝 x
⊢ WeaklyLocallyCompactSpace G

tactic: refine ⟨fun y ↦ ⟨(y * x⁻¹) • K, ?_, ?_⟩⟩
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
x : G
h : K ∈ 𝓝 x
⊢ WeaklyLocallyCompactSpace G
state_after: case refine_1
G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
x : G
h : K ∈ 𝓝 x
y : G
⊢ IsCompact ((y * x⁻¹) • K)

case refine_2
G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
x : G
h : K ∈ 𝓝 x
y : G
⊢ (y * x⁻¹) • K ∈ 𝓝 y

tactic: exact hK.smul _
state_before: case refine_1
G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
x : G
h : K ∈ 𝓝 x
y : G
⊢ IsCompact ((y * x⁻¹) • K)
state_after: no goals

tactic: rw [← preimage_smul_inv]
state_before: case refine_2
G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
x : G
h : K ∈ 𝓝 x
y : G
⊢ (y * x⁻¹) • K ∈ 𝓝 y
state_after: case refine_2
G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
x : G
h : K ∈ 𝓝 x
y : G
⊢ (fun x_1 => (y * x⁻¹)⁻¹ • x_1) ⁻¹' K ∈ 𝓝 y

tactic: exact (continuous_const_smul _).continuousAt.preimage_mem_nhds (by simpa using h)
state_before: case refine_2
G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
x : G
h : K ∈ 𝓝 x
y : G
⊢ (fun x_1 => (y * x⁻¹)⁻¹ • x_1) ⁻¹' K ∈ 𝓝 y
state_after: no goals

tactic: simpa using h
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
x : G
h : K ∈ 𝓝 x
y : G
⊢ K ∈ 𝓝 ((y * x⁻¹)⁻¹ • y)
state_after: no goals
Theorem: FreeAbelianGroup.map_comp
File: Mathlib/GroupTheory/FreeAbelianGroup.lean

tactic: simp [map]
state_before: α : Type u
β : Type v
γ : Type w
f : α → β
g : β → γ
x✝ : α
⊢ ((map g).comp (map f)) (of x✝) = (map (g ∘ f)) (of x✝)
state_after: no goals
Theorem: Real.isPiSystem_Ioo_rat
File: Mathlib/MeasureTheory/Constructions/BorelSpace/Real.lean

tactic: convert isPiSystem_Ioo ((↑) : ℚ → ℝ) ((↑) : ℚ → ℝ)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
⊢ IsPiSystem (⋃ a, ⋃ b, ⋃ (_ : a < b), {Ioo ↑a ↑b})
state_after: case h.e'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
⊢ ⋃ a, ⋃ b, ⋃ (_ : a < b), {Ioo ↑a ↑b} = {S | ∃ l u, ↑l < ↑u ∧ Ioo ↑l ↑u = S}

tactic: ext x
state_before: case h.e'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
⊢ ⋃ a, ⋃ b, ⋃ (_ : a < b), {Ioo ↑a ↑b} = {S | ∃ l u, ↑l < ↑u ∧ Ioo ↑l ↑u = S}
state_after: case h.e'_2.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
x : Set ℝ
⊢ x ∈ ⋃ a, ⋃ b, ⋃ (_ : a < b), {Ioo ↑a ↑b} ↔ x ∈ {S | ∃ l u, ↑l < ↑u ∧ Ioo ↑l ↑u = S}

tactic: simp [eq_comm]
state_before: case h.e'_2.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
x : Set ℝ
⊢ x ∈ ⋃ a, ⋃ b, ⋃ (_ : a < b), {Ioo ↑a ↑b} ↔ x ∈ {S | ∃ l u, ↑l < ↑u ∧ Ioo ↑l ↑u = S}
state_after: no goals
Theorem: WeierstrassCurve.φ_one
File: Mathlib/AlgebraicGeometry/EllipticCurve/DivisionPolynomial/Basic.lean

tactic: erw [φ, ψ_one, one_pow, mul_one, ψ_zero, mul_zero, sub_zero]
state_before: R : Type r
S : Type s
inst✝¹ : CommRing R
inst✝ : CommRing S
W : WeierstrassCurve R
⊢ W.φ 1 = C X
state_after: no goals
Theorem: EReal.preimage_coe_Ioi
File: Mathlib/Data/Real/EReal.lean

tactic: change (WithBot.some ∘ WithTop.some) ⁻¹' (Ioi (WithBot.some (WithTop.some x))) = _
state_before: x : ℝ
⊢ Real.toEReal ⁻¹' Ioi ↑x = Ioi x
state_after: x : ℝ
⊢ WithBot.some ∘ WithTop.some ⁻¹' Ioi ↑↑x = Ioi x

tactic: refine preimage_comp.trans ?_
state_before: x : ℝ
⊢ WithBot.some ∘ WithTop.some ⁻¹' Ioi ↑↑x = Ioi x
state_after: x : ℝ
⊢ WithTop.some ⁻¹' (WithBot.some ⁻¹' Ioi ↑↑x) = Ioi x

tactic: simp only [WithBot.preimage_coe_Ioi, WithTop.preimage_coe_Ioi]
state_before: x : ℝ
⊢ WithTop.some ⁻¹' (WithBot.some ⁻¹' Ioi ↑↑x) = Ioi x
state_after: no goals
Theorem: AddConstMapClass.map_nat_add
File: Mathlib/Algebra/AddConstMap/Basic.lean

tactic: simp
state_before: F : Type u_1
G : Type u_2
H : Type u_3
inst✝³ : FunLike F G H
a : G
b : H
inst✝² : AddCommMonoidWithOne G
inst✝¹ : AddMonoidWithOne H
inst✝ : AddConstMapClass F G H 1 1
f : F
n : ℕ
x : G
⊢ f (↑n + x) = f x + ↑n
state_after: no goals
Theorem: MeasureTheory.Lp.norm_toLp
File: Mathlib/MeasureTheory/Function/LpSpace.lean

tactic: erw [norm_def, snorm_congr_ae (Memℒp.coeFn_toLp hf)]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → E
hf : Memℒp f p μ
⊢ ‖Memℒp.toLp f hf‖ = (snorm f p μ).toReal
state_after: no goals
Theorem: mul_right_mem_nonZeroDivisors_eq_zero_iff
File: Mathlib/Algebra/GroupWithZero/NonZeroDivisors.lean

tactic: simp (config := { contextual := true })
state_before: M₀ : Type u_1
inst✝⁵ : MonoidWithZero M₀
M : Type u_2
M' : Type u_3
M₁ : Type u_4
R : Type u_5
R' : Type u_6
F : Type u_7
inst✝⁴ : MonoidWithZero M
inst✝³ : MonoidWithZero M'
inst✝² : CommMonoidWithZero M₁
inst✝¹ : Ring R
inst✝ : CommRing R'
x r : M
hr : r ∈ M⁰
⊢ x = 0 → x * r = 0
state_after: no goals
Theorem: NumberField.mixedEmbedding.norm_smul
File: Mathlib/NumberTheory/NumberField/CanonicalEmbedding/Basic.lean

tactic: simp_rw [mixedEmbedding.norm_apply, normAtPlace_smul, mul_pow, prod_mul_distrib,
  prod_pow_eq_pow_sum, sum_mult_eq]
state_before: K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
c : ℝ
x : ({ w // w.IsReal } → ℝ) × ({ w // w.IsComplex } → ℂ)
⊢ mixedEmbedding.norm (c • x) = |c| ^ finrank ℚ K * mixedEmbedding.norm x
state_after: no goals
Theorem: RingHom.ker_isRadical_iff_reduced_of_surjective
File: Mathlib/RingTheory/Nilpotent/Lemmas.lean

tactic: simp_rw [isReduced_iff, hf.forall, IsNilpotent, ← map_pow, ← RingHom.mem_ker]
state_before: R : Type u_1
S✝ : Type u_2
x y : R
S : Type u_3
F : Type u_4
inst✝³ : CommSemiring R
inst✝² : CommRing S
inst✝¹ : FunLike F R S
inst✝ : RingHomClass F R S
f : F
hf : Surjective ⇑f
⊢ (ker f).IsRadical ↔ IsReduced S
state_after: R : Type u_1
S✝ : Type u_2
x y : R
S : Type u_3
F : Type u_4
inst✝³ : CommSemiring R
inst✝² : CommRing S
inst✝¹ : FunLike F R S
inst✝ : RingHomClass F R S
f : F
hf : Surjective ⇑f
⊢ (ker f).IsRadical ↔ ∀ (x : R), (∃ n, x ^ n ∈ ker f) → x ∈ ker f

tactic: rfl
state_before: R : Type u_1
S✝ : Type u_2
x y : R
S : Type u_3
F : Type u_4
inst✝³ : CommSemiring R
inst✝² : CommRing S
inst✝¹ : FunLike F R S
inst✝ : RingHomClass F R S
f : F
hf : Surjective ⇑f
⊢ (ker f).IsRadical ↔ ∀ (x : R), (∃ n, x ^ n ∈ ker f) → x ∈ ker f
state_after: no goals
Theorem: Subgroup.nilpotencyClass_le
File: Mathlib/GroupTheory/Nilpotent.lean

tactic: repeat rw [← lowerCentralSeries_length_eq_nilpotencyClass]
state_before: G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : Subgroup G
hG : Group.IsNilpotent G
⊢ Group.nilpotencyClass ↥H ≤ Group.nilpotencyClass G
state_after: G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : Subgroup G
hG : Group.IsNilpotent G
⊢ Nat.find ⋯ ≤ Nat.find ⋯

tactic: refine @Nat.find_mono _ _ (Classical.decPred _) (Classical.decPred _) ?_ _ _
state_before: G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : Subgroup G
hG : Group.IsNilpotent G
⊢ Nat.find ⋯ ≤ Nat.find ⋯
state_after: G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : Subgroup G
hG : Group.IsNilpotent G
⊢ ∀ (n : ℕ), lowerCentralSeries G n = ⊥ → lowerCentralSeries (↥H) n = ⊥

tactic: intro n hG
state_before: G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : Subgroup G
hG : Group.IsNilpotent G
⊢ ∀ (n : ℕ), lowerCentralSeries G n = ⊥ → lowerCentralSeries (↥H) n = ⊥
state_after: G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : Subgroup G
hG✝ : Group.IsNilpotent G
n : ℕ
hG : lowerCentralSeries G n = ⊥
⊢ lowerCentralSeries (↥H) n = ⊥

tactic: have := lowerCentralSeries_map_subtype_le H n
state_before: G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : Subgroup G
hG✝ : Group.IsNilpotent G
n : ℕ
hG : lowerCentralSeries G n = ⊥
⊢ lowerCentralSeries (↥H) n = ⊥
state_after: G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : Subgroup G
hG✝ : Group.IsNilpotent G
n : ℕ
hG : lowerCentralSeries G n = ⊥
this : map H.subtype (lowerCentralSeries (↥H) n) ≤ lowerCentralSeries G n
⊢ lowerCentralSeries (↥H) n = ⊥

tactic: simp only [hG, SetLike.le_def, mem_map, forall_apply_eq_imp_iff₂, exists_imp] at this
state_before: G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : Subgroup G
hG✝ : Group.IsNilpotent G
n : ℕ
hG : lowerCentralSeries G n = ⊥
this : map H.subtype (lowerCentralSeries (↥H) n) ≤ lowerCentralSeries G n
⊢ lowerCentralSeries (↥H) n = ⊥
state_after: G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : Subgroup G
hG✝ : Group.IsNilpotent G
n : ℕ
hG : lowerCentralSeries G n = ⊥
this : ∀ ⦃x : G⦄ (x_1 : ↥H), x_1 ∈ lowerCentralSeries (↥H) n ∧ H.subtype x_1 = x → x ∈ ⊥
⊢ lowerCentralSeries (↥H) n = ⊥

tactic: exact eq_bot_iff.mpr fun x hx => Subtype.ext (this x ⟨hx, rfl⟩)
state_before: G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : Subgroup G
hG✝ : Group.IsNilpotent G
n : ℕ
hG : lowerCentralSeries G n = ⊥
this : ∀ ⦃x : G⦄ (x_1 : ↥H), x_1 ∈ lowerCentralSeries (↥H) n ∧ H.subtype x_1 = x → x ∈ ⊥
⊢ lowerCentralSeries (↥H) n = ⊥
state_after: no goals

tactic: rw [← lowerCentralSeries_length_eq_nilpotencyClass]
state_before: G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : Subgroup G
hG : Group.IsNilpotent G
⊢ Nat.find ⋯ ≤ Group.nilpotencyClass G
state_after: G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
H : Subgroup G
hG : Group.IsNilpotent G
⊢ Nat.find ⋯ ≤ Nat.find ⋯
Theorem: IsMulFreimanIso.threeGPFree_congr
File: Mathlib/Combinatorics/Additive/AP/Three/Defs.lean

tactic: obtain ⟨a, ha, rfl⟩ := hf.bijOn.surjOn hfa
state_before: F : Type u_1
α : Type u_2
β : Type u_3
𝕜 : Type u_4
E : Type u_5
inst✝¹ : CommMonoid α
inst✝ : CommMonoid β
s A : Set α
t B : Set β
f : α → β
a✝ : α
hf : IsMulFreimanIso 2 s t f
hs : ThreeGPFree s
a : β
hfa : a ∈ t
b : β
hfb : b ∈ t
c : β
hfc : c ∈ t
habc : a * c = b * b
⊢ a = b
state_after: case intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
𝕜 : Type u_4
E : Type u_5
inst✝¹ : CommMonoid α
inst✝ : CommMonoid β
s A : Set α
t B : Set β
f : α → β
a✝ : α
hf : IsMulFreimanIso 2 s t f
hs : ThreeGPFree s
b : β
hfb : b ∈ t
c : β
hfc : c ∈ t
a : α
ha : a ∈ s
hfa : f a ∈ t
habc : f a * c = b * b
⊢ f a = b

tactic: obtain ⟨b, hb, rfl⟩ := hf.bijOn.surjOn hfb
state_before: case intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
𝕜 : Type u_4
E : Type u_5
inst✝¹ : CommMonoid α
inst✝ : CommMonoid β
s A : Set α
t B : Set β
f : α → β
a✝ : α
hf : IsMulFreimanIso 2 s t f
hs : ThreeGPFree s
b : β
hfb : b ∈ t
c : β
hfc : c ∈ t
a : α
ha : a ∈ s
hfa : f a ∈ t
habc : f a * c = b * b
⊢ f a = b
state_after: case intro.intro.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
𝕜 : Type u_4
E : Type u_5
inst✝¹ : CommMonoid α
inst✝ : CommMonoid β
s A : Set α
t B : Set β
f : α → β
a✝ : α
hf : IsMulFreimanIso 2 s t f
hs : ThreeGPFree s
c : β
hfc : c ∈ t
a : α
ha : a ∈ s
hfa : f a ∈ t
b : α
hb : b ∈ s
hfb : f b ∈ t
habc : f a * c = f b * f b
⊢ f a = f b

tactic: obtain ⟨c, hc, rfl⟩ := hf.bijOn.surjOn hfc
state_before: case intro.intro.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
𝕜 : Type u_4
E : Type u_5
inst✝¹ : CommMonoid α
inst✝ : CommMonoid β
s A : Set α
t B : Set β
f : α → β
a✝ : α
hf : IsMulFreimanIso 2 s t f
hs : ThreeGPFree s
c : β
hfc : c ∈ t
a : α
ha : a ∈ s
hfa : f a ∈ t
b : α
hb : b ∈ s
hfb : f b ∈ t
habc : f a * c = f b * f b
⊢ f a = f b
state_after: case intro.intro.intro.intro.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
𝕜 : Type u_4
E : Type u_5
inst✝¹ : CommMonoid α
inst✝ : CommMonoid β
s A : Set α
t B : Set β
f : α → β
a✝ : α
hf : IsMulFreimanIso 2 s t f
hs : ThreeGPFree s
a : α
ha : a ∈ s
hfa : f a ∈ t
b : α
hb : b ∈ s
hfb : f b ∈ t
c : α
hc : c ∈ s
hfc : f c ∈ t
habc : f a * f c = f b * f b
⊢ f a = f b

tactic: exact congr_arg f $ hs ha hb hc $ (hf.mul_eq_mul ha hc hb hb).1 habc
state_before: case intro.intro.intro.intro.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
𝕜 : Type u_4
E : Type u_5
inst✝¹ : CommMonoid α
inst✝ : CommMonoid β
s A : Set α
t B : Set β
f : α → β
a✝ : α
hf : IsMulFreimanIso 2 s t f
hs : ThreeGPFree s
a : α
ha : a ∈ s
hfa : f a ∈ t
b : α
hb : b ∈ s
hfb : f b ∈ t
c : α
hc : c ∈ s
hfc : f c ∈ t
habc : f a * f c = f b * f b
⊢ f a = f b
state_after: no goals