Theorem: HahnSeries.ofPowerSeries_C
File: Mathlib/RingTheory/HahnSeries.lean

tactic: ext n
state_before: Γ : Type u_1
R : Type u_2
inst✝¹ : Semiring R
inst✝ : StrictOrderedSemiring Γ
r : R
⊢ ↑(ofPowerSeries Γ R) (↑(PowerSeries.C R) r) = ↑C r

tactic: simp only [ofPowerSeries_apply, C, RingHom.coe_mk, MonoidHom.coe_mk, OneHom.coe_mk, ne_eq,
  single_coeff]
state_before: case coeff.h
Γ : Type u_1
R : Type u_2
inst✝¹ : Semiring R
inst✝ : StrictOrderedSemiring Γ
r : R
n : Γ
⊢ coeff (↑(ofPowerSeries Γ R) (↑(PowerSeries.C R) r)) n = coeff (↑C r) n

tactic: split_ifs with hn
state_before: case coeff.h
Γ : Type u_1
R : Type u_2
inst✝¹ : Semiring R
inst✝ : StrictOrderedSemiring Γ
r : R
n : Γ
⊢ coeff
      (embDomain
        { toEmbedding := { toFun := Nat.cast, inj' := (_ : Injective Nat.cast) },
          map_rel_iff' :=
            (_ :
              ∀ {a b : ℕ},
                ↑{ toFun := Nat.cast, inj' := (_ : Injective Nat.cast) } a ≤
                    ↑{ toFun := Nat.cast, inj' := (_ : Injective Nat.cast) } b ↔
                  a ≤ b) }
        (↑(RingEquiv.symm toPowerSeries) (↑(PowerSeries.C R) r)))
      n =
    if n = 0 then r else 0

tactic: subst hn
state_before: case coeff.h.inl
Γ : Type u_1
R : Type u_2
inst✝¹ : Semiring R
inst✝ : StrictOrderedSemiring Γ
r : R
n : Γ
hn : n = 0
⊢ coeff
      (embDomain
        { toEmbedding := { toFun := Nat.cast, inj' := (_ : Injective Nat.cast) },
          map_rel_iff' :=
            (_ :
              ∀ {a b : ℕ},
                ↑{ toFun := Nat.cast, inj' := (_ : Injective Nat.cast) } a ≤
                    ↑{ toFun := Nat.cast, inj' := (_ : Injective Nat.cast) } b ↔
                  a ≤ b) }
        (↑(RingEquiv.symm toPowerSeries) (↑(PowerSeries.C R) r)))
      n =
    r

tactic: convert @embDomain_coeff ℕ R _ _ Γ _ _ _ 0 <;> simp
state_before: case coeff.h.inl
Γ : Type u_1
R : Type u_2
inst✝¹ : Semiring R
inst✝ : StrictOrderedSemiring Γ
r : R
⊢ coeff
      (embDomain
        { toEmbedding := { toFun := Nat.cast, inj' := (_ : Injective Nat.cast) },
          map_rel_iff' :=
            (_ :
              ∀ {a b : ℕ},
                ↑{ toFun := Nat.cast, inj' := (_ : Injective Nat.cast) } a ≤
                    ↑{ toFun := Nat.cast, inj' := (_ : Injective Nat.cast) } b ↔
                  a ≤ b) }
        (↑(RingEquiv.symm toPowerSeries) (↑(PowerSeries.C R) r)))
      0 =
    r

tactic: rw [embDomain_notin_image_support]
state_before: case coeff.h.inr
Γ : Type u_1
R : Type u_2
inst✝¹ : Semiring R
inst✝ : StrictOrderedSemiring Γ
r : R
n : Γ
hn : ¬n = 0
⊢ coeff
      (embDomain
        { toEmbedding := { toFun := Nat.cast, inj' := (_ : Injective Nat.cast) },
          map_rel_iff' :=
            (_ :
              ∀ {a b : ℕ},
                ↑{ toFun := Nat.cast, inj' := (_ : Injective Nat.cast) } a ≤
                    ↑{ toFun := Nat.cast, inj' := (_ : Injective Nat.cast) } b ↔
                  a ≤ b) }
        (↑(RingEquiv.symm toPowerSeries) (↑(PowerSeries.C R) r)))
      n =
    0

tactic: simp only [not_exists, Set.mem_image, toPowerSeries_symm_apply_coeff, mem_support,
  PowerSeries.coeff_C]
state_before: case coeff.h.inr
Γ : Type u_1
R : Type u_2
inst✝¹ : Semiring R
inst✝ : StrictOrderedSemiring Γ
r : R
n : Γ
hn : ¬n = 0
⊢ ¬n ∈
      ↑{ toEmbedding := { toFun := Nat.cast, inj' := (_ : Injective Nat.cast) },
            map_rel_iff' :=
              (_ :
                ∀ {a b : ℕ},
                  ↑{ toFun := Nat.cast, inj' := (_ : Injective Nat.cast) } a ≤
                      ↑{ toFun := Nat.cast, inj' := (_ : Injective Nat.cast) } b ↔
                    a ≤ b) } ''
        support (↑(RingEquiv.symm toPowerSeries) (↑(PowerSeries.C R) r))

tactic: intro
state_before: case coeff.h.inr
Γ : Type u_1
R : Type u_2
inst✝¹ : Semiring R
inst✝ : StrictOrderedSemiring Γ
r : R
n : Γ
hn : ¬n = 0
⊢ ∀ (x : ℕ),
    ¬((if x = 0 then r else 0) ≠ 0 ∧
        ↑{ toEmbedding := { toFun := Nat.cast, inj' := (_ : Injective Nat.cast) },
                map_rel_iff' :=
                  (_ :
                    ∀ {a b : ℕ},
                      ↑{ toFun := Nat.cast, inj' := (_ : Injective Nat.cast) } a ≤
                          ↑{ toFun := Nat.cast, inj' := (_ : Injective Nat.cast) } b ↔
                        a ≤ b) }
            x =
          n)

tactic: simp (config := { contextual := true }) [Ne.symm hn]
state_before: case coeff.h.inr
Γ : Type u_1
R : Type u_2
inst✝¹ : Semiring R
inst✝ : StrictOrderedSemiring Γ
r : R
n : Γ
hn : ¬n = 0
x✝ : ℕ
⊢ ¬((if x✝ = 0 then r else 0) ≠ 0 ∧
      ↑{ toEmbedding := { toFun := Nat.cast, inj' := (_ : Injective Nat.cast) },
              map_rel_iff' :=
                (_ :
                  ∀ {a b : ℕ},
                    ↑{ toFun := Nat.cast, inj' := (_ : Injective Nat.cast) } a ≤
                        ↑{ toFun := Nat.cast, inj' := (_ : Injective Nat.cast) } b ↔
                      a ≤ b) }
          x✝ =
        n)