Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(Combinatorics/Nullstellensatz): formalize Alon's Combinatorial Nullstellensatz #20495

Open
wants to merge 167 commits into
base: master
Choose a base branch
from

Conversation

AntoineChambert-Loir
Copy link
Collaborator

@AntoineChambert-Loir AntoineChambert-Loir commented Jan 5, 2025

This is a formalization of Alon's Combinatorial Nullstellensatz.

Meanwhile, prove several results

  • a multivariate polynomial that vanishes on a too large product set vanishes identically

Probably, this file should belong to the RingTheory.MvPolynomial hierarchy.


Open in Gitpod

@AntoineChambert-Loir AntoineChambert-Loir removed the awaiting-author A reviewer has asked the author a question or requested changes label Feb 8, 2025
@mathlib4-dependent-issues-bot mathlib4-dependent-issues-bot added the blocked-by-other-PR This PR depends on another PR to Mathlib (this label is automatically managed by a bot) label Feb 8, 2025
@mathlib4-dependent-issues-bot mathlib4-dependent-issues-bot removed the blocked-by-other-PR This PR depends on another PR to Mathlib (this label is automatically managed by a bot) label Feb 20, 2025
@leanprover-community-bot-assistant leanprover-community-bot-assistant added the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Feb 20, 2025
@github-actions github-actions bot removed the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Feb 20, 2025
Comment on lines 127 to 131
theorem eq_zero_of_eval_zero_at_prod_finset {σ : Type*} [Finite σ] [IsDomain R]
(P : MvPolynomial σ R) (S : σ → Finset R)
(Hdeg : ∀ i, P.degreeOf i < #(S i))
(Heval : ∀ (x : σ → R), (∀ i, x i ∈ S i) → eval x P = 0) :
P = 0 := by
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suspect you would have a better time proving this one straight away using Finite.empty_option_induction and the Option version of MvPolynomial.finSuccEquiv (which already exists, but I can't give you the name because my computer is dead)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see your point, but unfortunately, docs#MvPolynomial.eval_eq_eval_mv_eval' is only for Fin n.succ. Let's see if I dare making the alternative version.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please have a look.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not completely happy with the optionEquivLeft_coeff_coeff, maybe it should incorporate what I do in the Nullstellensatz file. The point is that one needs, given m : sigma to0 Nat and d: Nat to construct an n : Option sigma to0 Nat, and the simplest way I found is adding single and embDomain....

@YaelDillies YaelDillies added the awaiting-author A reviewer has asked the author a question or requested changes label Feb 21, 2025
@AntoineChambert-Loir AntoineChambert-Loir removed the awaiting-author A reviewer has asked the author a question or requested changes label Feb 21, 2025
Copy link
Collaborator

@YaelDillies YaelDillies left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks all good to me. I'll let @b-mehta do the final call.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
t-combinatorics Combinatorics
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants