1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: SemidirectProduct.lift_unique
File: Mathlib/GroupTheory/SemidirectProduct.lean

tactic: ext
state_before: N : Type u_1
G : Type u_2
H : Type u_3
inst✝² : Group N
inst✝¹ : Group G
inst✝ : Group H
φ : G →* MulAut N
f₁ : N →* H
f₂ : G →* H
h : ∀ (g : G), f₁.comp (MulEquiv.toMonoidHom (φ g)) = (MulEquiv.toMonoidHom (MulAut.conj (f₂ g))).comp f₁
F : N ⋊[φ] G →* H
x✝ : G
⊢ (F.comp inl).comp (MulEquiv.toMonoidHom (φ x✝)) =
    (MulEquiv.toMonoidHom (MulAut.conj ((F.comp inr) x✝))).comp (F.comp inl)
state_after: case h
N : Type u_1
G : Type u_2
H : Type u_3
inst✝² : Group N
inst✝¹ : Group G
inst✝ : Group H
φ : G →* MulAut N
f₁ : N →* H
f₂ : G →* H
h : ∀ (g : G), f₁.comp (MulEquiv.toMonoidHom (φ g)) = (MulEquiv.toMonoidHom (MulAut.conj (f₂ g))).comp f₁
F : N ⋊[φ] G →* H
x✝¹ : G
x✝ : N
⊢ ((F.comp inl).comp (MulEquiv.toMonoidHom (φ x✝¹))) x✝ =
    ((MulEquiv.toMonoidHom (MulAut.conj ((F.comp inr) x✝¹))).comp (F.comp inl)) x✝

tactic: simp [inl_aut]
state_before: case h
N : Type u_1
G : Type u_2
H : Type u_3
inst✝² : Group N
inst✝¹ : Group G
inst✝ : Group H
φ : G →* MulAut N
f₁ : N →* H
f₂ : G →* H
h : ∀ (g : G), f₁.comp (MulEquiv.toMonoidHom (φ g)) = (MulEquiv.toMonoidHom (MulAut.conj (f₂ g))).comp f₁
F : N ⋊[φ] G →* H
x✝¹ : G
x✝ : N
⊢ ((F.comp inl).comp (MulEquiv.toMonoidHom (φ x✝¹))) x✝ =
    ((MulEquiv.toMonoidHom (MulAut.conj ((F.comp inr) x✝¹))).comp (F.comp inl)) x✝
state_after: no goals

tactic: rw [DFunLike.ext_iff]
state_before: N : Type u_1
G : Type u_2
H : Type u_3
inst✝² : Group N
inst✝¹ : Group G
inst✝ : Group H
φ : G →* MulAut N
f₁ : N →* H
f₂ : G →* H
h : ∀ (g : G), f₁.comp (MulEquiv.toMonoidHom (φ g)) = (MulEquiv.toMonoidHom (MulAut.conj (f₂ g))).comp f₁
F : N ⋊[φ] G →* H
⊢ F = lift (F.comp inl) (F.comp inr) ⋯
state_after: N : Type u_1
G : Type u_2
H : Type u_3
inst✝² : Group N
inst✝¹ : Group G
inst✝ : Group H
φ : G →* MulAut N
f₁ : N →* H
f₂ : G →* H
h : ∀ (g : G), f₁.comp (MulEquiv.toMonoidHom (φ g)) = (MulEquiv.toMonoidHom (MulAut.conj (f₂ g))).comp f₁
F : N ⋊[φ] G →* H
⊢ ∀ (x : N ⋊[φ] G), F x = (lift (F.comp inl) (F.comp inr) ⋯) x

tactic: simp only [lift, MonoidHom.comp_apply, MonoidHom.coe_mk, OneHom.coe_mk, ← map_mul,
  inl_left_mul_inr_right, forall_const]
