-
Notifications
You must be signed in to change notification settings - Fork 1k
[Merged by Bors] - feat(Combinatorics/SimpleGraph): Add a theorem about cliques in induced subgraphs #20705
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
Conversation
|
messageFile.md |
|
messageFile.md |
pimotte
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for your PR!
Looks good to me in general, I left some small remarks. Also note that this is the first time I'm reviewing something for mathlib, so chances are someone more knowledgeable will have some more feedback later:)
|
|
||
| /-- If a set of vertices `A` is a clique in subgraph of `G` induced by a superset of `A`, | ||
| it's embedding is a clique in `G`. -/ | ||
| theorem induce_isClique {S : Subgraph G} {F : Set α} {A : Set F} (c : (S.induce F).coe.IsClique A) : |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Depending on what you need it for it might also make sense to use coeSpanning instead along with an hypothesis of the form (h : A ⊆ F). I think this is also fine, it just depends on your usecase. Also holds for the other lemma's.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you mean something like this?
theorem spanning_isClique {S : Subgraph G} {A : Set S.verts} (c : S.spanningCoe.IsClique A) :
G.IsClique (Subtype.val '' A) := by
I could also add those, if that's a use case that's expected to come up. The induced subgraph way perfect for my situation :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I meant something along these lines (but yours is also a valid alternative):
theorem induce_isClique {S : Subgraph G} {F A : Set α} (h : A ⊆ F) (c : (S.induce F).spanningCoe.IsClique A) :
G.IsClique A := by sorry
In any case, if you don't need either of these I'd personally say to just leave it at this until we do, but I'm happy to be overruled by someone with a better big picture overview:)
|
messageFile.md |
YaelDillies
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for the PR, and you Pim for the review! Here are a few more comments.
| simp only [isNIndepSet_iff, coe_map, card_map, and_congr_left_iff] | ||
| exact fun _ ↦ induce_isIndepSet_iff G |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would expect something like this to work
| simp only [isNIndepSet_iff, coe_map, card_map, and_congr_left_iff] | |
| exact fun _ ↦ induce_isIndepSet_iff G | |
| simp [isNIndepSet_iff, induce_isIndepSet_iff] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would expect the same, but there is something really odd happening. your suggestion of
simp [isNIndepSet_iff, isIndepSet_induce]
cannot prove the goal, but
simp [isNIndepSet_iff, (isIndepSet_induce)]
can! I did not believe my eyes, but the ci build seems to agree with me (see the latest two commits). I am now very confused.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wait! Did you see this @YaelDillies ? Isn't there some kind of problem here?
What proof? I assume you're aware of @b-mehta's formalisation of Ramsey numbers? Just making sure you're not duplicating effort, there's enough to do like this 😉 |
Co-authored-by: Yaël Dillies <yael.dillies@gmail.com> Co-authored-by: Pim Otte <otte.pim@gmail.com>
|
please_merge_master.md |
Co-authored-by: Yaël Dillies <yael.dillies@gmail.com>
|
please_merge_master.md |
|
please_merge_master.md |
PR summary b8b04d349dImport changes for modified filesNo significant changes to the import graph Import changes for all files
|
Thanks for the pointer! :) I am aware of a |
YaelDillies
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
maintainer delegate
|
🚀 Pull request has been placed on the maintainer queue by YaelDillies. |
Co-authored-by: Yaël Dillies <yael.dillies@gmail.com>
YaelDillies
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
maintainer merge
|
🚀 Pull request has been placed on the maintainer queue by YaelDillies. |
|
Thanks! bors merge |
…ced subgraphs (#20705) Add theorems giving a clique in the supergraph if there is a clique in a subgraph induced by a superset of the clique, as well as theorems about independent sets in induced subgraphs on G. Co-authored-by: ooovi <79147175+ooovi@users.noreply.github.com>
|
Pull request successfully merged into master. Build succeeded: |
* origin/master: (823 commits) chore(Computability): fix naming of lemmas about Sum.inl, Sum.inr, Sum.casesOn (#22156) feat: `Fintype Ordering` (#22154) chore: more renamings to fit the naming convention (#22148) feat(CategoryTheory): any monomorphism in a Grothendieck abelian category is a transfinite composition of pushouts of monomorphisms in a small family (#22157) chore: rename `{Continuous., continuous_}sum_map` to `sumMap` (#22155) chore: remove initial space followed by `-/` (#22158) chore: make arg in HeightOneSpectrum.valuation explicit (#22139) feat(Data/List): `List.maximum` is monotone (#22091) chore(Combinatorics/SimpleGraph): extract WalkDecomp from Walk (#21981) feat: if a monoid M acts, then so does (s : S) with [SubmonoidClass S M] (#21123) chore: backport changes to `getElem` lemmas (#22146) feat(CategoryTheory): generating monomorphisms in Grothendieck abelian categories (#22150) feat: rename variables to fit doc (#22143) feat(CategoryTheory): IsDetecting.isIso_iff_of_mono (#22135) feat(CategoryTheory): truncations of transfinite compositions (#22149) chore: simplify a proof (#22134) feat(CategoryTheory): monomorphisms are stable under coproducts in Grothendieck abelian categories (#22133) feat(Order): Set.Ici.isSuccLimit_coe (#22103) chore(Analysis/Convex/Normed): split into smaller files (#22015) feat(Algebra/Algebra/Lie): max nilpotent ideal <= radical (#22140) refactor(LinearIndependent): refactor to use LinearIndepOn (#21886) chore: rename some more `Foo.sum_elim` -> `sumElim` (#22130) chore: rename Injective.sum_elim and friends (#22129) chore: fix naming oversight from #22070 (#22128) chore: fix spelling mistakes (#22136) feat(RingTheory/Ideal/Quotient): define transtition map between ring or module quotient by powers of ideal (#21900) fix: initialize_simps_projections print warning when projection data already exists (#20339) chore: rename ContMDiff.sum_{elim,map} (#22131) feat(CategoryTheory): characterization of injective objects in terms of lifting properties (#22104) chore(Lean,Tactic): un-indent some doc-strings (#22118) feat(Algebra/MvPolynomial): add `comp` versions of rename lemmas (#21259) chose: add deprecation (#22124) feat(CategoryTheory/Abelian/GrothendieckCategory): computing colimits in Subobject (#22123) feat(CategoryTheory/Subobject): hasCardinalLT_of_mono (#22122) feat: add `DenseRange.piMap` (#22114) feat(Algebra/Algebra/Lie): define the maximal nilpotent ideal of Lie algebras (#22061) chore(Data/Finset): don't import algebra when defining `Finset.card` (#21866) feat: a function on a discrete space is smooth (#22113) feat: commutative group objects in additive categories (#21521) style(Geometry/Manifold): remove superfluous indentation in doc-strings (#22117) chore: rename PushNeg.lean to Push.lean (#22108) feat: add Is{Open,Closed}Embedding.sum_elim (#22070) feat(RingTheory/Perfectoid): define the untilt map and generalize pretilt (#21563) feature(Topology/Algebra/Module/WeakBilin): Linear map from F into the topological dual of E with the weak topology (#21078) feat(CategoryTheory/Abelian): the exact sequence attached to a pushout square (#22110) chore(ChartedSpace.lean): group constructions together (#22107) feat(CategoryTheory/MorphismProperty): more basic API (#22099) chore(Data/Fintype): split `Fintype/Card.lean` (#21840) chore(SetTheory/Cardinal/Cofinality): make `IsStrongLimit` into a structure (#21971) feat(Combinatorics/SimpleGraph): Add a theorem about cliques in induced subgraphs (#20705) ...
Add theorems giving a clique in the supergraph if there is a clique in a subgraph induced by a superset of the clique, as well as theorems about independent sets in induced subgraphs on G.
I needed these theorems for a proof about Ramsey numbers. Maybe it would be interesting to have in the
mathlib?