Theorem: HahnSeries.SummableFamily.embDomain_succ_smul_powers
File: Mathlib/RingTheory/HahnSeries/Summable.lean

tactic: apply SummableFamily.ext
state_before: Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < (addVal Γ R) x
⊢ (x • powers x hx).embDomain { toFun := Nat.succ, inj' := Nat.succ_injective } =
    powers x hx - ofFinsupp (Finsupp.single 0 1)
state_after: case h
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < (addVal Γ R) x
⊢ ∀ (a : ℕ),
    ((x • powers x hx).embDomain { toFun := Nat.succ, inj' := Nat.succ_injective }) a =
      (powers x hx - ofFinsupp (Finsupp.single 0 1)) a

tactic: rintro (_ | n)
state_before: case h
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < (addVal Γ R) x
⊢ ∀ (a : ℕ),
    ((x • powers x hx).embDomain { toFun := Nat.succ, inj' := Nat.succ_injective }) a =
      (powers x hx - ofFinsupp (Finsupp.single 0 1)) a
state_after: case h.zero
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < (addVal Γ R) x
⊢ ((x • powers x hx).embDomain { toFun := Nat.succ, inj' := Nat.succ_injective }) 0 =
    (powers x hx - ofFinsupp (Finsupp.single 0 1)) 0

case h.succ
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < (addVal Γ R) x
n : ℕ
⊢ ((x • powers x hx).embDomain { toFun := Nat.succ, inj' := Nat.succ_injective }) (n + 1) =
    (powers x hx - ofFinsupp (Finsupp.single 0 1)) (n + 1)

tactic: rw [embDomain_notin_range, sub_apply, coe_powers, pow_zero, coe_ofFinsupp,
  Finsupp.single_eq_same, sub_self]
state_before: case h.zero
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < (addVal Γ R) x
⊢ ((x • powers x hx).embDomain { toFun := Nat.succ, inj' := Nat.succ_injective }) 0 =
    (powers x hx - ofFinsupp (Finsupp.single 0 1)) 0
state_after: case h.zero.h
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < (addVal Γ R) x
⊢ 0 ∉ Set.range ⇑{ toFun := Nat.succ, inj' := Nat.succ_injective }

tactic: rw [Set.mem_range, not_exists]
state_before: case h.zero.h
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < (addVal Γ R) x
⊢ 0 ∉ Set.range ⇑{ toFun := Nat.succ, inj' := Nat.succ_injective }
state_after: case h.zero.h
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < (addVal Γ R) x
⊢ ∀ (x : ℕ), ¬{ toFun := Nat.succ, inj' := Nat.succ_injective } x = 0

tactic: exact Nat.succ_ne_zero
state_before: case h.zero.h
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < (addVal Γ R) x
⊢ ∀ (x : ℕ), ¬{ toFun := Nat.succ, inj' := Nat.succ_injective } x = 0
state_after: no goals

tactic: refine Eq.trans (embDomain_image _ ⟨Nat.succ, Nat.succ_injective⟩) ?_
state_before: case h.succ
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < (addVal Γ R) x
n : ℕ
⊢ ((x • powers x hx).embDomain { toFun := Nat.succ, inj' := Nat.succ_injective }) (n + 1) =
    (powers x hx - ofFinsupp (Finsupp.single 0 1)) (n + 1)
state_after: case h.succ
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < (addVal Γ R) x
n : ℕ
⊢ (x • powers x hx) n = (powers x hx - ofFinsupp (Finsupp.single 0 1)) (n + 1)

tactic: simp only [pow_succ', coe_powers, coe_sub, smul_apply, coe_ofFinsupp, Pi.sub_apply]
state_before: case h.succ
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < (addVal Γ R) x
n : ℕ
⊢ (x • powers x hx) n = (powers x hx - ofFinsupp (Finsupp.single 0 1)) (n + 1)
state_after: case h.succ
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < (addVal Γ R) x
n : ℕ
⊢ x * x ^ n = x * x ^ n - (Finsupp.single 0 1) (n + 1)

tactic: rw [Finsupp.single_eq_of_ne n.succ_ne_zero.symm, sub_zero]
state_before: case h.succ
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < (addVal Γ R) x
n : ℕ
⊢ x * x ^ n = x * x ^ n - (Finsupp.single 0 1) (n + 1)
state_after: no goals