state_before: N : Type u_1
G : Type u_2
H : Type u_3
inst✝² : Group N
inst✝¹ : Group G
inst✝ : Group H
φ : G →* MulAut N
f₁ : N →* H
f₂ : G →* H
h : ∀ (g : G), f₁.comp (MulEquiv.toMonoidHom (φ g)) = (MulEquiv.toMonoidHom (MulAut.conj (f₂ g))).comp f₁
F : N ⋊[φ] G →* H
⊢ ∀ (x : N ⋊[φ] G), F x = (lift (F.comp inl) (F.comp inr) ⋯) x
state_after: no goals
Theorem: Nat.digits_zero
File: Mathlib/Data/Nat/Digits.lean

tactic: rcases b with (_ | ⟨_ | ⟨_⟩⟩) <;> simp [digits, digitsAux0, digitsAux1]
state_before: n b : ℕ
⊢ b.digits 0 = []
state_after: no goals
Theorem: ONote.repr_ofNat
File: Mathlib/SetTheory/Ordinal/Notation.lean

tactic: cases n <;> simp
state_before: n : ℕ
⊢ (↑n).repr = ↑n
state_after: no goals
Theorem: Primrec.fin_curry₁
File: Mathlib/Computability/Primrec.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
σ : Type u_4
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
n : ℕ
f : Fin n → α → σ
h : ∀ (i : Fin n), Primrec (f i)
a : Fin n × α
⊢ (Vector.ofFn fun i => f i a.2).get a.1 = f a.1 a.2
state_after: no goals
Theorem: String.any_eq
File: .lake/packages/batteries/Batteries/Data/String/Lemmas.lean

tactic: simpa using anyAux_of_valid p [] s.1 []
state_before: s : String
p : Char → Bool
⊢ s.any p = s.data.any p
state_after: no goals
Theorem: Ordnode.pos_size_of_mem
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: cases t
state_before: α : Type u_1
inst✝¹ : LE α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
x : α
t : Ordnode α
h : t.Sized
h_mem : x ∈ t
⊢ 0 < t.size
state_after: case nil
α : Type u_1
inst✝¹ : LE α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
x : α
h : nil.Sized
h_mem : x ∈ nil
⊢ 0 < nil.size

case node
α : Type u_1
inst✝¹ : LE α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
x : α
size✝ : ℕ
l✝ : Ordnode α
x✝ : α
r✝ : Ordnode α
h : (node size✝ l✝ x✝ r✝).Sized
h_mem : x ∈ node size✝ l✝ x✝ r✝
⊢ 0 < (node size✝ l✝ x✝ r✝).size

tactic: contradiction
state_before: case nil
α : Type u_1
inst✝¹ : LE α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
x : α
h : nil.Sized
h_mem : x ∈ nil
⊢ 0 < nil.size
state_after: no goals

tactic: simp [h.1]
state_before: case node
α : Type u_1
inst✝¹ : LE α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
x : α
size✝ : ℕ
l✝ : Ordnode α
x✝ : α
r✝ : Ordnode α
h : (node size✝ l✝ x✝ r✝).Sized
h_mem : x ∈ node size✝ l✝ x✝ r✝
⊢ 0 < (node size✝ l✝ x✝ r✝).size
state_after: no goals
Theorem: sSup_disjoint_iff
File: Mathlib/Order/CompleteBooleanAlgebra.lean

tactic: simp only [disjoint_iff, sSup_inf_eq, iSup_eq_bot]
state_before: α : Type u
β : Type v
ι : Sort w
κ : ι → Sort w'
inst✝ : Frame α
s✝ t : Set α
a b : α
s : Set α
⊢ Disjoint (sSup s) a ↔ ∀ b ∈ s, Disjoint b a
state_after: no goals
Theorem: ContDiffWithinAt.differentiableWithinAt_iteratedDerivWithin
File: Mathlib/Analysis/Calculus/IteratedDeriv/Defs.lean

tactic: simpa only [iteratedDerivWithin_eq_equiv_comp,
  LinearIsometryEquiv.comp_differentiableWithinAt_iff] using
  h.differentiableWithinAt_iteratedFDerivWithin hmn hs
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
n✝ : ℕ
f : 𝕜 → F
s : Set 𝕜
x : 𝕜
n : ℕ∞
m : ℕ
h : ContDiffWithinAt 𝕜 n f s x
hmn : ↑m < n
hs : UniqueDiffOn 𝕜 (insert x s)
⊢ DifferentiableWithinAt 𝕜 (iteratedDerivWithin m f s) s x
state_after: no goals
Theorem: MeasureTheory.SignedMeasure.singularPart_smul
File: Mathlib/MeasureTheory/Decomposition/SignedLebesgue.lean

tactic: lift r to ℝ≥0 using hr
state_before: case inl
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : 0 ≤ r
⊢ (r • s).singularPart μ = r • s.singularPart μ
state_after: case inl.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ≥0
⊢ (↑r • s).singularPart μ = ↑r • s.singularPart μ

tactic: exact singularPart_smul_nnreal s μ r
state_before: case inl.intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ≥0
⊢ (↑r • s).singularPart μ = ↑r • s.singularPart μ
state_after: no goals

tactic: rw [singularPart, singularPart]
state_before: case inr
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : r < 0
⊢ (r • s).singularPart μ = r • s.singularPart μ
state_after: case inr
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : r < 0
⊢ ((r • s).toJordanDecomposition.posPart.singularPart μ).toSignedMeasure -
      ((r • s).toJordanDecomposition.negPart.singularPart μ).toSignedMeasure =
    r •
      ((s.toJordanDecomposition.posPart.singularPart μ).toSignedMeasure -
        (s.toJordanDecomposition.negPart.singularPart μ).toSignedMeasure)

tactic: rw [toSignedMeasure_smul, toSignedMeasure_smul, ← neg_sub, ← smul_sub, NNReal.smul_def,
  ← neg_smul, Real.coe_toNNReal _ (le_of_lt (neg_pos.mpr hr)), neg_neg]
state_before: case inr
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
r : ℝ
hr : r < 0
⊢ ((-r).toNNReal • s.toJordanDecomposition.negPart.singularPart μ).toSignedMeasure -
      ((-r).toNNReal • s.toJordanDecomposition.posPart.singularPart μ).toSignedMeasure =
    r •
      ((s.toJordanDecomposition.posPart.singularPart μ).toSignedMeasure -
        (s.toJordanDecomposition.negPart.singularPart μ).toSignedMeasure)
state_after: no goals
Theorem: bddAbove_iff_exists_ge
File: Mathlib/Order/Bounds/Basic.lean

tactic: rw [bddAbove_def, exists_ge_and_iff_exists]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s✝ t : Set α
a b : α
inst✝ : SemilatticeSup γ
s : Set γ
x₀ : γ
⊢ BddAbove s ↔ ∃ x, x₀ ≤ x ∧ ∀ y ∈ s, y ≤ x
state_after: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s✝ t : Set α
a b : α
inst✝ : SemilatticeSup γ
s : Set γ
x₀ : γ
⊢ Monotone fun x => ∀ y ∈ s, y ≤ x

tactic: exact Monotone.ball fun x _ => monotone_le
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s✝ t : Set α
a b : α
inst✝ : SemilatticeSup γ
s : Set γ
x₀ : γ
⊢ Monotone fun x => ∀ y ∈ s, y ≤ x
state_after: no goals
Theorem: Finset.prod_map
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: rw [Finset.prod, Finset.map_val, Multiset.map_map]
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
e : α ↪ γ
f : γ → β
⊢ ∏ x ∈ map e s, f x = ∏ x ∈ s, f (e x)
state_after: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
e : α ↪ γ
f : γ → β
⊢ (Multiset.map ((fun x => f x) ∘ ⇑e) s.val).prod = ∏ x ∈ s, f (e x)

tactic: rfl
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
e : α ↪ γ
f : γ → β
⊢ (Multiset.map ((fun x => f x) ∘ ⇑e) s.val).prod = ∏ x ∈ s, f (e x)
state_after: no goals
Theorem: Set.exists_subset_or_subset_of_two_mul_lt_ncard
File: Mathlib/Data/Set/Card.lean

tactic: classical
have hu := finite_of_ncard_ne_zero ((Nat.zero_le _).trans_lt hst).ne.symm
rw [ncard_eq_toFinset_card _ hu,
  Finite.toFinset_union (hu.subset subset_union_left)
    (hu.subset subset_union_right)] at hst
