Skip to content

feat(Combinatorics/SimpleGraph): canonical projection and representative between labeled and unlabeled copies#32

Closed
FordUniver wants to merge 1 commit into
feat/ind-copy-countfrom
feat/copy-toUnlabeled-out
Closed

feat(Combinatorics/SimpleGraph): canonical projection and representative between labeled and unlabeled copies#32
FordUniver wants to merge 1 commit into
feat/ind-copy-countfrom
feat/copy-toUnlabeled-out

Conversation

@FordUniver

@FordUniver FordUniver commented May 19, 2026

Copy link
Copy Markdown
Owner

Introduces canonical projection and noncomputable representative functions between labeled and unlabeled copies (and their embedding analogues) in SimpleGraph, in the spirit of Quot.mk / Quot.out. The pair gives a name to a construction that previously appeared as inlined anonymous-constructor and destructuring patterns; two pre-existing proofs in Copy.lean and InducedCopy.lean are tightened by routing through the new functions instead.


Split out from a downstream PR introducing SimpleGraph.Aut and the orbit-stabiliser identities for copies and embeddings, where the projection and representative primitives recur in fiber decompositions and product equivalences. Sits on top of the Copy / InducedCopy stack and inherits the "large-import" tag from it.

Diff for the changes just in this PR over its predecessor: link

…opy.out` (and embedding mirror)

Add the standard `Quot.mk` / `Quot.out` style toolage for converting between labeled
and unlabeled copies / embeddings:

* `Copy.toUnlabeledCopy : Copy G H → G.UnlabeledCopy H` — canonical projection
  (computable).
* `UnlabeledCopy.out : G.UnlabeledCopy H → Copy G H` — non-canonical representative
  (noncomputable).
* `Copy.toUnlabeledCopy_val` and `UnlabeledCopy.toSubgraph_out` give the matching simp
  specs.
* `UnlabeledCopy.exists_toSubgraph_eq_val` packages the underlying existence statement.

Mirrored on the Embedding side: `Embedding.toUnlabeledEmbedding`,
`UnlabeledEmbedding.exists_toSubgraph_eq_val`, `UnlabeledEmbedding.out`, and their
respective spec lemmas.

Refactor the existing `unlabeledCopyCount_le_copyCount` and
`unlabeledEmbeddingCount_le_embeddingCount` proofs to use the new names — both shrink
from a 5- and 7-line `apply ... ; rintro ...; obtain ...; exact ...` chain to a
two-line `exact Nat.card_le_card_of_surjective ... fun S ↦ ⟨S.out, ...⟩`.
@FordUniver FordUniver changed the title feat(Combinatorics/SimpleGraph): Quot-style projection between labeled and unlabeled copies / embeddings feat(Combinatorics/SimpleGraph): canonical projection and representative between labeled and unlabeled copies May 19, 2026
@FordUniver FordUniver closed this May 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant