Add chordal separators and Dirac theorems - #349
Conversation
Proof profile (new / modified Lean files)
This build covers the changed modules and their dependency cones on top of the restored cache. The serial per-file sums below are useful for ranking slow files, not as a build budget. Total heartbeats: 22 maxHeartbeats units across 2 files (95 added LOC). Sum of Count-heartbeats wall-clock total: 4.39 s. Repeated import cost inside Heartbeat values come from Mathlib's LOC counts added lines in the profiled Lean files from this PR diff.
Aggregate phase totals
Slowest changed modules (from
|
| Changed module | Lake time |
|---|---|
LeanPool.Erdos81PaperIIContrib.Chordal |
3.00 s |
LeanPool.Erdos81PaperIIContrib |
1.30 s |
Per-file `lean --profile` output
LeanPool/Erdos81PaperIIContrib.lean
import took 1.07s
cumulative profiling times:
elaboration 0.261ms
import 1.07s
initialization 41.3ms
interpretation 126ms
linting 0.415ms
module linting 0.00184ms
overlappingInstancesLinter 0.855ms
parsing 0.0506ms
tacticAnalysis 1.47ms
real 1.92
user 1.05
sys 0.89
LeanPool/Erdos81PaperIIContrib/Chordal.lean
import took 1.06s
cumulative profiling times:
attribute application 0.0515ms
congr simp thm 0.311ms
elaboration 19.1ms
fix level params 0.518ms
import 1.06s
initialization 30.2ms
instantiate metavars 0.732ms
interpretation 155ms
let-to-have transformation 0.0381ms
linting 5.44ms
module linting 0.00163ms
overlappingInstancesLinter 2.57ms
parsing 3.81ms
process pre-definitions 2.32ms
share common exprs 1.77ms
simp 5.31ms
tactic execution 20.1ms
tacticAnalysis 10.2ms
type checking 5.2ms
typeclass inference 5.6ms
real 1.96
user 1.13
sys 0.90
Advisory only — never blocks merge. Full log uploaded as the proof-profile artifact.
🤖 LLM review (
|
| Rubric | Verdict | Bottom line |
|---|---|---|
| Faithfulness | ✅ pass |
Each headline matches the corresponding Lean theorem, including its finiteness, nonemptiness, connectedness, and non-completeness conditions. |
| Novelty | ✅ pass |
No Mathlib declaration or pooled project in the supplied prior-art search already proves any of the five headline chordal-graph results. |
| Significance | ✅ pass |
The PR develops a self-contained chordal-graph theory culminating in named Dirac theorems and the clique theorem for minimal separators. |
| Sources | ✅ pass |
The frozen GitHub artifact is not inspectable from the diff, but the cited Dirac variants are explicitly labelled and no source inconsistency is demonstrated. |
| Code quality (advisory) | ✅ pass |
The long argument is factored into narrowly scoped private helpers with visible consumers, while the public API keeps finiteness and decidability assumptions localized. |
| Aspect | Value |
|---|---|
| Proves the claim | ✅ proves_it |
| Assumed, not proved | Chordality is assumed throughout; IsChordal.comap also takes an injective map, minimalSeparator_isClique takes minimal-separator evidence, and the existence results take the finiteness, nonemptiness, connectedness, and non-completeness hypotheses stated in the card. |
| Matches cited source | 🟡 unverifiable |
| Fit | ✅ good_fit |
| Level | graduate |
| Branch | graph theory |
| Mode | theory_building |
| Code quality | 4 / 5 |
Statement check: The declarations prove chordality under comap and induce, cliquehood of a finite minimal separator, existence of a simplicial vertex in a nonempty finite chordal graph, and two distinct non-adjacent simplicial vertices in the connected non-complete finite case.
The contribution formalizes induced-subgraph heredity, clique minimal separators, existence of simplicial vertices, and the connected non-complete two-simplicial-vertex conclusion for finite chordal graphs.
Tokens: 116,348 in / 7,312 out across 5 rubric calls · Tier: flex · Effort: xhigh · Cost: $0.4006
Each rubric is an independent review against .github/review-rubrics/ on top of .github/REVIEW_RULES.md. Disagree? Reply on the PR; rules can be updated in a PR of their own.
Vilin97
left a comment
There was a problem hiding this comment.
I reviewed head 5bec2cc4eb0283ff5542cf477933b71dca721291. The definitions and heredity proofs appear correct, and the Paper II manuscript does list induced-subgraph heredity as a standard chordal-graph fact. The blocker is standalone significance, not correctness.
This PR contains only about 70 implementation lines / 95 profiled Lean LOC. Its substantive result is the elementary pullback of chordality along an induced embedding; IsChordal.induce is then a one-line specialization. That falls below the repository's 250-LOC candidate baseline and the significance rubric's graduate/research-level threshold. The PR body says the larger Dirac/minimal-separator development is forthcoming. Please bundle this layer with that work, where heredity becomes infrastructure supporting a significant theorem.
Chordal.lean:40–49 also introduces IsSimplicial, Separates, and IsMinimalSeparator, but none is consumed here. Merging now would freeze an unexercised public API before the separator proofs validate its generality.
When revising the API, use Mathlib's bundled graph embedding (f : H ↪ɢ G) or state the actual comap theorem (G.comap f).IsChordal. The current Function.Embedding plus a separate adjacency equivalence is exactly the data already packaged by SimpleGraph.Embedding, while a theorem named comap should preferably mention comap.
All checks are green, and performance is excellent—22 max-heartbeat units and 0.44s import-excluded time—but that confirms this is a tiny preliminary layer. I would not merge it as a standalone Lean Pool project; I would welcome it folded into the promised chordal-graph development.
# Conflicts: # LeanPool.lean # LeanPool/projects.yml
|
Implemented the requested direction in commit 58695bd: the PR now includes the minimal-separator clique theorem and both Dirac simplicial-vertex theorems (854 changed lines), and the comap API now states the actual G.comap f theorem using Mathlib's graph embedding. Source metadata points to the exact Paper II v1.2 frozen artifact. Local build, module linter, style linter, generated-root check, and explicit axiom audit all pass. I have kept the PR in draft while CI/review evaluates the expanded development; generated-proof style warnings are disclosed rather than suppressed. |
|
Fixed the final CI issue in commit 9fa6394 by regenerating the Paper II project card from projects.yml. The canonical card now includes the induced-subgraphs tag and the generated Main declarations formatting. The targeted card-current check passes, lake exe mk_all --check reports no update necessary, and the diff is limited to LeanPool/Erdos81PaperIIContrib.lean; no Lean definitions or proofs changed. This push reruns the authoritative full quality gate. |
|
Resolved the remaining long-line CI warning in commit afef4c5. The generated project card now has a single headline declaration, SimpleGraph.IsChordal.exists_two_nonadj_isSimplicial; all other public results remain unchanged and continue to be documented under main_results. Targeted validation passes: 1082-job build with no warnings, runLinter, lint-style, project-card current check, and mk_all --check. No proof code changed. |
# Conflicts: # LeanPool/projects.yml
# Conflicts: # LeanPool.lean # LeanPool/projects.yml
|
@Vilin97 Ready for maintainer re-review at exact head 4b2042f. The original significance/API concerns are now addressed by the minimal-separator clique theorem, both Dirac simplicial-vertex theorems, and the actual SimpleGraph comap API. The Aristotle cleanup preserves all public statements and axiom footprints while removing the generated-proof warnings. The project card now uses the strongest Dirac theorem as its headline, with the remaining public results retained in main_results. Exact-head CI is fully green, including Build pool, Build project, linters, repository-quality checks, separation guard, and documentation. |
Greptile SummaryThe PR adds a reusable chordal-graph formalization and integrates it into Lean Pool.
|
| Filename | Overview |
|---|---|
| LeanPool/Erdos81PaperIIContrib/Chordal.lean | Adds the chordal-graph definitions and separator and Dirac theorems; the repaired separator documentation now matches the theorem’s finite, fixed-endpoint scope. |
| LeanPool/Erdos81PaperIIContrib.lean | Adds the project entry module with an overview that accurately qualifies the separator result. |
| LeanPool/projects.yml | Registers the contribution and accurately describes the separator theorem as applying to finite minimal separators of fixed vertex pairs. |
| LeanPool.lean | Exposes the new Paper II contribution through the repository root imports. |
Reviews (27): Last reviewed commit: "Merge remote-tracking branch 'origin/mai..." | Re-trigger Greptile
|
@Vilin97 The branch is now synchronized with current |
# Conflicts: # LeanPool/projects.yml
# Conflicts: # LeanPool/projects.yml
# Conflicts: # LeanPool/projects.yml
|
@Vilin97 The branch is updated to current
All review threads are resolved, and the exact-head CI is rerunning after the base update. GitHub still carries the old |
# Conflicts: # LeanPool/projects.yml
|
Want your agent to iterate on Greptile's feedback? Try greploops. |
Vilin97
left a comment
There was a problem hiding this comment.
Reviewed exact head 822738f3089d92c5e65a6bfb8c88c992e4699167. The earlier review on 5bec2cc4 is stale: this revision now has 957 lines of substantive chordal-graph development, consumes the separator/simplicial API, uses the actual comap construction, builds and lints locally, and has green exact-head CI. Those original blockers are resolved.
One source/scope blocker remains. The project summary and mathematical overview say the development formalizes “both parts of Dirac’s theorem,” but SimpleGraph.IsChordal.exists_two_nonadj_isSimplicial assumes hconn : G.Connected. Dirac’s standard second theorem is for every finite non-complete chordal graph, without connectedness. The cited frozen artifact confirms only the same connected special case, so it does not support the broader “both parts” wording.
Please either prove the full non-complete theorem, or consistently label this result in the title/card/module prose as the connected special case and avoid claiming that both parts of Dirac’s theorem are formalized. The exact theorem-level informal statement is already accurate; the blocker is the broader attribution and project summary.
|
Supplementary provenance finding for the current head |
# Conflicts: # LeanPool/projects.yml
|
@Vilin97 Addressed both remaining blockers at exact head Dirac scope: the project title is now “Chordal graphs: minimal separators and simplicial vertices.” The catalog and generated module overview now say precisely that the development proves Dirac's simplicial-vertex theorem and the connected non-complete case of the two-vertex conclusion. The public theorem docstring has likewise been changed from “Dirac's theorem, second part” to “Connected case of Dirac's two-vertex conclusion.” The exact theorem-level informal statement remains unchanged and accurate. No declaration or proof body changed. License provenance: the source card now points to the immutable source at commit
Local validation on the updated branch:
Please re-review this exact head when convenient. |
Maintainer decision requiredReviewed exact head The remaining boundary is maintainability. The exact-head quality review rates the code 2/5 because the 957-line module carries parallel Set-based, Finset-based, and induced-set reachability/separator layers plus conversion glue; it also retains three unused tactic imports. The mathematics is a significant, reusable chordal-graph development, and the duplicate machinery is private, so this is not an established faithfulness or correctness failure. A maintainer must decide whether to accept the imported proof structure at Lean Pool's bar or require consolidation around one reachability/separator representation before merge. Quality evidence: #349 (comment) |
# Conflicts: # LeanPool/projects.yml
|
Removed the remaining tactic-import residue at exact head Local validation:
I have intentionally not changed the private Set/Finset/induced-set proof architecture without a maintainer request, since that would be a substantially higher-risk proof refactor rather than a cleanup. |
# Conflicts: # LeanPool/projects.yml
# Conflicts: # LeanPool/projects.yml
# Conflicts: # LeanPool/projects.yml
# Conflicts: # LeanPool/projects.yml
# Conflicts: # LeanPool/projects.yml
Summary
SimpleGraph.comapand derive induced-subgraph heredity[Finite V], constructing implementation-level decidability only inside proofsThis is a reusable formalization byproduct accompanying Paper II, Complete-Split Extremizers for a Fractional Triangle-Cover Functional on Chordal Graphs. The source metadata now links to the exact frozen
Contrib/Submission/Chordal.leanartifact in Paper II v1.2.This revision responds to the significance/API review by folding the former heredity layer into the full minimal-separator/Dirac development. In particular,
IsChordal.comapnow literally concludes(G.comap f).IsChordal; it no longer duplicatesSimpleGraph.Embeddingdata as aFunction.Embeddingplus a separate adjacency equivalence.Local checks
lake build LeanPool.Erdos81PaperIIContrib— completed successfully (1082 jobs)lake exe runLinter LeanPool.Erdos81PaperIIContrib— passlake exe lint-style LeanPool.Erdos81PaperIIContrib— passlake exe mk_all --check— passIsChordal.comap,IsChordal.induce:[propext, Quot.sound][propext, Classical.choice, Quot.sound]The expanded source is kernel-clean and the project remains a draft while CI and review assess the larger port. The build currently reports advisory proof-style warnings inherited from the verified Aristotle-generated development; no linter has been disabled or suppressed.