obtain ⟨r', hnr', hr'⟩ := Finset.exists_subset_or_subset_of_two_mul_lt_card hst
exact ⟨r', by simpa, by simpa using hr'⟩
state_before: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
n : ℕ
hst : 2 * n < (s ∪ t).ncard
⊢ ∃ r, n < r.ncard ∧ (r ⊆ s ∨ r ⊆ t)
state_after: no goals

tactic: have hu := finite_of_ncard_ne_zero ((Nat.zero_le _).trans_lt hst).ne.symm
state_before: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
n : ℕ
hst : 2 * n < (s ∪ t).ncard
⊢ ∃ r, n < r.ncard ∧ (r ⊆ s ∨ r ⊆ t)
state_after: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
n : ℕ
hst : 2 * n < (s ∪ t).ncard
hu : (s ∪ t).Finite
⊢ ∃ r, n < r.ncard ∧ (r ⊆ s ∨ r ⊆ t)

tactic: rw [ncard_eq_toFinset_card _ hu,
  Finite.toFinset_union (hu.subset subset_union_left)
    (hu.subset subset_union_right)] at hst
state_before: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
n : ℕ
hst : 2 * n < (s ∪ t).ncard
hu : (s ∪ t).Finite
⊢ ∃ r, n < r.ncard ∧ (r ⊆ s ∨ r ⊆ t)
state_after: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
n : ℕ
hu : (s ∪ t).Finite
hst : 2 * n < (⋯.toFinset ∪ ⋯.toFinset).card
⊢ ∃ r, n < r.ncard ∧ (r ⊆ s ∨ r ⊆ t)

tactic: obtain ⟨r', hnr', hr'⟩ := Finset.exists_subset_or_subset_of_two_mul_lt_card hst
state_before: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
n : ℕ
hu : (s ∪ t).Finite
hst : 2 * n < (⋯.toFinset ∪ ⋯.toFinset).card
⊢ ∃ r, n < r.ncard ∧ (r ⊆ s ∨ r ⊆ t)
state_after: case intro.intro
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
n : ℕ
hu : (s ∪ t).Finite
hst : 2 * n < (⋯.toFinset ∪ ⋯.toFinset).card
r' : Finset α
hnr' : n < r'.card
hr' : r' ⊆ ⋯.toFinset ∨ r' ⊆ ⋯.toFinset
⊢ ∃ r, n < r.ncard ∧ (r ⊆ s ∨ r ⊆ t)

tactic: exact ⟨r', by simpa, by simpa using hr'⟩
state_before: case intro.intro
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
n : ℕ
hu : (s ∪ t).Finite
hst : 2 * n < (⋯.toFinset ∪ ⋯.toFinset).card
r' : Finset α
hnr' : n < r'.card
hr' : r' ⊆ ⋯.toFinset ∨ r' ⊆ ⋯.toFinset
⊢ ∃ r, n < r.ncard ∧ (r ⊆ s ∨ r ⊆ t)
state_after: no goals

