Theorem: approxOrderOf.image_pow_subset
File: Mathlib/NumberTheory/WellApproximable.lean

tactic: rintro - ⟨a, ha, rfl⟩
state_before: A : Type u_1
inst✝ : SeminormedCommGroup A
a : A
m n✝ : ℕ
δ : ℝ
n : ℕ
hm : 0 < m
⊢ (fun y => y ^ m) '' approxOrderOf A (n * m) δ ⊆ approxOrderOf A n (↑m * δ)
state_after: case intro.intro
A : Type u_1
inst✝ : SeminormedCommGroup A
a✝ : A
m n✝ : ℕ
δ : ℝ
n : ℕ
hm : 0 < m
a : A
ha : a ∈ approxOrderOf A (n * m) δ
⊢ (fun y => y ^ m) a ∈ approxOrderOf A n (↑m * δ)

tactic: obtain ⟨b, hb : orderOf b = n * m, hab : a ∈ ball b δ⟩ := mem_approxOrderOf_iff.mp ha
state_before: case intro.intro
A : Type u_1
inst✝ : SeminormedCommGroup A
a✝ : A
m n✝ : ℕ
δ : ℝ
n : ℕ
hm : 0 < m
a : A
ha : a ∈ approxOrderOf A (n * m) δ
⊢ (fun y => y ^ m) a ∈ approxOrderOf A n (↑m * δ)
state_after: case intro.intro.intro.intro
A : Type u_1
inst✝ : SeminormedCommGroup A
a✝ : A
m n✝ : ℕ
δ : ℝ
n : ℕ
hm : 0 < m
a : A
ha : a ∈ approxOrderOf A (n * m) δ
b : A
hb : orderOf b = n * m
hab : a ∈ ball b δ
⊢ (fun y => y ^ m) a ∈ approxOrderOf A n (↑m * δ)

tactic: replace hb : b ^ m ∈ {y : A | orderOf y = n} := by
  rw [mem_setOf_eq, orderOf_pow' b hm.ne', hb, Nat.gcd_mul_left_left, n.mul_div_cancel hm]
state_before: case intro.intro.intro.intro
A : Type u_1
inst✝ : SeminormedCommGroup A
a✝ : A
m n✝ : ℕ
δ : ℝ
n : ℕ
hm : 0 < m
a : A
ha : a ∈ approxOrderOf A (n * m) δ
b : A
hb : orderOf b = n * m
hab : a ∈ ball b δ
⊢ (fun y => y ^ m) a ∈ approxOrderOf A n (↑m * δ)
state_after: case intro.intro.intro.intro
A : Type u_1
inst✝ : SeminormedCommGroup A
a✝ : A
m n✝ : ℕ
δ : ℝ
n : ℕ
hm : 0 < m
a : A
ha : a ∈ approxOrderOf A (n * m) δ
b : A
hab : a ∈ ball b δ
hb : b ^ m ∈ {y | orderOf y = n}
⊢ (fun y => y ^ m) a ∈ approxOrderOf A n (↑m * δ)

tactic: apply ball_subset_thickening hb (m * δ)
state_before: case intro.intro.intro.intro
A : Type u_1
inst✝ : SeminormedCommGroup A
a✝ : A
m n✝ : ℕ
δ : ℝ
n : ℕ
hm : 0 < m
a : A
ha : a ∈ approxOrderOf A (n * m) δ
b : A
hab : a ∈ ball b δ
hb : b ^ m ∈ {y | orderOf y = n}
⊢ (fun y => y ^ m) a ∈ approxOrderOf A n (↑m * δ)
state_after: case intro.intro.intro.intro.a
A : Type u_1
inst✝ : SeminormedCommGroup A
a✝ : A
m n✝ : ℕ
δ : ℝ
n : ℕ
hm : 0 < m
a : A
ha : a ∈ approxOrderOf A (n * m) δ
b : A
hab : a ∈ ball b δ
hb : b ^ m ∈ {y | orderOf y = n}
⊢ (fun y => y ^ m) a ∈ ball (b ^ m) (↑m * δ)

tactic: convert pow_mem_ball hm hab using 1
state_before: case intro.intro.intro.intro.a
A : Type u_1
inst✝ : SeminormedCommGroup A
a✝ : A
m n✝ : ℕ
δ : ℝ
n : ℕ
hm : 0 < m
a : A
ha : a ∈ approxOrderOf A (n * m) δ
b : A
hab : a ∈ ball b δ
hb : b ^ m ∈ {y | orderOf y = n}
⊢ (fun y => y ^ m) a ∈ ball (b ^ m) (↑m * δ)
state_after: case h.e'_5
A : Type u_1
inst✝ : SeminormedCommGroup A
a✝ : A
m n✝ : ℕ
δ : ℝ
n : ℕ
hm : 0 < m
a : A
ha : a ∈ approxOrderOf A (n * m) δ
b : A
hab : a ∈ ball b δ
hb : b ^ m ∈ {y | orderOf y = n}
⊢ ball (b ^ m) (↑m * δ) = ball (b ^ m) (m • δ)

tactic: simp only [nsmul_eq_mul]
state_before: case h.e'_5
A : Type u_1
inst✝ : SeminormedCommGroup A
a✝ : A
m n✝ : ℕ
δ : ℝ
n : ℕ
hm : 0 < m
a : A
ha : a ∈ approxOrderOf A (n * m) δ
b : A
hab : a ∈ ball b δ
hb : b ^ m ∈ {y | orderOf y = n}
⊢ ball (b ^ m) (↑m * δ) = ball (b ^ m) (m • δ)
state_after: no goals

tactic: rw [mem_setOf_eq, orderOf_pow' b hm.ne', hb, Nat.gcd_mul_left_left, n.mul_div_cancel hm]
state_before: A : Type u_1
inst✝ : SeminormedCommGroup A
a✝ : A
m n✝ : ℕ
δ : ℝ
n : ℕ
hm : 0 < m
a : A
ha : a ∈ approxOrderOf A (n * m) δ
b : A
hb : orderOf b = n * m
hab : a ∈ ball b δ
⊢ b ^ m ∈ {y | orderOf y = n}
state_after: no goals