Skip to content

feat(Combinatorics/SimpleGraph/Acyclic): add delete leaf from tree gives tree#36850

Open
whocares-abt wants to merge 4 commits intoleanprover-community:masterfrom
whocares-abt:tree-leaf
Open

feat(Combinatorics/SimpleGraph/Acyclic): add delete leaf from tree gives tree#36850
whocares-abt wants to merge 4 commits intoleanprover-community:masterfrom
whocares-abt:tree-leaf

Conversation

@whocares-abt
Copy link
Copy Markdown
Contributor

Added theorem stating Deleting a leaf from a tree produces a tree.

stating that we get a tree if removing a leaf from tree
@github-actions github-actions bot added the new-contributor This PR was made by a contributor with at most 5 merged PRs. Welcome to the community! label Mar 19, 2026
@github-actions
Copy link
Copy Markdown

Welcome new contributor!

Thank you for contributing to Mathlib! If you haven't done so already, please review our contribution guidelines, as well as the style guide and naming conventions. In particular, we kindly remind contributors that we have guidelines regarding the use of AI when making pull requests.

We use a review queue to manage reviews. If your PR does not appear there, it is probably because it is not successfully building (i.e., it doesn't have a green checkmark), has the awaiting-author tag, or another reason described in the Lifecycle of a PR. The review dashboard has a dedicated webpage which shows whether your PR is on the review queue, and (if not), why.

If you haven't already done so, please come to https://leanprover.zulipchat.com/, introduce yourself, and mention your new PR.

Thank you again for joining our community.

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 19, 2026

PR summary cf61572730

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference

Declarations diff

+ IsTree.induce_compl_singleton_of_degree_eq_one

You can run this locally as follows
## summary with just the declaration names:
./scripts/pr_summary/declarations_diff.sh <optional_commit>

## more verbose report:
./scripts/pr_summary/declarations_diff.sh long <optional_commit>

The doc-module for scripts/pr_summary/declarations_diff.sh contains some details about this script.


No changes to technical debt.

You can run this locally as

./scripts/reporting/technical-debt-metrics.sh pr_summary
  • The relative value is the weighted sum of the differences with weight given by the inverse of the current value of the statistic.
  • The absolute value is the relative value divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).

@github-actions github-actions bot added the t-combinatorics Combinatorics label Mar 19, 2026
@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 19, 2026

✅ PR Title Formatted Correctly

The title of this PR has been updated to match our commit style conventions.
Thank you!

@whocares-abt whocares-abt changed the title feat(Combinatorics/SimpleGraph/Acyclic) : add delete leaf from tree gives tree feat(Combinatorics/SimpleGraph/Acyclic): add delete leaf from tree gives tree Mar 19, 2026

/-- Removing a leaf from a tree gives another tree. -/
lemma IsTree.tree_if_removed_leaf (v : V) [Fintype ↑(G.neighborSet v)]
(h1 : G.IsTree) (h2 : G.degree v = 1) : (G.induce {v}ᶜ).IsTree := by
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Use h\1 (subscript) instead of h1. Also spacing to match mathlib style.

Suggested change
(h1 : G.IsTree) (h2 : G.degree v = 1) : (G.induce {v}ᶜ).IsTree := by
(h₁ : G.IsTree) (h₂ : G.degree v = 1) : (G.induce {v}ᶜ).IsTree := by

Comment on lines +565 to +567
constructor
· exact (Connected.induce_compl_singleton_of_degree_eq_one h1.isConnected) h2
· exact IsAcyclic.induce h1.IsAcyclic {v}ᶜ
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I would just have this be a term-mode proof. Note that you can significantly shortern it by using dot notation when it's available. (I also changed the name isConnected -> connected IsAcylic -> isAcyclic since Yael just landed a change updating the names.)

Suggested change
constructor
· exact (Connected.induce_compl_singleton_of_degree_eq_one h1.isConnected) h2
· exact IsAcyclic.induce h1.IsAcyclic {v}ᶜ
⟨h₁.connected.induce_compl_singleton_of_degree_eq_one h₂, h₁.isAcyclic.induce {v}ᶜ⟩

exact ⟨v, hv.preconnected⟩

/-- Removing a leaf from a tree gives another tree. -/
lemma IsTree.tree_if_removed_leaf (v : V) [Fintype ↑(G.neighborSet v)]
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

This name doesn't match mathlib's naming convention https://leanprover-community.github.io/contribute/naming.html

I am not expert in this domain, but I would probably use IsTree.induce_compl_singleton_of_degree_eq_one to match the Connected version.

Copy link
Copy Markdown
Collaborator

@vlad902 vlad902 left a comment

Choose a reason for hiding this comment

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

Once you've addressed review comments, you should mark them resolved on GitHub so the next reviewer knows they are no longer relevant.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new-contributor This PR was made by a contributor with at most 5 merged PRs. Welcome to the community! t-combinatorics Combinatorics

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants