use FreeModule.coordinates x ⟦p⟧
case mp
R G : Type
inst✝² : Ring R
inst✝¹ : Group G
inst✝ : DecidableEq G
p : FormalSum R G
x : G
hyp :
  (fun x => FreeModule.coordinates x (Quotient.mk (formalSumSetoid R G) p) ≠ 0) x ∧
    ∀ (y : G), (fun x => FreeModule.coordinates x (Quotient.mk (formalSumSetoid R G) p) ≠ 0) y → y = x
hyp₁ : (fun x => FreeModule.coordinates x (Quotient.mk (formalSumSetoid R G) p) ≠ 0) x
hyp₂ : ∀ (y : G), FreeModule.coordinates y (Quotient.mk (formalSumSetoid R G) p) ≠ 0 → y = x
⊢ ∃ a, ∃ g, p ≈ [(a, g)] ∧ a ≠ 0
case h
R G : Type
inst✝² : Ring R
inst✝¹ : Group G
inst✝ : DecidableEq G
p : FormalSum R G
x : G
hyp :
  (fun x => FreeModule.coordinates x (Quotient.mk (formalSumSetoid R G) p) ≠ 0) x ∧
    ∀ (y : G), (fun x => FreeModule.coordinates x (Quotient.mk (formalSumSetoid R G) p) ≠ 0) y → y = x
hyp₁ : (fun x => FreeModule.coordinates x (Quotient.mk (formalSumSetoid R G) p) ≠ 0) x
hyp₂ : ∀ (y : G), FreeModule.coordinates y (Quotient.mk (formalSumSetoid R G) p) ≠ 0 → y = x
⊢ ∃ g,
    p ≈ [(FreeModule.coordinates x (Quotient.mk (formalSumSetoid R G) p), g)] ∧
      FreeModule.coordinates x (Quotient.mk (formalSumSetoid R G) p) ≠ 0