Zulip Chat Archive

Stream: maths

Topic: mv_polynomial puzzles


Kevin Buzzard (Jan 25 2020 at 13:01):

I keep coming up with these. Do we have this one? What is it called, if so?

import data.mv_polynomial

open mv_polynomial

example {R : Type*} [comm_semiring R] {σ : Type*} {p : mv_polynomial σ R} :
finset.sum p.support (λ s, monomial s (p.coeff s)) = p := sorry

Kevin Buzzard (Jan 25 2020 at 13:29):

I am such a hacker:

example {R : Type*} [comm_semiring R] {σ : Type*} {p : mv_polynomial σ R} :
finset.sum p.support (λ s, monomial s (p.coeff s)) = p :=
begin
  apply mv_polynomial.ext,
  intro s,
  rw coeff_sum,
  simp only [coeff_monomial],
  by_cases hs : s  p.support,
  { rw finset.sum_subset (show {s}  p.support, begin
      intros i hi,
      convert hs,
      cases hi, assumption, cases hi
    end),
    swap,
    { intros t ht hts,
      rw if_neg,
      intro hts2,
      apply hts,
      rw hts2,
      apply set.mem_singleton,
    },
    convert finset.sum_singleton,
    rw if_pos,
    refl
  },
  { rw finset.sum_subset (finset.empty_subset p.support),
    swap,
    { intros t ht1 ht2,
      rw if_neg,
      intro hts,
      apply hs,
      rwa hts at ht1,
    },
    rw finset.sum_empty,
    rw finsupp.mem_support_iff at hs,
    symmetry,
    apply classical.not_not.1 hs
  }
end

I sometimes feel like I write Lean the way a child would.


Last updated: Dec 20 2023 at 11:08 UTC