Zulip Chat Archive

Stream: Is there code for X?

Topic: polynomial preimage of nonzero is dense


Daniel Packer (Mar 24 2022 at 17:40):

Hi y'all.
I was able to show the following for finite dimensional polynomials:

lemma poly_nonzero_dense {p : [X]} (hp : p  0) :
  dense {x :  | polynomial.eval x p  0} := sorry

This should also hold for multivariable polynomials:

lemma mvpoly_nonzero_dense {σ : Type*} {p : mv_polynomial σ } (hp : p  0) :
  dense {x : σ   | mv_polynomial.eval x p  0} := sorry

Is this somewhere in mathlib? If not, does it seem plausible to prove with the state of mathlib right now?
I'd be okay with having [fintype σ] floating around if it makes it easier.

Daniel Packer (Mar 24 2022 at 17:43):

If it's helpful, here are my imports and locale:

import data.polynomial.basic
import data.polynomial.eval
import data.mv_polynomial.basic
import data.real.basic
import topology.basic
import data.polynomial.ring_division
import topology.instances.real
import data.set.prod

open_locale polynomial

Yaël Dillies (Mar 24 2022 at 17:58):

The first one is true for general 0 and because the complement of your set is finite, right?

Daniel Packer (Mar 24 2022 at 18:02):

What do you mean by general 0?

Yaël Dillies (Mar 24 2022 at 18:03):

Sorry :grinning:

lemma poly_nonzero_dense (a : ) {p : [X]} (hp : p  a) :
  dense {x :  | polynomial.eval x p  a} := sorry

Yaël Dillies (Mar 24 2022 at 18:04):

Or maybe you have to spell it a • C.

Daniel Packer (Mar 24 2022 at 18:05):

Oh yeah, this is also true, but this should also be true for the mv_poly case, since you can subtract by a and get the same example

Daniel Packer (Mar 24 2022 at 18:06):

But it is true that the way I showed it for the single variable case was just using that it was a finite subset of ℝ

Daniel Packer (Mar 24 2022 at 18:06):

Or rather, complement of a finite subset of ℝ

Daniel Packer (Mar 24 2022 at 18:07):

Speaking of which, is there code for:

lemma compl_finset_dense_in_R (S : finset ) : dense (S : set ) := sorry,

?

Yaël Dillies (Mar 24 2022 at 18:08):

I would call it set.finite.dense_compl (by using docs#set.finite and the correct generality of topological spaces), and that doesn't seem to exist. But I find that mildly surprising.

Daniel Packer (Mar 24 2022 at 18:11):

I have code for it. Is it worth PRing?
I did use the auxiliary lemma:

lemma set.finite.min_diff (S : set ) (hS : S.finite) :  ε : , ε > 0   x y : , x  S  y  S  y  x  |x - y| > ε := sorry

Yaël Dillies (Mar 24 2022 at 18:12):

If you have a greater generality, I would say yes. You can spell this auxiliary lemma using docs#set.pairwise.

Daniel Packer (Mar 24 2022 at 18:13):

Yaël Dillies said:

I would call it set.finite.dense_compl (by using docs#set.finite and the correct generality of topological spaces), and that doesn't seem to exist. But I find that mildly surprising.

This isn't always true, though, right? You need something like connected maybe?

Kyle Miller (Mar 24 2022 at 18:35):

I think the hypothesis for set.finite.dense_compl to be true for general S is that the space has no isolated points.

Kyle Miller (Mar 24 2022 at 18:36):

Oh, found it: docs#dense.diff_finset

Kyle Miller (Mar 24 2022 at 18:41):

docs#dense_compl_singleton does it for singleton sets without the t1 axiom.

Kyle Miller (Mar 24 2022 at 18:47):

It seems like you need the t1 axiom for finsets in general since, if you're inducting on the cardinality of the finset, you need to take intersections of dense sets, and it suffices having complements of points being open.

Kyle Miller (Mar 24 2022 at 18:48):

It would probably be good to have the docs#dense_compl_singleton version of docs#dense.diff_finset (maybe dense_compl_finset?)


Last updated: Dec 20 2023 at 11:08 UTC