tactic: simpa
state_before: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
n : ℕ
hu : (s ∪ t).Finite
hst : 2 * n < (⋯.toFinset ∪ ⋯.toFinset).card
r' : Finset α
hnr' : n < r'.card
hr' : r' ⊆ ⋯.toFinset ∨ r' ⊆ ⋯.toFinset
⊢ n < (↑r').ncard
state_after: no goals

tactic: simpa using hr'
state_before: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
n : ℕ
hu : (s ∪ t).Finite
hst : 2 * n < (⋯.toFinset ∪ ⋯.toFinset).card
r' : Finset α
hnr' : n < r'.card
hr' : r' ⊆ ⋯.toFinset ∨ r' ⊆ ⋯.toFinset
⊢ ↑r' ⊆ s ∨ ↑r' ⊆ t
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.map_polynomial
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: simp [polynomial]
state_before: R : Type u
inst✝² : CommRing R
W' : Jacobian R
F : Type v
inst✝¹ : Field F
W : Jacobian F
S : Type u_1
inst✝ : CommRing S
f : R →+* S
P Q : Fin 3 → R
⊢ (map W' f).toJacobian.polynomial = (MvPolynomial.map f) W'.polynomial
state_after: no goals
Theorem: Filter.HasBasis.hasBasis_self_subset
File: Mathlib/Order/Filter/Bases.lean

tactic: simpa only [and_assoc] using h.restrict_subset hV
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
l l' : Filter α
p✝ : ι → Prop
s : ι → Set α
t : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
p : Set α → Prop
h : l.HasBasis (fun s => s ∈ l ∧ p s) id
V : Set α
hV : V ∈ l
⊢ l.HasBasis (fun s => s ∈ l ∧ p s ∧ s ⊆ V) id
state_after: no goals
Theorem: Odd.pow_neg_iff
File: Mathlib/Algebra/Order/Ring/Basic.lean

tactic: obtain ⟨k, rfl⟩ := hn
state_before: α : Type u_1
M : Type u_2
R : Type u_3
inst✝¹ : LinearOrderedSemiring R
a b : R
m n : ℕ
inst✝ : ExistsAddOfLE R
hn : Odd n
ha : a < 0
⊢ a ^ n < 0
state_after: case intro
α : Type u_1
M : Type u_2
R : Type u_3
inst✝¹ : LinearOrderedSemiring R
a b : R
m : ℕ
inst✝ : ExistsAddOfLE R
ha : a < 0
k : ℕ
⊢ a ^ (2 * k + 1) < 0

tactic: rw [pow_succ]
state_before: case intro
α : Type u_1
M : Type u_2
R : Type u_3
inst✝¹ : LinearOrderedSemiring R
a b : R
m : ℕ
inst✝ : ExistsAddOfLE R
ha : a < 0
k : ℕ
⊢ a ^ (2 * k + 1) < 0
state_after: case intro
α : Type u_1
M : Type u_2
R : Type u_3
inst✝¹ : LinearOrderedSemiring R
a b : R
m : ℕ
inst✝ : ExistsAddOfLE R
ha : a < 0
k : ℕ
⊢ a ^ (2 * k) * a < 0

tactic: exact mul_neg_of_pos_of_neg ((even_two_mul _).pow_pos ha.ne) ha
state_before: case intro
α : Type u_1
M : Type u_2
R : Type u_3
inst✝¹ : LinearOrderedSemiring R
a b : R
m : ℕ
inst✝ : ExistsAddOfLE R
ha : a < 0
k : ℕ
⊢ a ^ (2 * k) * a < 0
state_after: no goals
Theorem: Finset.weightedVSub_apply
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

tactic: simp [weightedVSub, LinearMap.sum_apply]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
w : ι → k
p : ι → P
⊢ (s.weightedVSub p) w = ∑ i ∈ s, w i • (p i -ᵥ Classical.choice ⋯)
state_after: no goals
Theorem: least_ascending_central_series_length_eq_nilpotencyClass
File: Mathlib/GroupTheory/Nilpotent.lean

tactic: refine le_antisymm (Nat.find_mono ?_) (Nat.find_mono ?_)
state_before: G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : H.Normal
hG : Group.IsNilpotent G
⊢ Nat.find ⋯ = Group.nilpotencyClass G
state_after: case refine_1
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : H.Normal
hG : Group.IsNilpotent G
⊢ ∀ (n : ℕ), upperCentralSeries G n = ⊤ → ∃ H, IsAscendingCentralSeries H ∧ H n = ⊤

case refine_2
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : H.Normal
hG : Group.IsNilpotent G
⊢ ∀ (n : ℕ), (∃ H, IsAscendingCentralSeries H ∧ H n = ⊤) → upperCentralSeries G n = ⊤

tactic: intro n hn
state_before: case refine_1
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : H.Normal
hG : Group.IsNilpotent G
⊢ ∀ (n : ℕ), upperCentralSeries G n = ⊤ → ∃ H, IsAscendingCentralSeries H ∧ H n = ⊤
state_after: case refine_1
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : H.Normal
hG : Group.IsNilpotent G
n : ℕ
hn : upperCentralSeries G n = ⊤
⊢ ∃ H, IsAscendingCentralSeries H ∧ H n = ⊤

tactic: exact ⟨upperCentralSeries G, upperCentralSeries_isAscendingCentralSeries G, hn⟩
state_before: case refine_1
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : H.Normal
hG : Group.IsNilpotent G
n : ℕ
hn : upperCentralSeries G n = ⊤
⊢ ∃ H, IsAscendingCentralSeries H ∧ H n = ⊤
state_after: no goals

tactic: rintro n ⟨H, ⟨hH, hn⟩⟩
state_before: case refine_2
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : H.Normal
hG : Group.IsNilpotent G
⊢ ∀ (n : ℕ), (∃ H, IsAscendingCentralSeries H ∧ H n = ⊤) → upperCentralSeries G n = ⊤
state_after: case refine_2.intro.intro
G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
hG : Group.IsNilpotent G
n : ℕ
H : ℕ → Subgroup G
hH : IsAscendingCentralSeries H
hn : H n = ⊤
⊢ upperCentralSeries G n = ⊤

tactic: rw [← top_le_iff, ← hn]
state_before: case refine_2.intro.intro
G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
hG : Group.IsNilpotent G
n : ℕ
H : ℕ → Subgroup G
hH : IsAscendingCentralSeries H
hn : H n = ⊤
⊢ upperCentralSeries G n = ⊤
state_after: case refine_2.intro.intro
G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
hG : Group.IsNilpotent G
n : ℕ
H : ℕ → Subgroup G
hH : IsAscendingCentralSeries H
hn : H n = ⊤
⊢ H n ≤ upperCentralSeries G n

tactic: exact ascending_central_series_le_upper H hH n
state_before: case refine_2.intro.intro
G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : H✝.Normal
hG : Group.IsNilpotent G
n : ℕ
H : ℕ → Subgroup G
hH : IsAscendingCentralSeries H
hn : H n = ⊤
⊢ H n ≤ upperCentralSeries G n
state_after: no goals
Theorem: BoundedContinuousFunction.apply_le_nndist_zero
File: Mathlib/MeasureTheory/Integral/BoundedContinuousFunction.lean

tactic: convert nndist_coe_le_nndist x
state_before: X : Type u_1
inst✝ : TopologicalSpace X
f : X →ᵇ ℝ≥0
x : X
⊢ f x ≤ nndist 0 f
state_after: case h.e'_3
X : Type u_1
inst✝ : TopologicalSpace X
f : X →ᵇ ℝ≥0
x : X
⊢ f x = nndist (0 x) (f x)

tactic: simp only [coe_zero, Pi.zero_apply, NNReal.nndist_zero_eq_val]
state_before: case h.e'_3
X : Type u_1
inst✝ : TopologicalSpace X
f : X →ᵇ ℝ≥0
x : X
⊢ f x = nndist (0 x) (f x)
state_after: no goals
Theorem: WittVector.constantCoeff_wittZSMul
File: Mathlib/RingTheory/WittVector/Defs.lean

tactic: apply constantCoeff_wittStructureInt p _ _ n
state_before: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
z : ℤ
n : ℕ
⊢ constantCoeff (wittZSMul p z n) = 0
state_after: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
z : ℤ
n : ℕ
⊢ constantCoeff (z • X 0) = 0

tactic: simp only [smul_zero, map_zsmul, constantCoeff_X]
state_before: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
z : ℤ
n : ℕ
⊢ constantCoeff (z • X 0) = 0
state_after: no goals
Theorem: summable_div_const_iff
File: Mathlib/Topology/Algebra/InfiniteSum/Ring.lean

tactic: simpa only [div_eq_mul_inv] using summable_mul_right_iff (inv_ne_zero h)
state_before: ι : Type u_1
κ : Type u_2
R : Type u_3
α : Type u_4
inst✝² : DivisionSemiring α
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSemiring α
f g : ι → α
a a₁ a₂ : α
h : a ≠ 0
⊢ (Summable fun i => f i / a) ↔ Summable f
state_after: no goals
Theorem: Ideal.associatesEquivIsPrincipal_map_one
File: Mathlib/RingTheory/Ideal/IsPrincipal.lean

tactic: rw [Associates.one_eq_mk_one, ← Associates.quotient_mk_eq_mk, associatesEquivIsPrincipal_apply,
  span_singleton_one, one_eq_top]
state_before: R : Type u_1
inst✝¹ : CommRing R
inst✝ : IsDomain R
⊢ ↑((associatesEquivIsPrincipal R) 1) = 1
state_after: no goals
Theorem: ContinuousWithinAt.finset_sup
File: Mathlib/Topology/Order/Lattice.lean

tactic: simpa only [← Finset.sup_apply] using finset_sup_apply hs
state_before: L : Type u_1
X : Type u_2
inst✝⁴ : TopologicalSpace L
inst✝³ : TopologicalSpace X
ι : Type u_3
inst✝² : SemilatticeSup L
inst✝¹ : OrderBot L
inst✝ : ContinuousSup L
s : Finset ι
f : ι → X → L
t : Set X
x : X
hs : ∀ i ∈ s, ContinuousWithinAt (f i) t x
⊢ ContinuousWithinAt (s.sup f) t x
state_after: no goals
Theorem: Complex.neg_re_eq_abs
File: Mathlib/Data/Complex/Order.lean

tactic: rw [← neg_re, ← abs.map_neg, re_eq_abs]
state_before: z : ℂ
⊢ -z.re = abs z ↔ z ≤ 0
state_after: z : ℂ
⊢ 0 ≤ -z ↔ z ≤ 0

tactic: exact neg_nonneg.and <| eq_comm.trans neg_eq_zero
state_before: z : ℂ
⊢ 0 ≤ -z ↔ z ≤ 0
state_after: no goals
Theorem: CategoryTheory.biproduct_ι_comp_rightDistributor_hom
File: Mathlib/CategoryTheory/Monoidal/Preadditive.lean

tactic: simp [rightDistributor_hom, Preadditive.comp_sum, ← comp_whiskerRight_assoc, biproduct.ι_π,
  dite_whiskerRight, dite_comp]
state_before: C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : Preadditive C
inst✝³ : MonoidalCategory C
inst✝² : MonoidalPreadditive C
inst✝¹ : HasFiniteBiproducts C
J : Type
inst✝ : Fintype J
f : J → C
X : C
j : J
⊢ biproduct.ι f j ▷ X ≫ (rightDistributor f X).hom = biproduct.ι (fun j => f j ⊗ X) j
state_after: no goals
Theorem: SimpleGraph.Walk.IsHamiltonian.mem_support
File: Mathlib/Combinatorics/SimpleGraph/Hamiltonian.lean

tactic: simp only [← List.count_pos_iff_mem, hp _, Nat.zero_lt_one]
state_before: α : Type u_1
β : Type u_2
inst✝³ : Fintype α
inst✝² : Fintype β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
G : SimpleGraph α
a b : α
p : G.Walk a b
hp : p.IsHamiltonian
c : α
⊢ c ∈ p.support
state_after: no goals
Theorem: Bornology.IsVonNBounded.vadd
File: Mathlib/Analysis/LocallyConvex/Bounded.lean

tactic: rw [← singleton_vadd]
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousSMul 𝕜 E
inst✝ : ContinuousAdd E
s t : Set E
hs : IsVonNBounded 𝕜 s
x : E
⊢ IsVonNBounded 𝕜 (x +ᵥ s)
state_after: 𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousSMul 𝕜 E
inst✝ : ContinuousAdd E
s t : Set E
hs : IsVonNBounded 𝕜 s
x : E
⊢ IsVonNBounded 𝕜 ({x} +ᵥ s)

tactic: exact IsVonNBounded.add (isVonNBounded_singleton x) hs
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousSMul 𝕜 E
inst✝ : ContinuousAdd E
s t : Set E
hs : IsVonNBounded 𝕜 s
x : E
⊢ IsVonNBounded 𝕜 ({x} +ᵥ s)
state_after: no goals